REDROOM
PHP 8.5.2
Path:
Logout
Edit File
Size: 418.09 KB
Close
//usr/share/mysql/korean/errmsg.sys
Text
Base64
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Q54AAM+eAABMnwAA0Z8AAHegAAAVoQAAc6EAANmhAABBogAAxqIAANeiAAA0owAAbqMAAKmjAADTowAAD6QAAEakAABopAAAx6QAABylAABlpQAAoKUAANOlAAAOpgAAL6YAAGamAACxpgAAI6cAAFynAACepwAAwKcAAPenAAA4qAAAfqgAAMqoAAASqQAATqkAAOipAACKqgAADasAAHmrAADSqwAADawAAFCsAACFrAAAuawAAM+sAADrrAAAvq0AAKWuAABzrwAARrAAABuxAADUsQAAObIAAJqyAACqswAAqrQAAAC1AAAqtQAAZrUAAMm1AAABtgAARLYAAKy2AADotgAAIrcAAFq3AACWtwAAw7cAAOW3AAATuAAAmbgAAPq4AABAuQAAfbkAAJu5AADmuQAANLoAAM66AAANuwAAOrsAAGu7AACMuwAAy7sAAAu8AABevAAAlbwAABm9AADWvQAA2b0AABG+AAAqvgAAcb4AAJK/AAAOwAAAe8AAAN3AAAAawQAAZMEAALPBAAAiwgAAbsIAAKrCAAATwwAAYMMAAIvDAACowwAAz8MAAEjEAADIxAAAM8UAAKLFAADZxQAAQsYAAJLGAADfxgAAOccAAG/HAABSyAAAkMgAALDJAACeygAAfMsAAAHMAAAjzAAAWMwAAJXMAABazQAAms0AANHNAAAQzgAATs4AAMrOAADhzgAA+M4AAJzPAAAg0AAAg9AAANrQAAAK0QAAXdEAAHLRAACX0QAAs9EAANDRAAD00QAAEdIAAEPSAABW0gAAmdIAAKvSAADU0gAAE9MAAGzTAADS0wAAO9QAAHrUAACj1AAADNUAADfVAABr1QAAttUAABTWAABv1gAA7dYAADjXAACW1wAA/dcAAB3YAAA32AAAGdkAAFjZAACb2QAA5tkAAE/aAACD2gAAudoAAFTbAACE2wAArdsAAMzbAAAM3AAAP9wAAGHcAACS3AAA59wAADPdAABj3QAAnN0AAL3dAADl3QAAv94AAOPeAABN3wAAj98AAPffAAAZ4AAApuAAAN/gAAAT4QAAdeEAAK/hAAD54QAAZeIAALTiAAAA4wAAXuMAAHvjAAAZ5AAAteQAABjlAAA25QAAl+UAAOvlAAAh5gAAd+YAAKHmAABG5wAASukAANHpAAA76gAAUOoAAJTrAABW7AAA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tBcCAJQYAgDTGAIAFRkCABgZAgA7GQIAaRkCANcZAgAVGgIARxoCAHYaAgCfGgIACBsCAEEbAgB4GwIAoRsCANcbAgAmHAIAZBwCAG8cAgCRHAIAuBwCAN8cAgAAHQIAKx0CAFQdAgB2HQIAsh0CAOEdAgAHHgIAah4CACAfAgBxHwIAhx8CALMfAgDNHwIA/x8CABUgAgBVIAIAqSACAOIgAgAgIQIAYCECAMUhAgAZIgIAWCICAL8iAgDiIgIAHCMCAEAjAgB3IwIAqCMCAOMjAgAXJAIAOSQCAFskAgCcJAIA3SQCAAIlAgAuJQIAYCUCAIolAgC2JQIA0CUCAOolAgALJgIASSYCAGsmAgCWJgIAwSYCAOYmAgA6JwIAfCcCAI4nAgC1JwIA6ycCABcoAgBNKAIAkygCAP0oAgAbKQIAQikCANcpAgD7KQIAJyoCAI4qAgDnKgIAFSsCAEIrAgBqKwIAkisCAMcrAgDxKwIAOiwCAHYsAgC2LAIA0iwCAPcsAgAMLQIAPy0CAHItAgDRLQIA9S0CABouAgBbLgIAgy4CALcuAgD9LgIAHy8CAC0vAgA7LwIAci8CAKIvAgDHLwIA4y8CAAcwAgBEMAIASzACAG4wAgCaMAIA8jACAPkwAgAAMQIAXDECAOMxAgD4MQIAKzICAJwyAgAVMwIAgzMCAMYzAgAMNAIAPjQCAFw0AgBfNAIAgzQCAOo0AgAfNQIAXzUCAJ01AgDkNQIASzYCAH42AgCyNgIAITcCAGQ3AgCfNwIA1DcCAAQ4AgA0OAIAeTgCAMI4AgDtOAIAdDkCAJQ5AgC3OQIA4DkCAP45AgA5OgIAczoCAA47AgDEOwIAejwCAFI9AgBUPgIAvj8CAEtAAgBwQAIAF0ECAFtBAgCYQQIACEICAFpCAgCOQgIAzEICAA9DAgBGQwIAyUMCAAtEAgAvRAIAVEQCAI9EAgAIRQIAyUUCADlGAgDuRgIAOkcCALZHAgAGSAIAd0gCALFIAgDnSAIAakkCAKhJAgBFSgIAj0oCAMdKAgDuSgIAN0sCAEZLAgB6SwIArksCAL1LAgDPSwIAHkwCAEdMAgBxTAIAnUwCAOJMAgA1TQIAgk0CAMxNAgDmTQIAek4CAL5OAgDmTgIAK08CAIhPAgDKTwIA8U8CAChQAgBGUAIAY1ACALVQAgDdUAIA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EWcEABRnBAAXZwQAGmcEAB1nBAAgZwQAI2cEACZnBAApZwQALGcEAC9nBAAyZwQANWcEADhnBAA7ZwQAPmcEAEFnBABEZwQAR2cEAEpnBABNZwQAUGcEAFNnBABWZwQAWWcEAFxnBABfZwQAYmcEAGVnBABoZwQAa2cEAG5nBABxZwQAdGcEAHdnBAB6ZwQAfWcEAIBnBACDZwQAhmcEAIlnBACMZwQAj2cEAJJnBACVZwQAmGcEAKVnBACoZwQAq2cEAK5nBACxZwQAtGcEALdnBAC6ZwQAvWcEAMBnBADDZwQAxmcEAMlnBADMZwQAz2cEANJnBADVZwQA2GcEANtnBADeZwQA4WcEAORnBADnZwQA6mcEAO1nBADwZwQA82cEAPZnBAD5ZwQA/GcEAP9nBAACaAQABWgEAAhoBAALaAQADmgEABFoBAAUaAQAF2gEABpoBAAdaAQAIGgEACNoBAAmaAQAKWgEACxoBAAvaAQAMmgEADVoBAA4aAQAO2gEAD5oBABBaAQARGgEAEdoBABKaAQATWgEAFBoBABTaAQAVmgEAFloBABcaAQAX2gEAGJoBABlaAQAaGgEAGtoBACKaAQAjWgEAJBoBACTaAQAlmgEAJloBACcaAQAn2gEAKJoBAClaAQAqGgEAKtoBACuaAQAsWgEALRoBAC3aAQAumgEAL1oBADAaAQAw2gEAMZoBADJaAQAzGgEAM9oBADSaAQA1WgEANhoBADbaAQA3mgEAOFoBADkaAQA52gEAGtpBADWaQQA/mkEAF1qBACtagQA7WoEAB1rBABqawQAqGsEANhrBAAJbAQAOWwEAIBsBACfbAQAuGwEAMlsBAD6bAQAKW0EAG5tBACtbQQA7m0EAAluBAAubgQAT24EAJJuBACubgQAzm4EAO9uBAAgbwQAS28EAG9vBACwbwQA7W8EABhwBAB1cAQAk3AEAK5wBADOcAQA+HAEAB9xBACCcQQA4nEEAAlyBABFcgQAZHIEANByBAAGcwQASnMEAKpzBAAmdAQAa3QEAIZ0BAC2dAQA2XQEAPl0BAAZdQQAYXUEAJp1BAAZdgQASHYEAHZ2BACTdgQAtHYEAFJ3BACNdwQA1HcEANd3BADadwQA3XcEAOB3BADjdwQA5ncEAOl3BADsdwQA73cEAPJ3BACeeAQAvHgEAL94BABmeQQAaXkEAI55BAC5eQQA2nkEACx6BABXegQAf3oEAPR6BACmfAQAK30EAEh9BACNfQQA430EAJt+BACjfwQAJYAEAECABABvgAQAloAEAJmABACcgAQA94AEAB2CBAB9ggQAs4MEANiDBAD2gwQAHIQEAF2EBACKhAQApYQEAKiEBACrhAQAroQEALGEBAC0hAQAt4QEALqEBAC9hAQAwIQEAAmFBAAzhQQANoUEAFSFBABXhQQAjIUEAI+FBAC4hQQAu4UEAOWFBADohQQA64UEAO6FBADxhQQA9IUEAPeFBAD6hQQA/YUEAKOGBACmhgQAqYYEAKyGBACvhgQAsoYEAOKGBADlhgQA6IYEAOuGBADuhgQA8YYEAPSGBAD3hgQA+oYEAP2GBAAAhwQAA4cEAAaHBAAJhwQADIcEAA+HBAAShwQAFYcEABiHBAAbhwQAHocEAJuHBACehwQAuIcEANuHBADehwQApogEAKmIBACsiAQAr4gEALKIBAC1iAQAuIgEALuIBAC+iAQAwYgEAMSIBADHiAQAyogEAM2IBADQiAQA04gEANaIBADZiAQAO4kEAD6JBAABigQAj4oEAJKKBACVigQAmIoEAJuKBADXigQAAYsEADCLBABQiwQAhosEAJuLBACziwQA+IsEACOMBABfjAQAmYwEADWNBAA4jQQAO40EAD6NBABBjQQARI0EAEeNBABKjQQATY0EAFCNBABTjQQAdY0EAMWNBADIjQQA1I4EANeOBADajgQACY8EAKePBABDkAQAJpEEAGSRBACEkgQABpMEAIaTBABwlAQAwJQEANWUBAD9lAQAIJYEAJqWBAAdlwQAQpcEAHuXBACklwQAZpgEALKYBAD9mAQAEZkEACGZBABImQQAfJkEAJmZBAC0mQQA0JkEAB+aBABrmgQAn5oEAMqaBADYmgQA+ZoEAKCbBAATnAQAVJwEAHGcBACsnAQAy5wEAPScBAAjnQQAUp0EAImdBADCnQQA6p0EAECeBADOngQAJp8EACefBAB0nwQA0Z8EABmgBAB3oAQA26AEADuhBABLoQQATqEEAHqhBACfoQQAwKEEAN2hBAABogQAUaIEAGeiBACLogQAU6MEAJejBAAGpAQAMKQEAEakBAB9pAQAoqQEANCkBAARpQQARaUEAKilBADspQQAJ6YEAFamBADPpgQA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LSAlcykAc3lzdGVtIO2FjOydtOu4lOyXkOyEnCDroIjsvZTrk5zrpbwg7J297J2EIOyImCDsl4bsirXri4jri6QuACclLS4yMDBzJ+ydmCDsg4Htg5zrpbwg7Ja77KeAIOuqu+2WiOyKteuLiOuLpC4gKOyXkOufrOuyiO2YuDogJWQgLSAlcykA7IiY7ZaJIOuUlOugie2GoOumrOulvCDssL7sp4Ag66q77ZaI7Iq164uI64ukLiAo7JeQ65+s67KI7Zi4OiAlZCAtICVzKQDtmZTsnbzsnYQg7J6g6re47KeAKGxvY2spIOuqu+2WiOyKteuLiOuLpC4gKOyXkOufrOuyiO2YuDogJWQgLSAlcykA7ZmU7J287J2EIOyXtOyngCDrqrvtlojsirXri4jri6QuOiAnJS0uMjAwcycgKOyXkOufrOuyiO2YuDogJWQgLSAlcykA7ZmU7J287J2EIOywvuyngCDrqrvtlojsirXri4jri6QuOiAnJS0uMjAwcycgKOyXkOufrOuyiO2YuDogJWQgLSAlcykAJyUtLjE5MnMn65SU66CJ7Yag66as66W8IOydveyngCDrqrvtlojsirXri4jri6QuICjsl5Drn6zrsojtmLg6ICVkIC0gJXMpACclLS4xOTJzJ+uUlOugie2GoOumrOuhnCDsnbTrj5ntlaAg7IiYIOyXhuyXiOyKteuLiOuLpC4gKOyXkOufrOuyiO2YuDogJWQgLSAlcykA7YWM7J2067iUICclLS4xOTJzJ+yXkOyEnCDrp4jsp4Drp4nsnLzroZwg7J297J2AIO2bhCBSZWNvcmTqsIAg67OA6rK965CY7JeI7Iq164uI64ukLgBEaXNrIGZ1bGwgKCVzKS4g64uk66W4IOyCrOuejOydtCDsp4DsmrjrlYzquYzsp4Ag6riw64uk66a964uI64ukLi4uICjsl5Drn6zrsojtmLg6ICVkIC0gJXMpAOq4sOuhne2VoCDsiJgg7JeG7J2N64uI64ukLiwg7YWM7J2067iUICclLS4xOTJzJ+yXkOyEnCDspJHrs7Ug7YKkACclLS4xOTJzJ+uLq+uKlCDspJEg7JeQ65+sICjsl5Drn6zrsojtmLg6ICVkIC0gJXMpACclLS4yMDBzJ+2ZlOydvCDsnb3quLAg7JeQ65+sICjsl5Drn6zr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7ZWoAOygleydmOuQnCDtgqTqsIAg64SI66y0IOq5geuLiOuLpC4g7LWc64yAIO2CpOydmCDquLjsnbTripQgJWTsnoXri4jri6QuAEtleSDsubzrn7wgJyUtLjE5MnMn64qUIO2FjOydtOu4lOyXkCDsobTsnqztlZjsp4Ag7JWK7Iq164uI64ukLgBCTE9CIOy5vOufvCAnJS0uMTkycyfripQg7YKkIOygleydmOyXkOyEnCDsgqzsmqnrkKAg7IiYIOyXhuyKteuLiOuLpC4A7Lm865+8ICclLS4xOTJzJ+ydmCDsubzrn7wg6ri47J206rCAIOuEiOustCDquYHri4jri6QgKOy1nOuMgCA9ICVsdSkuIOuMgOyLoOyXkCBCTE9C66W8IOyCrOyaqe2VmOyEuOyalC4A67aA7KCV7ZmV7ZWcIO2FjOydtOu4lCDsoJXsnZg7IO2FjOydtOu4lOydgCDtlZjrgpjsnZggYXV0byDsubzrn7zsnbQg7KG07J6s7ZWY6rOgIO2CpOuhnCDsoJXsnZjrkJjslrTsoLjslbwg7ZWp64uI64ukLgAlczog7Jew6rKwIOykgOu5hOykkeyeheuLiOuLpApWZXJzaW9uOiAnJXMnICBzb2NrZXQ6ICclcycgIHBvcnQ6ICVkACVzOiDsoJXsg4HsoIHsnbggc2h1dGRvd24KACVzOiAlZCDsi6DtmLjqsIAg65Ok7Ja07JmU7J2MLiDspJHsp4AhCgAlczogU2h1dGRvd24g7J20IOyZhOujjOuQqCEKACVzOiB0aHJlYWQgJWxk7J2YIOqwleygnCDsooXro4wgdXNlcjogJyUtLjQ4cycKAElQIOyGjOy8k+ydhCDrp4zrk6Tsp4Ag66q77ZaI7Iq164uI64ukLgDthYzsnbTruJQgJyUtLjE5MnMn64qUIOyduOuNseyKpOulvCDrp4zrk6Tsp4Ag7JWK7JWY7Iq164uI64ukLiBhbHRlciDthYzsnbTruJTrqoXroLnsnYQg7J207Jqp7ZWY7JesIO2FjOydtOu4lOydhCDsiJjsoJXtlZjshLjsmpQuLi4A7ZWE65OcIOq1rOu2hOyekCDsnbjsiJjrk6TsnbQg7JmE7KCE7ZWY7KeAIOyViuyKteuLiOuLpC4g66mU64m07Ja87J2EIOywvuyVhCDrs7TshLjsmpQuAEJMT0LroZzripQg6rOg7KCV6ri47J207J2YIGxvd2xlbmd0aOulvCDsgqzsmqntlaAg7IiYIOyXhuyKteuLiOuLpC4gJ2ZpZWxkcyB0ZXJtaW5hdGVkIGJ5J+ulvCDsgqzsmqntlZjshLjsmpQuACclLS4xMjhzJyDtmZTsnbzripQg642w7J207YOA67Kg7J207IqkIOuUlOugie2GoOumrOyXkCDsobTsnqztlZjqsbDrgpgg66qo65GQ7JeQ6rKMIOydveq4sCDqsIDriqXtlZjsl6zslbwg7ZWp64uI64ukLgAnJS0uMjAwcycg7ZmU7J287J2AIOydtOuvuCDsobTsnqztlanri4jri6QuAOugiOy9lOuTnDogJWxk6rCcICDsgq3soJw6ICVsZOqwnCAg7Iqk7YK1OiAlbGTqsJwgIOqyveqzoDogJWxk6rCcAOugiOy9lOuTnDogJWxk6rCcICDspJHrs7U6ICVsZOqwnADrtoDsoJXtmZXtlZwg7ISc67KEIO2MjO2KuCDtgqQuIOyCrOyaqeuQnCDtgqQg7YyM7Yq46rCAIOyKpO2KuOungeydtCDslYTri4jqsbDrgpgg7YKkIO2MjO2KuOydmCDquLjsnbTqsIAg64SI66y0IOq5geuLiOuLpC4AQUxURVIgVEFCTEUg66qF66C57Jy866Gc64qUIOuqqOuToCDsubzrn7zsnYQg7KeA7Jq4IOyImCDsl4bsirXri4jri6QuIERST1AgVEFCTEUg66qF66C57J2EIOydtOyaqe2VmOyEuOyalC4AJyUtLjE5MnMn66W8IERST1DtlaAg7IiYIOyXhuyKteuLiOuLpC4g7Lm865+87J2064KYIO2CpOqwgCDsobTsnqztlZjripTsp4Ag7LGE7YGs7ZWY7IS47JqULgDroIjsvZTrk5w6ICVsZOqwnCAg7KSR67O1OiAlbGTqsJwgIOqyveqzoDogJWxk6rCcAFlvdSBjYW4ndCBzcGVjaWZ5IHRhcmdldCB0YWJsZSAnJS0uMTkycycgZm9yIHVwZGF0ZSBpbiBGUk9NIGNsYXVzZQDslYzsiJgg7JeG64qUIOyTsOugiOuTnCBpZDogJWx1AOyTsOugiOuTnChUaHJlYWQpICVsdeydmCDshozsnKDsnpDqsIAg7JWE64uZ64uI64ukLgDslrTrlqQg7YWM7J2067iU64+EIOyCrOyaqeuQmOyngCDslYrslZjsirXri4jri6QuAOy5vOufvCAlLS4xOTJz7JmAIFNFVOyXkOyEnCDsiqTtirjrp4HsnbQg64SI66y0IOunjuyKteuLiOuLpC4AVW5pcXVlIOuhnOq3uO2ZlOydvCAnJS0uMjAwcyfrpbwg66eM65Ok7IiYIOyXhuyKteuLiOuLpC4oMS05OTkpCgDthYzsnbTruJQgJyUtLjE5MnMn64qUIFJFQUQg65297J20IOyeoOqyqOyeiOyWtOyEnCDqsLHsi6DtlaAg7IiYIOyXhuyKteuLiOuLpC4A7YWM7J2067iUICclLS4xOTJzJ+uKlCBMT0NLIFRBQkxFUyDrqoXroLnsnLzroZwg7J6g6riw7KeAIOyViuyVmOyKteuLiOuLpC4AQkxPQiDsubzrn7wgJyUtLjE5MnMnIOuKlCDrlJTtj7Ttirgg6rCS7J2EIOqwgOyniCDsiJgg7JeG7Iq164uI64ukLgAnJS0uMTAwcycg642w7J207YOA67Kg7J207Iqk7J2YIOydtOumhOydtCDrtoDsoJXtmZXtlanri4jri6QuACclLS4xMDBzJyDthYzsnbTruJQg7J2066aE7J20IOu2gOygle2Zle2VqeuLiOuLpC4AU0VMRUNUIOuqheugueyXkOyEnCDrhIjrrLQg66eO7J2AIOugiOy9lOuTnOulvCDssL7quLAg65WM66y47JeQIOunjuydgCDsi5zqsITsnbQg7IaM7JqU65Cp64uI64ukLiDrlLDrnbzshJwgV0hFUkUg66y47J2EIOygkOqygO2VmOqxsOuCmCwg66eM7JW9IFNFTEVDVOqwgCBva+uQmOuptCAgU0VUIFNRTF9CSUdfU0VMRUNUUz0xIOyYteyFmOydhCDsgqzsmqntlZjshLjsmpQuAOyVjOyImCDsl4bripQg7JeQ65+s7J6F64uI64ukLgDslYzsiJgg7JeG64qUIOyImO2WieusuCA6ICclLS4xOTJzJwAnJS0uMTkycycg7IiY7ZaJ66y47JeQIOuMgO2VnCDrtoDsoJXtmZXtlZwg7YyM652866mU7YSwACclLS4xOTJzJyDsiJjtlonrrLjsl5Ag64yA7ZWcIOu2gOygle2Zle2VnCDtjIzrnbzrqZTthLAA7JWM7IiYIOyXhuuKlCDthYzsnbTruJQgJyUtLjE5MnMnICjrjbDsnbTtg4DrsqDsnbTsiqQgJS0uMzJzKQDsubzrn7wgJyUtLjE5MnMn64qUIOuRkOuyiCDsoJXsnZjrkJjslrQg7J6I7J2N64uI64ukLgDsnpjrqrvrkJwg6re466O5IO2VqOyImOulvCDsgqzsmqntlZjsmIDsirXri4jri6QuAO2FjOydtOu4lCAnJS0uMTkycyfripQg7ZmV7J6l66qF66C57J2EIOydtOyaqe2VmOyngOunjCDtmITsnqzsnZggTXlTUUwg67KE7KC87JeQ7ISc64qUIOyhtOyerO2VmOyngCDslYrsirXri4jri6QuAO2VmOuCmOydmCDthYzsnbTruJTsl5DshJzripQg7KCB7Ja064+EIO2VmOuCmOydmCDsubzrn7zsnbQg7KG07J6s7ZWY7Jes7JW8IO2VqeuLiOuLpC4A7YWM7J2067iUICclLS4xOTJzJ+qwgCBmdWxs64Ks7Iq164uI64ukLiAA7JWM7IiY7JeG64qUIOyWuOyWtCBTZXQ6ICclLS42NHMnAOuEiOustCDrp47snYAg7YWM7J2067iU7J20IEpvaW7rkJjsl4jsirXri4jri6QuIE15U1FM7JeQ7ISc64qUIEpPSU7si5wgJWTqsJzsnZgg7YWM7J2067iU66eMIOyCrOyaqe2VoCDsiJgg7J6I7Iq164uI64ukLgDsubzrn7zsnbQg64SI66y0IOunjuyKteuLiOuLpC4A64SI66y0IO2BsCByb3cg7IKs7J207KaI7J6F64uI64ukLiBCTE9C66W8IOqzhOyCsO2VmOyngCDslYrqs6Ag7LWc64yAIHJvdyDsgqzsnbTspojripQgJWxk7J6F64uI64ukLiDslrzrp4jqsITsnZgg7ZWE65Oc65Ok7J2EIEJMT0LroZwg67CU6r647IWU7JW8IOqyoOq1sOyalC4uAOyTsOugiOuTnCDsiqTtg53snbQg64SY7LOk7Iq164uI64ukLiAg7IKs7JqpOiAlbGTqsJwg7Iqk7YOdOiAlbGTqsJwuICDrp4zslb0g7ZWE7JqU7IucIOuNlO2BsCDsiqTtg53snYQg7JuQ7ZWg65WM7JeQ64qUICdteXNxbGQgLS10aHJlYWRfc3RhY2s9Iycg66W8IOygleydmO2VmOyEuOyalABDcm9zcyBkZXBlbmRlbmN5IGZvdW5kIGluIE9VVEVSIEpPSU47IGV4YW1pbmUgeW91ciBPTiBjb25kaXRpb25zAFRhYmxlIGhhbmRsZXIgZG9lc24ndCBzdXBwb3J0IE5VTEwgaW4gZ2l2ZW4gaW5kZXguIFBsZWFzZSBjaGFuZ2UgY29sdW1uICclLS4xOTJzJyB0byBiZSBOT1QgTlVMTCBvciB1c2UgYW5vdGhlciBoYW5kbGVyACclLS4xOTJzJyDtlajsiJjrpbwg66Gc65Oc7ZWY7KeAIOuqu+2WiOyKteuLiOuLpC4AJyUtLjE5MnMnIO2VqOyImOulvCDstIjquLDtmZQg7ZWY7KeAIOuqu+2WiOyKteuLiOuLpC47ICUtLjE5MnMA6rO17JygIOudvOydtOuyhOufrOumrOulvCDsnITtlZwg7Yyo7Iqk6rCAIOygleydmOuQmOyWtCDsnojsp4Ag7JWK7Iq164uI64ukLgAnJS0uMTkycycg7ZWo7IiY64qUIOydtOuvuCDsobTsnqztlanri4jri6QuACclLS4xOTJzJyDqs7XsnKAg65287J2067KE65+s66as66W8IOyXtOyImCDsl4bsirXri4jri6QuKOyXkOufrOuyiO2YuDogJWQgJS0uMTkycykA65287J2067KE65+s66as7JeQ7IScICclLS4xMjhzJyDtlajsiJjrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6QuACclLS4xOTJzJyDtlajsiJjqsIAg7KCV7J2Y65CY7Ja0IOyeiOyngCDslYrsirXri4jri6QuAOuEiOustCDrp47snYAg7Jew6rKw7Jik66WY66GcIOyduO2VmOyXrCDtmLjsiqTtirggJyUtLjI1NXMn64qUIOu4lOudveuQmOyXiOyKteuLiOuLpC4gJ215c3FsYWRtaW4gZmx1c2gtaG9zdHMn66W8IOydtOyaqe2VmOyXrCDruJTrnb3snYQg7ZW07KCc7ZWY7IS47JqUACclLS4yNTVzJyDtmLjsiqTtirjripQg7J20IE15U1FM7ISc67KE7JeQIOygkeyGje2VoCDtl4jqsIDrpbwg67Cb7KeAIOuqu+2WiOyKteuLiOuLpC4A64u57Iug7J2AIE15U1FM7ISc67KE7JeQIOydteuqheydmCDsgqzsmqnsnpDroZwg7KCR7IaN7J2EIO2VmOyFqOyKteuLiOuLpC7snbXrqoXsnZgg7IKs7Jqp7J6Q64qUIOyVlO2YuOulvCDrs4Dqsr3tlaAg7IiYIOyXhuyKteuLiOuLpC4A64u57Iug7J2AIOuLpOuluOyCrOyaqeyekOuTpOydmCDslZTtmLjrpbwg67OA6rK97ZWgIOyImCDsnojrj4TroZ0g642w7J207YOA67Kg7J207IqkIOuzgOqyveq2jO2VnOydhCDqsIDsoLjslbwg7ZWp64uI64ukLgDsgqzsmqnsnpAg7YWM7J2067iU7JeQ7IScIOydvOy5mO2VmOuKlCDqsoPsnYQg7LC+7J2EIOyImCDsl4bsnY3ri4jri6QuAOydvOy5mO2VmOuKlCBSb3dzIDogJWxk6rCcIOuzgOqyveuQqDogJWxk6rCcICDqsr3qs6A6ICVsZOqwnADsg4jroZzsmrQg7JOw66CI65Oc66W8IOunjOuTpCDsiJgg7JeG7Iq164uI64ukLijsl5Drn6zrsojtmLggJWQpLiDrp4zslb0g7Jes7Jyg66mU66qo66as6rCAIOyeiOuLpOuptCBPUy1kZXBlbmRlbnTrsoTqt7gg7J2YIOuplOuJtOyWvCDrtoDrtoTsnYQg7LC+7JWE67O07Iuc7JikLgBSb3cgJWxk7JeQ7IScIOy5vOufvCDsubTsmrTtirjsmYAgdmFsdWUg7Lm07Jq07YSw7JmAIOydvOy5mO2VmOyngCDslYrsirXri4jri6QuAO2FjOydtOu4lOydhCDri6Tsi5wg7Je07IiYIOyXhuq1sOyalDogJyUtLjE5MnMATlVMTCDqsJLsnYQg7J6Y66q7IOyCrOyaqe2VmOyFqOq1sOyalC4uLgByZWdleHDsl5DshJwgJyUtLjY0cyfqsIAg64Ks7Iq164uI64ukLgBNaXhpbmcgb2YgR1JPVVAg7Lm865+8cyAoTUlOKCksTUFYKCksQ09VTlQoKSwuLi4pIHdpdGggbm8gR1JPVVAg7Lm865+8cyBpcyBpbGxlZ2FsIGlmIHRoZXJlIGlzIG5vIEdST1VQIEJZIGNsYXVzZQDsgqzsmqnsnpAgJyUtLjQ4cycgKO2YuOyKpO2KuCAnJS0uMjU1cycp66W8IOychO2VmOyXrCDsoJXsnZjrkJwg6re465+wIOyKueyduOydgCDsl4bsirXri4jri6QuACclLS4xMjhzJyDrqoXroLnsnYAg64uk7J2MIOyCrOyaqeyekOyXkOqyjCDqsbDrtoDrkJjsl4jsirXri4jri6QuIDogJyUtLjQ4cydAJyUtLjY0cycgZm9yIO2FjOydtOu4lCAnJS0uNjRzJwAnJS0uMTZzJyDrqoXroLnsnYAg64uk7J2MIOyCrOyaqeyekOyXkOqyjCDqsbDrtoDrkJjsl4jsirXri4jri6QuIDogJyUtLjQ4cydAJyUtLjY0cycgZm9yIOy5vOufvCAnJS0uMTkycycgaW4g7YWM7J2067iUICclLS4xOTJzJwDsnpjrqrvrkJwgR1JBTlQvUkVWT0tFIOuqheuguS4g7Ja065akIOq2jOumrOyZgCDsirnsnbjsnbQg7IKs7Jqp65CY7Ja0IOyniCDsiJgg7J6I64qU7KeAIOuplOuJtOyWvOydhCDrs7Tsi5zsmKQuAOyKueyduChHUkFOVCnsnYQg7JyE7ZWY7JesIOyCrOyaqe2VnCDsgqzsmqnsnpDrgpgg7Zi47Iqk7Yq47J2YIOqwkuuTpOydtCDrhIjrrLQg6rmB64uI64ukLgDthYzsnbTruJQgJyUtLjE5MnMuJS0uMTkycycg64qUIOyhtOyerO2VmOyngCDslYrsirXri4jri6QuAOyCrOyaqeyekCAnJS0uNDhzJyjtmLjsiqTtirggJyUtLjI1NXMnKeuKlCDthYzsnbTruJQgJyUtLjE5MnMn66W8IOyCrOyaqe2VmOq4sCDsnITtlZjsl6wg7KCV7J2Y65CcIOyKueyduOydgCDsl4bsirXri4jri6QuIADsgqzsmqnrkJwg66qF66C57J2AIO2YhOyerOydmCBNeVNRTCDrsoTsoLzsl5DshJzripQg7J207Jqp65CY7KeAIOyViuyKteuLiOuLpC4AU1FMIOq1rOusuOyXkCDsmKTrpZjqsIAg7J6I7Iq164uI64ukLgBEZWxheWVkIGluc2VydCB0aHJlYWQgY291bGRuJ3QgZ2V0IHJlcXVlc3RlZCBsb2NrIGZvciB0YWJsZSAlLS4xOTJzAFRvbyBtYW55IGRlbGF5ZWQgdGhyZWFkcyBpbiB1c2UA642w7J207YOA67Kg7J207IqkIOygkeyGjeydhCDsnITtlZwg7Jew6rKwICVsZOqwgCDspJHri6jrkKggOiAnJS0uMTkycycg7IKs7Jqp7J6QOiAnJS0uNDhzJyAoJS0uNjRzKQAnbWF4X2FsbG93ZWRfcGFja2V0J+uztOuLpCDrjZTtgbAg7Yyo7YK37J2EIOuwm+yVmOyKteuLiOuLpC4A7Jew6rKwIO2MjOydtO2UhOuhnOu2gO2EsCDsl5Drn6zqsIAg67Cc7IOd7ZWY7JiA7Iq164uI64ukLgBmY250bCgpIO2VqOyImOuhnOu2gO2EsCDsl5Drn6zqsIAg67Cc7IOd7ZWY7JiA7Iq164uI64ukLgDsiJzshJzqsIAg66ee7KeA7JWK64qUIO2MqO2Ct+ydhCDrsJvslZjsirXri4jri6QuAO2GteyLoCDtjKjtgrfsnZgg7JWV7LaV7ZW07KCc66W8IO2VoCDsiJgg7JeG7JeI7Iq164uI64ukLgDthrXsi6Ag7Yyo7YK37J2EIOydveuKlCDspJEg7Jik66WY6rCAIOuwnOyDne2VmOyYgOyKteuLiOuLpC4A7Ya17IugIO2MqO2Ct+ydhCDsnb3ripQg7KSRIHRpbWVvdXTsnbQg67Cc7IOd7ZWY7JiA7Iq164uI64ukLgDthrXsi6Ag7Yyo7YK37J2EIOq4sOuhne2VmOuKlCDspJEg7Jik66WY6rCAIOuwnOyDne2VmOyYgOyKteuLiOuLpC4A7Ya17IugIO2MqO2Mg+ydhCDquLDroZ3tlZjripQg7KSRIHRpbWVvdXTsnbQg67Cc7IOd7ZWY7JiA7Iq164uI64ukLgBSZXN1bHQgc3RyaW5nIGlzIGxvbmdlciB0aGFuICdtYXhfYWxsb3dlZF9wYWNrZXQnIGJ5dGVzAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IEJMT0IvVEVYVCBjb2x1bW5zAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IEFVVE9fSU5DUkVNRU5UIGNvbHVtbnMASU5TRVJUIERFTEFZRUQgY2FuJ3QgYmUgdXNlZCB3aXRoIHRhYmxlICclLS4xOTJzJyBiZWNhdXNlIGl0IGlzIGxvY2tlZCB3aXRoIExPQ0sgVEFCTEVTAEluY29ycmVjdCBjb2x1bW4gbmFtZSAnJS0uMTAwcycAVGhlIHVzZWQgdGFibGUgaGFuZGxlciBjYW4ndCBpbmRleCBjb2x1bW4gJyUtLjE5MnMnAEFsbCB0YWJsZXMgaW4gdGhlIE1FUkdFIHRhYmxlIGFyZSBub3QgZGVmaW5lZCBpZGVudGljYWxseQBDYW4ndCB3cml0ZSwgYmVjYXVzZSBvZiB1bmlxdWUgY29uc3RyYWludCwgdG8gdGFibGUgJyUtLjE5MnMnAEJMT0IgY29sdW1uICclLS4xOTJzJyB1c2VkIGluIGtleSBzcGVjaWZpY2F0aW9uIHdpdGhvdXQgYSBrZXkgbGVuZ3RoAEFsbCBwYXJ0cyBvZiBhIFBSSU1BUlkgS0VZIG11c3QgYmUgTk9UIE5VTEw7IGlmIHlvdSBuZWVkIE5VTEwgaW4gYSBrZXksIHVzZSBVTklRVUUgaW5zdGVhZABSZXN1bHQgY29uc2lzdGVkIG9mIG1vcmUgdGhhbiBvbmUgcm93AFRoaXMgdGFibGUgdHlwZSByZXF1aXJlcyBhIHByaW1hcnkga2V5AFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBpcyBub3QgY29tcGlsZWQgd2l0aCBSQUlEIHN1cHBvcnQAWW91IGFyZSB1c2luZyBzYWZlIHVwZGF0ZSBtb2RlIGFuZCB5b3UgdHJpZWQgdG8gdXBkYXRlIGEgdGFibGUgd2l0aG91dCBhIFdIRVJFIHRoYXQgdXNlcyBhIEtFWSBjb2x1bW4uICVzAEtleSAnJS0uMTkycycgZG9lc24ndCBleGlzdCBpbiB0YWJsZSAnJS0uMTkycycAQ2FuJ3Qgb3BlbiB0YWJsZQBUaGUgaGFuZGxlciBmb3IgdGhlIHRhYmxlIGRvZXNuJ3Qgc3VwcG9ydCAlcwBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgdGhpcyBjb21tYW5kIGluIGEgdHJhbnNhY3Rpb24AR290IGVycm9yICVkIC0gJyUtLjE5MnMnIGR1cmluZyBDT01NSVQAR290IGVycm9yICVkIC0gJyUtLjE5MnMnIGR1cmluZyBST0xMQkFDSwBHb3QgZXJyb3IgJWQgZHVyaW5nIEZMVVNIX0xPR1MAR290IGVycm9yICVkIGR1cmluZyBDSEVDS1BPSU5UAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzKQBUaGUgc3RvcmFnZSBlbmdpbmUgZm9yIHRoZSB0YWJsZSBkb2VzIG5vdCBzdXBwb3J0IGJpbmFyeSB0YWJsZSBkdW1wAEJpbmxvZyBjbG9zZWQsIGNhbm5vdCBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMARmFpbGVkIHJlYnVpbGRpbmcgdGhlIGluZGV4IG9mICBkdW1wZWQgdGFibGUgJyUtLjE5MnMnAEVycm9yIGZyb20gc291cmNlOiAnJS0uNjRzJwBOZXQgZXJyb3IgcmVhZGluZyBmcm9tIHNvdXJjZQBOZXQgZXJyb3Igd3JpdGluZyB0byBzb3VyY2UAQ2FuJ3QgZmluZCBGVUxMVEVYVCBpbmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QAQ2FuJ3QgZXhlY3V0ZSB0aGUgZ2l2ZW4gY29tbWFuZCBiZWNhdXNlIHlvdSBoYXZlIGFjdGl2ZSBsb2NrZWQgdGFibGVzIG9yIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbgBVbmtub3duIHN5c3RlbSB2YXJpYWJsZSAnJS0uNjRzJwBUYWJsZSAnJS0uMTkycycgaXMgbWFya2VkIGFzIGNyYXNoZWQgYW5kIHNob3VsZCBiZSByZXBhaXJlZABUYWJsZSAnJS0uMTkycycgaXMgbWFya2VkIGFzIGNyYXNoZWQgYW5kIGxhc3QgKGF1dG9tYXRpYz8pIHJlcGFpciBmYWlsZWQAU29tZSBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VkIHRhYmxlcyBjb3VsZG4ndCBiZSByb2xsZWQgYmFjawBNdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb24gcmVxdWlyZWQgbW9yZSB0aGFuICdtYXhfYmlubG9nX2NhY2hlX3NpemUnIGJ5dGVzIG9mIHN0b3JhZ2U7IGluY3JlYXNlIHRoaXMgbXlzcWxkIHZhcmlhYmxlIGFuZCB0cnkgYWdhaW4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhOyBydW4gU1RPUCBSRVBMSUNBIGZpcnN0AFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgcnVubmluZyByZXBsaWNhOyBjb25maWd1cmUgcmVwbGljYSBhbmQgZG8gU1RBUlQgUkVQTElDQQBUaGUgc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIGFzIHJlcGxpY2E7IGZpeCBpbiBjb25maWcgZmlsZSBvciB3aXRoIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8AQ291bGQgbm90IGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmU7IG1vcmUgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cAQ291bGQgbm90IGNyZWF0ZSByZXBsaWNhIHRocmVhZDsgY2hlY2sgc3lzdGVtIHJlc291cmNlcwBVc2VyICUtLjY0cyBhbHJlYWR5IGhhcyBtb3JlIHRoYW4gJ21heF91c2VyX2Nvbm5lY3Rpb25zJyBhY3RpdmUgY29ubmVjdGlvbnMAWW91IG1heSBvbmx5IHVzZSBjb25zdGFudCBleHByZXNzaW9ucyB3aXRoIFNFVABMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZDsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24AVGhlIHRvdGFsIG51bWJlciBvZiBsb2NrcyBleGNlZWRzIHRoZSBsb2NrIHRhYmxlIHNpemUAVXBkYXRlIGxvY2tzIGNhbm5vdCBiZSBhY3F1aXJlZCBkdXJpbmcgYSBSRUFEIFVOQ09NTUlUVEVEIHRyYW5zYWN0aW9uAERST1AgREFUQUJBU0Ugbm90IGFsbG93ZWQgd2hpbGUgdGhyZWFkIGlzIGhvbGRpbmcgZ2xvYmFsIHJlYWQgbG9jawBDUkVBVEUgREFUQUJBU0Ugbm90IGFsbG93ZWQgd2hpbGUgdGhyZWFkIGlzIGhvbGRpbmcgZ2xvYmFsIHJlYWQgbG9jawBJbmNvcnJlY3QgYXJndW1lbnRzIHRvICVzACclLS40OHMnQCclLS42NHMnIGlzIG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBuZXcgdXNlcnMASW5jb3JyZWN0IHRhYmxlIGRlZmluaXRpb247IGFsbCBNRVJHRSB0YWJsZXMgbXVzdCBiZSBpbiB0aGUgc2FtZSBkYXRhYmFzZQBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgbG9jazsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24AVGhlIHVzZWQgdGFibGUgdHlwZSBkb2Vzbid0IHN1cHBvcnQgRlVMTFRFWFQgaW5kZXhlcwBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQAQ2Fubm90IGFkZCBvciB1cGRhdGUgYSBjaGlsZCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBDYW5ub3QgZGVsZXRlIG9yIHVwZGF0ZSBhIHBhcmVudCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBFcnJvciBjb25uZWN0aW5nIHRvIHNvdXJjZTogJS0uMTI4cwBFcnJvciBydW5uaW5nIHF1ZXJ5IG9uIHNvdXJjZTogJS0uMTI4cwBFcnJvciB3aGVuIGV4ZWN1dGluZyBjb21tYW5kICVzOiAlLS4xMjhzAEluY29ycmVjdCB1c2FnZSBvZiAlcyBhbmQgJXMAVGhlIHVzZWQgU0VMRUNUIHN0YXRlbWVudHMgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29sdW1ucwBDYW4ndCBleGVjdXRlIHRoZSBxdWVyeSBiZWNhdXNlIHlvdSBoYXZlIGEgY29uZmxpY3RpbmcgcmVhZCBsb2NrAE1peGluZyBvZiB0cmFuc2FjdGlvbmFsIGFuZCBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgaXMgZGlzYWJsZWQAT3B0aW9uICclcycgdXNlZCB0d2ljZSBpbiBzdGF0ZW1lbnQAVXNlciAnJS0uNjRzJyBoYXMgZXhjZWVkZWQgdGhlICclcycgcmVzb3VyY2UgKGN1cnJlbnQgdmFsdWU6ICVsZCkAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlICUtLjEyOHMgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlvbgBWYXJpYWJsZSAnJS0uNjRzJyBpcyBhIFNFU1NJT04gdmFyaWFibGUgYW5kIGNhbid0IGJlIHVzZWQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGlzIGEgR0xPQkFMIHZhcmlhYmxlIGFuZCBzaG91bGQgYmUgc2V0IHdpdGggU0VUIEdMT0JBTABWYXJpYWJsZSAnJS0uNjRzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAEluY29ycmVjdCBhcmd1bWVudCB0eXBlIHRvIHZhcmlhYmxlICclLS42NHMnAFZhcmlhYmxlICclLS42NHMnIGNhbiBvbmx5IGJlIHNldCwgbm90IHJlYWQASW5jb3JyZWN0IHVzYWdlL3BsYWNlbWVudCBvZiAnJXMnAFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBkb2Vzbid0IHlldCBzdXBwb3J0ICclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAFZhcmlhYmxlICclLS4xOTJzJyBpcyBhICVzIHZhcmlhYmxlAEluY29ycmVjdCBmb3JlaWduIGtleSBkZWZpbml0aW9uIGZvciAnJS0uMTkycyc6ICVzAEtleSByZWZlcmVuY2UgYW5kIHRhYmxlIHJlZmVyZW5jZSBkb24ndCBtYXRjaABPcGVyYW5kIHNob3VsZCBjb250YWluICVkIGNvbHVtbihzKQBTdWJxdWVyeSByZXR1cm5zIG1vcmUgdGhhbiAxIHJvdwBVbmtub3duIHByZXBhcmVkIHN0YXRlbWVudCBoYW5kbGVyICglLipzKSBnaXZlbiB0byAlcwBIZWxwIGRhdGFiYXNlIGlzIGNvcnJ1cHQgb3IgZG9lcyBub3QgZXhpc3QAQ3ljbGljIHJlZmVyZW5jZSBvbiBzdWJxdWVyaWVzAENvbnZlcnRpbmcgY29sdW1uICclcycgZnJvbSAlcyB0byAlcwBSZWZlcmVuY2UgJyUtLjY0cycgbm90IHN1cHBvcnRlZCAoJXMpAEV2ZXJ5IGRlcml2ZWQgdGFibGUgbXVzdCBoYXZlIGl0cyBvd24gYWxpYXMAU2VsZWN0ICV1IHdhcyByZWR1Y2VkIGR1cmluZyBvcHRpbWl6YXRpb24AVGFibGUgJyUtLjE5MnMnIGZyb20gb25lIG9mIHRoZSBTRUxFQ1RzIGNhbm5vdCBiZSB1c2VkIGluICUtLjMycwBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCByZXF1ZXN0ZWQgYnkgc2VydmVyOyBjb25zaWRlciB1cGdyYWRpbmcgTXlTUUwgY2xpZW50AEFsbCBwYXJ0cyBvZiBhIFNQQVRJQUwgaW5kZXggbXVzdCBiZSBOT1QgTlVMTABDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBSZXBsaWNhIGlzIGFscmVhZHkgcnVubmluZwBSZXBsaWNhIGFscmVhZHkgaGFzIGJlZW4gc3RvcHBlZABVbmNvbXByZXNzZWQgZGF0YSBzaXplIHRvbyBsYXJnZTsgdGhlIG1heGltdW0gc2l6ZSBpcyAlZCAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBOb3QgZW5vdWdoIG1lbW9yeQBaTElCOiBOb3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgKHByb2JhYmx5LCBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGRhdGEgd2FzIGNvcnJ1cHRlZCkAWkxJQjogSW5wdXQgZGF0YSBjb3JydXB0ZWQAUm93ICV1IHdhcyBjdXQgYnkgR1JPVVBfQ09OQ0FUKCkAUm93ICVsZCBkb2Vzbid0IGNvbnRhaW4gZGF0YSBmb3IgYWxsIGNvbHVtbnMAUm93ICVsZCB3YXMgdHJ1bmNhdGVkOyBpdCBjb250YWluZWQgbW9yZSBkYXRhIHRoYW4gdGhlcmUgd2VyZSBpbnB1dCBjb2x1bW5zAENvbHVtbiBzZXQgdG8gZGVmYXVsdCB2YWx1ZTsgTlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAE91dCBvZiByYW5nZSB2YWx1ZSBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABEYXRhIHRydW5jYXRlZCBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABVc2luZyBzdG9yYWdlIGVuZ2luZSAlcyBmb3IgdGFibGUgJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zICglcywlcykgYW5kICglcywlcykgZm9yIG9wZXJhdGlvbiAnJXMnAENhbm5vdCBkcm9wIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMAQ2FuJ3QgcmV2b2tlIGFsbCBwcml2aWxlZ2VzIGZvciBvbmUgb3IgbW9yZSBvZiB0aGUgcmVxdWVzdGVkIHVzZXJzAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSwgKCVzLCVzKSwgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyBmb3Igb3BlcmF0aW9uICclcycAVmFyaWFibGUgJyUtLjY0cycgaXMgbm90IGEgdmFyaWFibGUgY29tcG9uZW50IChjYW4ndCBiZSB1c2VkIGFzIFhYWFgudmFyaWFibGVfbmFtZSkAVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnAFNTTCBwYXJhbWV0ZXJzIGluIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQ7IHRoZXkgY2FuIGJlIHVzZWQgbGF0ZXIgaWYgTXlTUUwgcmVwbGljYSB3aXRoIFNTTCBpcyBzdGFydGVkAFNlcnZlciBpcyBydW5uaW5nIGluIC0tc2VjdXJlLWF1dGggbW9kZSwgYnV0ICclcydAJyVzJyBoYXMgYSBwYXNzd29yZCBpbiB0aGUgb2xkIGZvcm1hdDsgcGxlYXNlIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhlIG5ldyBmb3JtYXQARmllbGQgb3IgcmVmZXJlbmNlICclLS4xOTJzJXMlLS4xOTJzJXMlLS4xOTJzJyBvZiBTRUxFQ1QgIyVkIHdhcyByZXNvbHZlZCBpbiBTRUxFQ1QgIyVkAEluY29ycmVjdCBwYXJhbWV0ZXIgb3IgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBmb3IgU1RBUlQgUkVQTElDQSBVTlRJTABJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgLS1za2lwLXJlcGxpY2Etc3RhcnQgd2hlbiBkb2luZyBzdGVwLWJ5LXN0ZXAgcmVwbGljYXRpb24gd2l0aCBTVEFSVCBSRVBMSUNBIFVOVElMOyBvdGhlcndpc2UsIHlvdSB3aWxsIGdldCBwcm9ibGVtcyBpZiB5b3UgZ2V0IGFuIHVuZXhwZWN0ZWQgcmVwbGljYSdzIG15c3FsZCByZXN0YXJ0AFNRTCB0aHJlYWQgaXMgbm90IHRvIGJlIHN0YXJ0ZWQgc28gVU5USUwgb3B0aW9ucyBhcmUgaWdub3JlZABJbmNvcnJlY3QgaW5kZXggbmFtZSAnJS0uMTAwcycASW5jb3JyZWN0IGNhdGFsb2cgbmFtZSAnJS0uMTAwcycAUXVlcnkgY2FjaGUgZmFpbGVkIHRvIHNldCBzaXplICVsdTsgbmV3IHF1ZXJ5IGNhY2hlIHNpemUgaXMgJWx1AENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHBhcnQgb2YgRlVMTFRFWFQgaW5kZXgAVW5rbm93biBrZXkgY2FjaGUgJyUtLjEwMHMnAE15U1FMIGlzIHN0YXJ0ZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlOyB5b3UgbXVzdCByZXN0YXJ0IGl0IHdpdGhvdXQgdGhpcyBzd2l0Y2ggZm9yIHRoaXMgZ3JhbnQgdG8gd29yawBVbmtub3duIHN0b3JhZ2UgZW5naW5lICclcycAJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IHVwZGF0YWJsZQBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyB5b3UgbmVlZCBNeVNRTCBidWlsdCB3aXRoICclcycgdG8gaGF2ZSBpdCB3b3JraW5nAFRoZSBNeVNRTCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAlcyBvcHRpb24gc28gaXQgY2Fubm90IGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQAQ29sdW1uICclLS4xMDBzJyBoYXMgZHVwbGljYXRlZCB2YWx1ZSAnJS0uNjRzJyBpbiAlcwBUcnVuY2F0ZWQgaW5jb3JyZWN0ICUtLjY0cyB2YWx1ZTogJyUtLjEyOHMnAEluY29ycmVjdCB0YWJsZSBkZWZpbml0aW9uOyB0aGVyZSBjYW4gYmUgb25seSBvbmUgVElNRVNUQU1QIGNvbHVtbiB3aXRoIENVUlJFTlRfVElNRVNUQU1QIGluIERFRkFVTFQgb3IgT04gVVBEQVRFIGNsYXVzZQBJbnZhbGlkIE9OIFVQREFURSBjbGF1c2UgZm9yICclLS4xOTJzJyBjb2x1bW4AVGhpcyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByZXBhcmVkIHN0YXRlbWVudCBwcm90b2NvbCB5ZXQAR290IGVycm9yICVkICclLS4xMDBzJyBmcm9tICVzAEdvdCB0ZW1wb3JhcnkgZXJyb3IgJWQgJyUtLjEwMHMnIGZyb20gJXMAVW5rbm93biBvciBpbmNvcnJlY3QgdGltZSB6b25lOiAnJS0uNjRzJwBJbnZhbGlkIFRJTUVTVEFNUCB2YWx1ZSBpbiBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAEludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJwBSZXN1bHQgb2YgJXMoKSB3YXMgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbGQpIC0gdHJ1bmNhdGVkAENvbmZsaWN0aW5nIGRlY2xhcmF0aW9uczogJyVzJXMnIGFuZCAnJXMlcycAQ2FuJ3QgY3JlYXRlIGEgJXMgZnJvbSB3aXRoaW4gYW5vdGhlciBzdG9yZWQgcm91dGluZQAlcyAlcyBhbHJlYWR5IGV4aXN0cwAlcyAlcyBkb2VzIG5vdCBleGlzdABGYWlsZWQgdG8gRFJPUCAlcyAlcwBGYWlsZWQgdG8gQ1JFQVRFICVzICVzACVzIHdpdGggbm8gbWF0Y2hpbmcgbGFiZWw6ICVzAFJlZGVmaW5pbmcgbGFiZWwgJXMARW5kLWxhYmVsICVzIHdpdGhvdXQgbWF0Y2gAUmVmZXJyaW5nIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJXMAUFJPQ0VEVVJFICVzIGNhbid0IHJldHVybiBhIHJlc3VsdCBzZXQgaW4gdGhlIGdpdmVuIGNvbnRleHQAUkVUVVJOIGlzIG9ubHkgYWxsb3dlZCBpbiBhIEZVTkNUSU9OACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBwcm9jZWR1cmVzAFRoZSB1cGRhdGUgbG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IHRoZSBiaW5hcnkgbG9nOyBTRVQgU1FMX0xPR19VUERBVEUgaGFzIGJlZW4gaWdub3JlZC4AVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiB0cmFuc2xhdGVkIHRvIFNFVCBTUUxfTE9HX0JJTi4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZABJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgJXMgJXM7IGV4cGVjdGVkICV1LCBnb3QgJXUAVW5kZWZpbmVkIENPTkRJVElPTjogJXMATm8gUkVUVVJOIGZvdW5kIGluIEZVTkNUSU9OICVzAEZVTkNUSU9OICVzIGVuZGVkIHdpdGhvdXQgUkVUVVJOAEN1cnNvciBzdGF0ZW1lbnQgbXVzdCBiZSBhIFNFTEVDVABDdXJzb3IgU0VMRUNUIG11c3Qgbm90IGhhdmUgSU5UTwBVbmRlZmluZWQgQ1VSU09SOiAlcwBDdXJzb3IgaXMgYWxyZWFkeSBvcGVuAEN1cnNvciBpcyBub3Qgb3BlbgBVbmRlY2xhcmVkIHZhcmlhYmxlOiAlcwBJbmNvcnJlY3QgbnVtYmVyIG9mIEZFVENIIHZhcmlhYmxlcwBObyBkYXRhIC0gemVybyByb3dzIGZldGNoZWQsIHNlbGVjdGVkLCBvciBwcm9jZXNzZWQARHVwbGljYXRlIHBhcmFtZXRlcjogJXMARHVwbGljYXRlIHZhcmlhYmxlOiAlcwBEdXBsaWNhdGUgY29uZGl0aW9uOiAlcwBEdXBsaWNhdGUgY3Vyc29yOiAlcwBGYWlsZWQgdG8gQUxURVIgJXMgJXMAU3VicXVlcnkgdmFsdWUgbm90IHN1cHBvcnRlZAAlcyBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBWYXJpYWJsZSBvciBjb25kaXRpb24gZGVjbGFyYXRpb24gYWZ0ZXIgY3Vyc29yIG9yIGhhbmRsZXIgZGVjbGFyYXRpb24AQ3Vyc29yIGRlY2xhcmF0aW9uIGFmdGVyIGhhbmRsZXIgZGVjbGFyYXRpb24AQ2FzZSBub3QgZm91bmQgZm9yIENBU0Ugc3RhdGVtZW50AENvbmZpZ3VyYXRpb24gZmlsZSAnJS0uMTkycycgaXMgdG9vIGJpZwBNYWxmb3JtZWQgZmlsZSB0eXBlIGhlYWRlciBpbiBmaWxlICclLS4xOTJzJwBVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIHdoaWxlIHBhcnNpbmcgY29tbWVudCAnJS0uMjAwcycARXJyb3Igd2hpbGUgcGFyc2luZyBwYXJhbWV0ZXIgJyUtLjE5MnMnIChsaW5lOiAnJS0uMTkycycpAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgc2tpcHBpbmcgdW5rbm93biBwYXJhbWV0ZXIgJyUtLjE5MnMnAEVYUExBSU4vU0hPVyBjYW4gbm90IGJlIGlzc3VlZDsgbGFja2luZyBwcml2aWxlZ2VzIGZvciB1bmRlcmx5aW5nIHRhYmxlAEZpbGUgJyUtLjE5MnMnIGhhcyB1bmtub3duIHR5cGUgJyUtLjY0cycgaW4gaXRzIGhlYWRlcgAnJS0uMTkycy4lLS4xOTJzJyBpcyBub3QgJXMAQ29sdW1uICclLS4xOTJzJyBpcyBub3QgdXBkYXRhYmxlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSBzdWJxdWVyeSBpbiB0aGUgRlJPTSBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhICclcycgY2xhdXNlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIAVmlldydzIFNFTEVDVCByZWZlcnMgdG8gYSB0ZW1wb3JhcnkgdGFibGUgJyUtLjE5MnMnAEluIGRlZmluaXRpb24gb2YgdmlldywgZGVyaXZlZCB0YWJsZSBvciBjb21tb24gdGFibGUgZXhwcmVzc2lvbiwgU0VMRUNUIGxpc3QgYW5kIGNvbHVtbiBuYW1lcyBsaXN0IGhhdmUgZGlmZmVyZW50IGNvbHVtbiBjb3VudHMAVmlldyBtZXJnZSBhbGdvcml0aG0gY2FuJ3QgYmUgdXNlZCBoZXJlIGZvciBub3cgKGFzc3VtZWQgdW5kZWZpbmVkIGFsZ29yaXRobSkAVmlldyBiZWluZyB1cGRhdGVkIGRvZXMgbm90IGhhdmUgY29tcGxldGUga2V5IG9mIHVuZGVybHlpbmcgdGFibGUgaW4gaXQAVmlldyAnJS0uMTkycy4lLS4xOTJzJyByZWZlcmVuY2VzIGludmFsaWQgdGFibGUocykgb3IgY29sdW1uKHMpIG9yIGZ1bmN0aW9uKHMpIG9yIGRlZmluZXIvaW52b2tlciBvZiB2aWV3IGxhY2sgcmlnaHRzIHRvIHVzZSB0aGVtAENhbid0IGRyb3Agb3IgYWx0ZXIgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lAEdPVE8gaXMgbm90IGFsbG93ZWQgaW4gYSBzdG9yZWQgcHJvY2VkdXJlIGhhbmRsZXIAVHJpZ2dlciBhbHJlYWR5IGV4aXN0cwBUcmlnZ2VyIGRvZXMgbm90IGV4aXN0AFRyaWdnZXIncyAnJS0uMTkycycgaXMgdmlldyBvciB0ZW1wb3JhcnkgdGFibGUAVXBkYXRpbmcgb2YgJXMgcm93IGlzIG5vdCBhbGxvd2VkIGluICVzdHJpZ2dlcgBUaGVyZSBpcyBubyAlcyByb3cgaW4gJXMgdHJpZ2dlcgBGaWVsZCAnJS0uMTkycycgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBEaXZpc2lvbiBieSAwAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLjE5MnMnIGF0IHJvdyAlbGQASWxsZWdhbCAlcyAnJS0uMTkycycgdmFsdWUgZm91bmQgZHVyaW5nIHBhcnNpbmcAQ0hFQ0sgT1BUSU9OIG9uIG5vbi11cGRhdGFibGUgdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDSEVDSyBPUFRJT04gZmFpbGVkICclLS4xOTJzLiUtLjE5MnMnACUtLjE2cyBjb21tYW5kIGRlbmllZCB0byB1c2VyICclLS40OHMnQCclLS42NHMnIGZvciByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgcHVyZ2luZyBvbGQgcmVsYXkgbG9nczogJXMAUGFzc3dvcmQgaGFzaCBzaG91bGQgYmUgYSAlZC1kaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIAVGFyZ2V0IGxvZyBub3QgZm91bmQgaW4gYmlubG9nIGluZGV4AEkvTyBlcnJvciByZWFkaW5nIGxvZyBpbmRleCBmaWxlAFNlcnZlciBjb25maWd1cmF0aW9uIGRvZXMgbm90IHBlcm1pdCBiaW5sb2cgcHVyZ2UARmFpbGVkIG9uIGZzZWVrKCkARmF0YWwgZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBBIHB1cmdlYWJsZSBsb2cgaXMgaW4gdXNlLCB3aWxsIG5vdCBwdXJnZQBVbmtub3duIGVycm9yIGR1cmluZyBsb2cgcHVyZ2UARmFpbGVkIGluaXRpYWxpemluZyByZWxheSBsb2cgcG9zaXRpb246ICVzAFlvdSBhcmUgbm90IHVzaW5nIGJpbmFyeSBsb2dnaW5nAFRoZSAnJS0uNjRzJyBzeW50YXggaXMgcmVzZXJ2ZWQgZm9yIHB1cnBvc2VzIGludGVybmFsIHRvIHRoZSBNeVNRTCBzZXJ2ZXIAV1NBU3RhcnR1cCBGYWlsZWQAQ2FuJ3QgaGFuZGxlIHByb2NlZHVyZXMgd2l0aCBkaWZmZXJlbnQgZ3JvdXBzIHlldABTZWxlY3QgbXVzdCBoYXZlIGEgZ3JvdXAgd2l0aCB0aGlzIHByb2NlZHVyZQBDYW4ndCB1c2UgT1JERVIgY2xhdXNlIHdpdGggdGhpcyBwcm9jZWR1cmUAQmluYXJ5IGxvZ2dpbmcgYW5kIHJlcGxpY2F0aW9uIGZvcmJpZCBjaGFuZ2luZyB0aGUgZ2xvYmFsIHNlcnZlciAlcwBDYW4ndCBtYXAgZmlsZTogJS0uMjAwcywgZXJybm86ICVkAFdyb25nIG1hZ2ljIGluICUtLjY0cwBQcmVwYXJlZCBzdGF0ZW1lbnQgY29udGFpbnMgdG9vIG1hbnkgcGxhY2Vob2xkZXJzAEtleSBwYXJ0ICclLS4xOTJzJyBsZW5ndGggY2Fubm90IGJlIDAAVmlldyB0ZXh0IGNoZWNrc3VtIGZhaWxlZABDYW4gbm90IG1vZGlmeSBtb3JlIHRoYW4gb25lIGJhc2UgdGFibGUgdGhyb3VnaCBhIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDYW4gbm90IGluc2VydCBpbnRvIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJyB3aXRob3V0IGZpZWxkcyBsaXN0AENhbiBub3QgZGVsZXRlIGZyb20gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAE9wZXJhdGlvbiAlcyBmYWlsZWQgZm9yICUuMjU2cwBYQUVSX05PVEE6IFVua25vd24gWElEAFhBRVJfSU5WQUw6IEludmFsaWQgYXJndW1lbnRzIChvciB1bnN1cHBvcnRlZCBjb21tYW5kKQBYQUVSX1JNRkFJTDogVGhlIGNvbW1hbmQgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gZ2xvYmFsIHRyYW5zYWN0aW9uIGlzIGluIHRoZSAgJS42NHMgc3RhdGUAWEFFUl9PVVRTSURFOiBTb21lIHdvcmsgaXMgZG9uZSBvdXRzaWRlIGdsb2JhbCB0cmFuc2FjdGlvbgBYQUVSX1JNRVJSOiBGYXRhbCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIC0gY2hlY2sgeW91ciBkYXRhIGZvciBjb25zaXN0ZW5jeQBYQV9SQlJPTExCQUNLOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrAFRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAnJS0uNDhzJyBvbiBob3N0ICclLS4yNTVzJyBvbiByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgdG8gZ3JhbnQgRVhFQ1VURSBhbmQgQUxURVIgUk9VVElORSBwcml2aWxlZ2VzAEZhaWxlZCB0byByZXZva2UgYWxsIHByaXZpbGVnZXMgdG8gZHJvcHBlZCByb3V0aW5lAERhdGEgdG9vIGxvbmcgZm9yIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQAQmFkIFNRTFNUQVRFOiAnJXMnACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuIFZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQgICVzAENhbid0IGxvYWQgdmFsdWUgZnJvbSBmaWxlIHdpdGggZml4ZWQgc2l6ZSByb3dzIHRvIHZhcmlhYmxlAFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgdXNlciB3aXRoIEdSQU5UAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgZnVuY3Rpb24gJS0uMzJzAFRhYmxlIGRlZmluaXRpb24gaGFzIGNoYW5nZWQsIHBsZWFzZSByZXRyeSB0cmFuc2FjdGlvbgBEdXBsaWNhdGUgaGFuZGxlciBkZWNsYXJlZCBpbiB0aGUgc2FtZSBibG9jawBPVVQgb3IgSU5PVVQgYXJndW1lbnQgJWQgZm9yIHJvdXRpbmUgJXMgaXMgbm90IGEgdmFyaWFibGUgb3IgTkVXIHBzZXVkby12YXJpYWJsZSBpbiBCRUZPUkUgdHJpZ2dlcgBOb3QgYWxsb3dlZCB0byByZXR1cm4gYSByZXN1bHQgc2V0IGZyb20gYSAlcwBDYW5ub3QgZ2V0IGdlb21ldHJ5IG9iamVjdCBmcm9tIGRhdGEgeW91IHNlbmQgdG8gdGhlIEdFT01FVFJZIGZpZWxkAEEgcm91dGluZSBmYWlsZWQgYW5kIGhhcyBuZWl0aGVyIE5PIFNRTCBub3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkOyBpZiBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgd2VyZSB1cGRhdGVkLCB0aGUgYmluYXJ5IGxvZyB3aWxsIG1pc3MgdGhlaXIgY2hhbmdlcwBUaGlzIGZ1bmN0aW9uIGhhcyBub25lIG9mIERFVEVSTUlOSVNUSUMsIE5PIFNRTCwgb3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBkbyBub3QgaGF2ZSB0aGUgU1VQRVIgcHJpdmlsZWdlIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBjYW4ndCBleGVjdXRlIGEgcHJlcGFyZWQgc3RhdGVtZW50IHdoaWNoIGhhcyBhbiBvcGVuIGN1cnNvciBhc3NvY2lhdGVkIHdpdGggaXQuIFJlc2V0IHRoZSBzdGF0ZW1lbnQgdG8gcmUtZXhlY3V0ZSBpdC4AVGhlIHN0YXRlbWVudCAoJWx1KSBoYXMgbm8gb3BlbiBjdXJzb3IuAEV4cGxpY2l0IG9yIGltcGxpY2l0IGNvbW1pdCBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlci4ARmllbGQgb2YgdmlldyAnJS0uMTkycy4lLS4xOTJzJyB1bmRlcmx5aW5nIHRhYmxlIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAUmVjdXJzaXZlIHN0b3JlZCBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBub3QgYWxsb3dlZC4AVG9vIGJpZyBzY2FsZSAlZCBzcGVjaWZpZWQgZm9yIGNvbHVtbiAnJS0uMTkycycuIE1heGltdW0gaXMgJWx1LgBUb28tYmlnIHByZWNpc2lvbiAlZCBzcGVjaWZpZWQgZm9yICclLS4xOTJzJy4gTWF4aW11bSBpcyAlbHUuAEZvciBmbG9hdChNLEQpLCBkb3VibGUoTSxEKSBvciBkZWNpbWFsKE0sRCksIE0gbXVzdCBiZSA+PSBEIChjb2x1bW4gJyUtLjE5MnMnKS4AWW91IGNhbid0IGNvbWJpbmUgd3JpdGUtbG9ja2luZyBvZiBzeXN0ZW0gdGFibGVzIHdpdGggb3RoZXIgdGFibGVzIG9yIGxvY2sgdHlwZXMAVW5hYmxlIHRvIGNvbm5lY3QgdG8gZm9yZWlnbiBkYXRhIHNvdXJjZTogJS42NHMAVGhlcmUgd2FzIGEgcHJvYmxlbSBwcm9jZXNzaW5nIHRoZSBxdWVyeSBvbiB0aGUgZm9yZWlnbiBkYXRhIHNvdXJjZS4gRGF0YSBzb3VyY2UgZXJyb3I6ICUtLjY0cwBUaGUgZm9yZWlnbiBkYXRhIHNvdXJjZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIEZvcmVpZ24gZGF0YSBzcmMgZXJyb3I6ICAlLS42NHMAVHJpZ2dlciBpbiB3cm9uZyBzY2hlbWEAVGhyZWFkIHN0YWNrIG92ZXJydW46ICAlbGQgYnl0ZXMgdXNlZCBvZiBhICVsZCBieXRlIHN0YWNrLCBhbmQgJWxkIGJ5dGVzIG5lZWRlZC4gIFVzZSAnbXlzcWxkIC0tdGhyZWFkX3N0YWNrPSMnIHRvIHNwZWNpZnkgYSBiaWdnZXIgc3RhY2suAFJvdXRpbmUgYm9keSBmb3IgJyUtLjEwMHMnIGlzIHRvbyBsb25nAENhbm5vdCBkcm9wIGRlZmF1bHQga2V5Y2FjaGUARGlzcGxheSB3aWR0aCBvdXQgb2YgcmFuZ2UgZm9yIGNvbHVtbiAnJS0uMTkycycgKG1heCA9ICVsdSkAWEFFUl9EVVBJRDogVGhlIFhJRCBhbHJlYWR5IGV4aXN0cwBEYXRldGltZSBmdW5jdGlvbjogJS0uMzJzIGZpZWxkIG92ZXJmbG93AENhbid0IHVwZGF0ZSB0YWJsZSAnJS0uMTkycycgaW4gc3RvcmVkIGZ1bmN0aW9uL3RyaWdnZXIgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHVzZWQgYnkgc3RhdGVtZW50IHdoaWNoIGludm9rZWQgdGhpcyBzdG9yZWQgZnVuY3Rpb24vdHJpZ2dlci4AVGhlIGRlZmluaXRpb24gb2YgdGFibGUgJyUtLjE5MnMnIHByZXZlbnRzIG9wZXJhdGlvbiAlLjE5MnMgb24gdGFibGUgJyUtLjE5MnMnLgBUaGUgcHJlcGFyZWQgc3RhdGVtZW50IGNvbnRhaW5zIGEgc3RvcmVkIHJvdXRpbmUgY2FsbCB0aGF0IHJlZmVycyB0byB0aGF0IHNhbWUgc3RhdGVtZW50LiBJdCdzIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgaW4gc3VjaCBhIHJlY3Vyc2l2ZSBtYW5uZXIATm90IGFsbG93ZWQgdG8gc2V0IGF1dG9jb21taXQgZnJvbSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAERlZmluZXIgaXMgbm90IGZ1bGx5IHF1YWxpZmllZABWaWV3ICclLS4xOTJzJy4nJS0uMTkycycgaGFzIG5vIGRlZmluZXIgaW5mb3JtYXRpb24gKG9sZCB0YWJsZSBmb3JtYXQpLiBDdXJyZW50IHVzZXIgaXMgdXNlZCBhcyBkZWZpbmVyLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHZpZXchAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNyZWF0aW9uIHZpZXcgd2l0aCAnJS0uMTkycydAJyUtLjE5MnMnIGRlZmluZXIAVGhlIHVzZXIgc3BlY2lmaWVkIGFzIGEgZGVmaW5lciAoJyUtLjY0cydAJyUtLjY0cycpIGRvZXMgbm90IGV4aXN0AENoYW5naW5nIHNjaGVtYSBmcm9tICclLS4xOTJzJyB0byAnJS0uMTkycycgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBkZWxldGUgb3IgdXBkYXRlIGEgcGFyZW50IHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzJS4xOTJzAENhbm5vdCBhZGQgb3IgdXBkYXRlIGEgY2hpbGQgcm93OiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbHMlLjE5MnMAVmFyaWFibGUgJyUtLjY0cycgbXVzdCBiZSBxdW90ZWQgd2l0aCBgLi4uYCwgb3IgcmVuYW1lZABObyBkZWZpbmVyIGF0dHJpYnV0ZSBmb3IgdHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnLiBJdCdzIGRpc2FsbG93ZWQgdG8gY3JlYXRlIHRyaWdnZXIgd2l0aG91dCBkZWZpbmVyLgAnJS0uMTkycycgaGFzIGFuIG9sZCBmb3JtYXQsIHlvdSBzaG91bGQgcmUtY3JlYXRlIHRoZSAnJXMnIG9iamVjdChzKQBSZWN1cnNpdmUgbGltaXQgJWQgKGFzIHNldCBieSB0aGUgbWF4X3NwX3JlY3Vyc2lvbl9kZXB0aCB2YXJpYWJsZSkgd2FzIGV4Y2VlZGVkIGZvciByb3V0aW5lICUuMTkycwBGYWlsZWQgdG8gbG9hZCByb3V0aW5lICUtLjE5MnMuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGUgbWlzc2luZywgY29ycnVwdCwgb3IgY29udGFpbnMgYmFkIGRhdGEgKGludGVybmFsIGNvZGUgJWQpAEluY29ycmVjdCByb3V0aW5lIG5hbWUgJyUtLjE5MnMnAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkbyAiUkVQQUlSIFRBQkxFIGAlLS42NHNgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAEFHR1JFR0FURSBpcyBub3Qgc3VwcG9ydGVkIGZvciBzdG9yZWQgZnVuY3Rpb25zAENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gbWF4X3ByZXBhcmVkX3N0bXRfY291bnQgc3RhdGVtZW50cyAoY3VycmVudCB2YWx1ZTogJWx1KQBgJS0uMTkyc2AuYCUtLjE5MnNgIGNvbnRhaW5zIHZpZXcgcmVjdXJzaW9uAE5vbi1ncm91cGluZyBmaWVsZCAnJS0uMTkycycgaXMgdXNlZCBpbiAlLS42NHMgY2xhdXNlAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IFNQQVRJQUwgaW5kZXhlcwBUcmlnZ2VycyBjYW4gbm90IGJlIGNyZWF0ZWQgb24gc3lzdGVtIHRhYmxlcwBMZWFkaW5nIHNwYWNlcyBhcmUgcmVtb3ZlZCBmcm9tIG5hbWUgJyVzJwBGYWlsZWQgdG8gcmVhZCBhdXRvLWluY3JlbWVudCB2YWx1ZSBmcm9tIHN0b3JhZ2UgZW5naW5lAHVzZXIgbmFtZQBob3N0IG5hbWUAU3RyaW5nICclLS43MHMnIGlzIHRvbyBsb25nIGZvciAlcyAoc2hvdWxkIGJlIG5vIGxvbmdlciB0aGFuICVkKQBUaGUgdGFyZ2V0IHRhYmxlICUtLjEwMHMgb2YgdGhlICVzIGlzIG5vdCBpbnNlcnRhYmxlLWludG8AVGFibGUgJyUtLjY0cycgaXMgZGlmZmVyZW50bHkgZGVmaW5lZCBvciBvZiBub24tTXlJU0FNIHR5cGUgb3IgZG9lc24ndCBleGlzdABUb28gaGlnaCBsZXZlbCBvZiBuZXN0aW5nIGZvciBzZWxlY3QATmFtZSAnJS0uNjRzJyBoYXMgYmVjb21lICcnAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgRklFTERTIFRFUk1JTkFURUQgc3RyaW5nIGlzIGFtYmlndW91czsgcGxlYXNlIHVzZSBub24tb3B0aW9uYWwgYW5kIG5vbi1lbXB0eSBGSUVMRFMgRU5DTE9TRUQgQlkAVGhlIGZvcmVpZ24gc2VydmVyLCAlcywgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGFscmVhZHkgZXhpc3RzLgBUaGUgZm9yZWlnbiBzZXJ2ZXIgbmFtZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJyUuNjRzJwBTeW50YXggZXJyb3I6ICUtLjY0cyBQQVJUSVRJT05JTkcgcmVxdWlyZXMgZGVmaW5pdGlvbiBvZiBWQUxVRVMgJS0uNjRzIGZvciBlYWNoIHBhcnRpdGlvbgBPbmx5ICUtLjY0cyBQQVJUSVRJT05JTkcgY2FuIHVzZSBWQUxVRVMgJS0uNjRzIGluIHBhcnRpdGlvbiBkZWZpbml0aW9uAE1BWFZBTFVFIGNhbiBvbmx5IGJlIHVzZWQgaW4gbGFzdCBwYXJ0aXRpb24gZGVmaW5pdGlvbgBTdWJwYXJ0aXRpb25zIGNhbiBvbmx5IGJlIGhhc2ggcGFydGl0aW9ucyBhbmQgYnkga2V5AE11c3QgZGVmaW5lIHN1YnBhcnRpdGlvbnMgb24gYWxsIHBhcnRpdGlvbnMgaWYgb24gb25lIHBhcnRpdGlvbgBXcm9uZyBudW1iZXIgb2YgcGFydGl0aW9ucyBkZWZpbmVkLCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIHNldHRpbmcAV3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMgZGVmaW5lZCwgbWlzbWF0Y2ggd2l0aCBwcmV2aW91cyBzZXR0aW5nAENvbnN0YW50LCByYW5kb20gb3IgdGltZXpvbmUtZGVwZW5kZW50IGV4cHJlc3Npb25zIGluIChzdWIpcGFydGl0aW9uaW5nIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZABFeHByZXNzaW9uIGluIFJBTkdFL0xJU1QgVkFMVUVTIG11c3QgYmUgY29uc3RhbnQARmllbGQgaW4gbGlzdCBvZiBmaWVsZHMgZm9yIHBhcnRpdGlvbiBmdW5jdGlvbiBub3QgZm91bmQgaW4gdGFibGUATGlzdCBvZiBmaWVsZHMgaXMgb25seSBhbGxvd2VkIGluIEtFWSBwYXJ0aXRpb25zAFRoZSBwYXJ0aXRpb24gaW5mbyBpbiB0aGUgZnJtIGZpbGUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB3aGF0IGNhbiBiZSB3cml0dGVuIGludG8gdGhlIGZybSBmaWxlAFRoZSAlLS4xOTJzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHdyb25nIHR5cGUARm9yICUtLjY0cyBwYXJ0aXRpb25zIGVhY2ggcGFydGl0aW9uIG11c3QgYmUgZGVmaW5lZABWQUxVRVMgTEVTUyBUSEFOIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgaW5jcmVhc2luZyBmb3IgZWFjaCBwYXJ0aXRpb24AVkFMVUVTIHZhbHVlIG11c3QgYmUgb2Ygc2FtZSB0eXBlIGFzIHBhcnRpdGlvbiBmdW5jdGlvbgBNdWx0aXBsZSBkZWZpbml0aW9uIG9mIHNhbWUgY29uc3RhbnQgaW4gbGlzdCBwYXJ0aXRpb25pbmcAUGFydGl0aW9uaW5nIGNhbiBub3QgYmUgdXNlZCBzdGFuZC1hbG9uZSBpbiBxdWVyeQBUaGUgbWl4IG9mIGhhbmRsZXJzIGluIHRoZSBwYXJ0aXRpb25zIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgdmVyc2lvbiBvZiBNeVNRTABGb3IgdGhlIHBhcnRpdGlvbmVkIGVuZ2luZSBpdCBpcyBuZWNlc3NhcnkgdG8gZGVmaW5lIGFsbCAlLS42NHMAVG9vIG1hbnkgcGFydGl0aW9ucyAoaW5jbHVkaW5nIHN1YnBhcnRpdGlvbnMpIHdlcmUgZGVmaW5lZABJdCBpcyBvbmx5IHBvc3NpYmxlIHRvIG1peCBSQU5HRS9MSVNUIHBhcnRpdGlvbmluZyB3aXRoIEhBU0gvS0VZIHBhcnRpdGlvbmluZyBmb3Igc3VicGFydGl0aW9uaW5nAEZhaWxlZCB0byBjcmVhdGUgc3BlY2lmaWMgaGFuZGxlciBmaWxlAEEgQkxPQiBmaWVsZCBpcyBub3QgYWxsb3dlZCBpbiBwYXJ0aXRpb24gZnVuY3Rpb24AQSAlLS4xOTJzIG11c3QgaW5jbHVkZSBhbGwgY29sdW1ucyBpbiB0aGUgdGFibGUncyBwYXJ0aXRpb25pbmcgZnVuY3Rpb24gKHByZWZpeGVkIGNvbHVtbnMgYXJlIG5vdCBjb25zaWRlcmVkKS4ATnVtYmVyIG9mICUtLjY0cyA9IDAgaXMgbm90IGFuIGFsbG93ZWQgdmFsdWUAUGFydGl0aW9uIG1hbmFnZW1lbnQgb24gYSBub3QgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHBvc3NpYmxlAEZvcmVpZ24ga2V5cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBwYXJ0aXRpb25pbmcARXJyb3IgaW4gbGlzdCBvZiBwYXJ0aXRpb25zIHRvICUtLjY0cwBDYW5ub3QgcmVtb3ZlIGFsbCBwYXJ0aXRpb25zLCB1c2UgRFJPUCBUQUJMRSBpbnN0ZWFkAENPQUxFU0NFIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIG9uIEhBU0gvS0VZIHBhcnRpdGlvbnMAUkVPUkdBTklaRSBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCB0byByZW9yZ2FuaXplIHBhcnRpdGlvbnMgbm90IHRvIGNoYW5nZSB0aGVpciBudW1iZXJzAFJFT1JHQU5JWkUgUEFSVElUSU9OIHdpdGhvdXQgcGFyYW1ldGVycyBjYW4gb25seSBiZSB1c2VkIG9uIGF1dG8tcGFydGl0aW9uZWQgdGFibGVzIHVzaW5nIEhBU0ggUEFSVElUSU9OcwAlLS42NHMgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgb24gUkFOR0UvTElTVCBwYXJ0aXRpb25zAFRyeWluZyB0byBBZGQgcGFydGl0aW9uKHMpIHdpdGggd3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMAQXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBtdXN0IGJlIGFkZGVkAEF0IGxlYXN0IG9uZSBwYXJ0aXRpb24gbXVzdCBiZSBjb2FsZXNjZWQATW9yZSBwYXJ0aXRpb25zIHRvIHJlb3JnYW5pemUgdGhhbiB0aGVyZSBhcmUgcGFydGl0aW9ucwBEdXBsaWNhdGUgcGFydGl0aW9uIG5hbWUgJS0uMTkycwBJdCBpcyBub3QgYWxsb3dlZCB0byBzaHV0IG9mZiBiaW5sb2cgb24gdGhpcyBjb21tYW5kAFdoZW4gcmVvcmdhbml6aW5nIGEgc2V0IG9mIHBhcnRpdGlvbnMgdGhleSBtdXN0IGJlIGluIGNvbnNlY3V0aXZlIG9yZGVyAFJlb3JnYW5pemUgb2YgcmFuZ2UgcGFydGl0aW9ucyBjYW5ub3QgY2hhbmdlIHRvdGFsIHJhbmdlcyBleGNlcHQgZm9yIGxhc3QgcGFydGl0aW9uIHdoZXJlIGl0IGNhbiBleHRlbmQgdGhlIHJhbmdlAFBhcnRpdGlvbiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBmb3IgdGhpcyBoYW5kbGVyAFBhcnRpdGlvbiBzdGF0ZSBjYW5ub3QgYmUgZGVmaW5lZCBmcm9tIENSRUFURS9BTFRFUiBUQUJMRQBUaGUgJS0uNjRzIGhhbmRsZXIgb25seSBzdXBwb3J0cyAzMiBiaXQgaW50ZWdlcnMgaW4gVkFMVUVTAFBsdWdpbiAnJS0uMTkycycgaXMgbm90IGxvYWRlZABJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycAVGFibGUgaGFzIG5vIHBhcnRpdGlvbiBmb3IgdmFsdWUgJS0uNjRzAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgJXMgbW9yZSB0aGFuIG9uY2UARmFpbGVkIHRvIGNyZWF0ZSAlcwBGYWlsZWQgdG8gZHJvcCAlcwBUaGUgaGFuZGxlciBkb2Vzbid0IHN1cHBvcnQgYXV0b2V4dGVuZCBvZiB0YWJsZXNwYWNlcwBBIHNpemUgcGFyYW1ldGVyIHdhcyBpbmNvcnJlY3RseSBzcGVjaWZpZWQsIGVpdGhlciBudW1iZXIgb3Igb24gdGhlIGZvcm0gMTBNAFRoZSBzaXplIG51bWJlciB3YXMgY29ycmVjdCBidXQgd2UgZG9uJ3QgYWxsb3cgdGhlIGRpZ2l0IHBhcnQgdG8gYmUgbW9yZSB0aGFuIDIgYmlsbGlvbgBGYWlsZWQgdG8gYWx0ZXI6ICVzAFdyaXRpbmcgb25lIHJvdyB0byB0aGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZmFpbGVkAFRhYmxlIGRlZmluaXRpb24gb24gc291cmNlIGFuZCByZXBsaWNhIGRvZXMgbm90IG1hdGNoOiAlcwBSZXBsaWNhIHJ1bm5pbmcgd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgbXVzdCB1c2Ugcm93LWJhc2VkIGJpbmFyeSBsb2dnaW5nIHRvIGJlIGFibGUgdG8gcmVwbGljYXRlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGV2ZW50cwBFdmVudCAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMARmFpbGVkIHRvIHN0b3JlIGV2ZW50ICVzLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAFVua25vd24gZXZlbnQgJyUtLjE5MnMnAEZhaWxlZCB0byBhbHRlciBldmVudCAnJS0uMTkycycARmFpbGVkIHRvIGRyb3AgJXMASU5URVJWQUwgaXMgZWl0aGVyIG5vdCBwb3NpdGl2ZSBvciB0b28gYmlnAEVORFMgaXMgZWl0aGVyIGludmFsaWQgb3IgYmVmb3JlIFNUQVJUUwBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdC4gRXZlbnQgaGFzIGJlZW4gZGlzYWJsZWQARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQATm8gZGF0ZXRpbWUgZXhwcmVzc2lvbiBwcm92aWRlZABDb2x1bW4gY291bnQgb2YgbXlzcWwuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZABDYW5ub3QgbG9hZCBmcm9tIG15c3FsLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAEZhaWxlZCB0byBkZWxldGUgdGhlIGV2ZW50IGZyb20gbXlzcWwuZXZlbnQARXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIGV2ZW50J3MgYm9keQBTYW1lIG9sZCBhbmQgbmV3IGV2ZW50IG5hbWUARGF0YSBmb3IgY29sdW1uICclcycgdG9vIGxvbmcAQ2Fubm90IGRyb3AgaW5kZXggJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50AFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTXlTUUwgJXMuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZABZb3UgY2FuJ3Qgd3JpdGUtbG9jayBhIGxvZyB0YWJsZS4gT25seSByZWFkIGFjY2VzcyBpcyBwb3NzaWJsZQBZb3UgY2FuJ3QgdXNlIGxvY2tzIHdpdGggbG9nIHRhYmxlcy4AVXBob2xkaW5nIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGZvciB0YWJsZSAnJS4xOTJzJywgZW50cnkgJyUtLjE5MnMnLCBrZXkgJWQgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeQBUaGUgY29sdW1uIGNvdW50IG9mIG15c3FsLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ2Fubm90IHN3aXRjaCBvdXQgb2YgdGhlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGZvcm1hdCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZXMAQ2Fubm90IGNoYW5nZSB0aGUgYmluYXJ5IGxvZ2dpbmcgZm9ybWF0IGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFRoZSBOREIgY2x1c3RlciBlbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgYmlubG9nIGZvcm1hdCBvbiB0aGUgZmx5IHlldABDYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHBhcnRpdGlvbnMAUGFydGl0aW9uIGNvbnN0YW50IGlzIG91dCBvZiBwYXJ0aXRpb24gZnVuY3Rpb24gZG9tYWluAFRoaXMgcGFydGl0aW9uIGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkAEVycm9yIGluIERETCBsb2cATm90IGFsbG93ZWQgdG8gdXNlIE5VTEwgdmFsdWUgaW4gVkFMVUVTIExFU1MgVEhBTgBJbmNvcnJlY3QgcGFydGl0aW9uIG5hbWUAVHJhbnNhY3Rpb24gY2hhcmFjdGVyaXN0aWNzIGNhbid0IGJlIGNoYW5nZWQgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcwBBTFRFUiBUQUJMRSBjYXVzZXMgYXV0b19pbmNyZW1lbnQgcmVzZXF1ZW5jaW5nLCByZXN1bHRpbmcgaW4gZHVwbGljYXRlIGVudHJ5ICclLS4xOTJzJyBmb3Iga2V5ICclLS4xOTJzJwBJbnRlcm5hbCBzY2hlZHVsZXIgZXJyb3IgJWQARXJyb3IgZHVyaW5nIHN0YXJ0aW5nL3N0b3BwaW5nIG9mIHRoZSBzY2hlZHVsZXIuIEVycm9yIGNvZGUgJXUARW5naW5lIGNhbm5vdCBiZSB1c2VkIGluIHBhcnRpdGlvbmVkIHRhYmxlcwBDYW5ub3QgYWN0aXZhdGUgJyUtLjY0cycgbG9nAFRoZSBzZXJ2ZXIgd2FzIG5vdCBidWlsdCB3aXRoIHJvdy1iYXNlZCByZXBsaWNhdGlvbgBEZWNvZGluZyBvZiBiYXNlNjQgc3RyaW5nIGZhaWxlZABSZWN1cnNpb24gb2YgRVZFTlQgRERMIHN0YXRlbWVudHMgaXMgZm9yYmlkZGVuIHdoZW4gYm9keSBpcyBwcmVzZW50AENhbm5vdCBwcm9jZWVkIGJlY2F1c2Ugc3lzdGVtIHRhYmxlcyB1c2VkIGJ5IEV2ZW50IFNjaGVkdWxlciB3ZXJlIGZvdW5kIGRhbWFnZWQgYXQgc2VydmVyIHN0YXJ0AE9ubHkgaW50ZWdlcnMgYWxsb3dlZCBhcyBudW1iZXIgaGVyZQBUaGlzIHN0b3JhZ2UgZW5naW5lIGNhbm5vdCBiZSB1c2VkIGZvciBsb2cgdGFibGVzAFlvdSBjYW5ub3QgJyVzJyBhIGxvZyB0YWJsZSBpZiBsb2dnaW5nIGlzIGVuYWJsZWQAQ2Fubm90IHJlbmFtZSAnJXMnLiBXaGVuIGxvZ2dpbmcgZW5hYmxlZCwgcmVuYW1lIHRvL2Zyb20gbG9nIHRhYmxlIG11c3QgcmVuYW1lIHR3byB0YWJsZXM6IHRoZSBsb2cgdGFibGUgdG8gYW4gYXJjaGl2ZSB0YWJsZSBhbmQgYW5vdGhlciB0YWJsZSBiYWNrIHRvICclcycASW5jb3JyZWN0IHBhcmFtZXRlciBjb3VudCBpbiB0aGUgY2FsbCB0byBuYXRpdmUgZnVuY3Rpb24gJyUtLjE5MnMnAEluY29ycmVjdCBwYXJhbWV0ZXJzIGluIHRoZSBjYWxsIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gdGhlIGNhbGwgdG8gc3RvcmVkIGZ1bmN0aW9uICUtLjE5MnMAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24A7KSR67O165CcIOyeheugpSDqsJIgJyUtLjY0cyc6IGtleSAnJS0uMzg1cycAVG9vIG1hbnkgZmlsZXMgb3BlbmVkLCBwbGVhc2UgZXhlY3V0ZSB0aGUgY29tbWFuZCBhZ2FpbgBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdCBhbmQgT04gQ09NUExFVElPTiBOT1QgUFJFU0VSVkUgaXMgc2V0LiBUaGUgZXZlbnQgd2FzIGRyb3BwZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpb24uAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0IGFuZCBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBpcyBzZXQuIFRoZSBldmVudCB3YXMgbm90IGNoYW5nZWQuIFNwZWNpZnkgYSB0aW1lIGluIHRoZSBmdXR1cmUuAFRoZSBpbmNpZGVudCAlcyBvY2N1cnJlZCBvbiB0aGUgc291cmNlLiBNZXNzYWdlOiAlcwBUYWJsZSBoYXMgbm8gcGFydGl0aW9uIGZvciBzb21lIGV4aXN0aW5nIHZhbHVlcwBVbnNhZmUgc3RhdGVtZW50IHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgdXNpbmcgc3RhdGVtZW50IGZvcm1hdCBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULiAlcwBGYXRhbCBlcnJvcjogJXMAUmVsYXkgbG9nIHJlYWQgZmFpbHVyZTogJXMAUmVsYXkgbG9nIHdyaXRlIGZhaWx1cmU6ICVzAEZhaWxlZCB0byBjcmVhdGUgJXMAU291cmNlIGNvbW1hbmQgJXMgZmFpbGVkOiAlcwBCaW5hcnkgbG9nZ2luZyBub3QgcG9zc2libGUuIE1lc3NhZ2U6ICVzAFZpZXcgYCUtLjY0c2AuYCUtLjY0c2AgaGFzIG5vIGNyZWF0aW9uIGNvbnRleHQAQ3JlYXRpb24gY29udGV4dCBvZiB2aWV3IGAlLS42NHNgLmAlLS42NHMnIGlzIGludmFsaWQAQ3JlYXRpb24gY29udGV4dCBvZiBzdG9yZWQgcm91dGluZSBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENvcnJ1cHRlZCBUUkcgZmlsZSBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AAVHJpZ2dlcnMgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGhhdmUgbm8gY3JlYXRpb24gY29udGV4dABUcmlnZ2VyIGNyZWF0aW9uIGNvbnRleHQgb2YgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDcmVhdGlvbiBjb250ZXh0IG9mIGV2ZW50IGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ2Fubm90IG9wZW4gdGFibGUgZm9yIHRyaWdnZXIgYCUtLjY0c2AuYCUtLjY0c2AAQ2Fubm90IGNyZWF0ZSBzdG9yZWQgcm91dGluZSBgJS0uNjRzYC4gQ2hlY2sgd2FybmluZ3MAQW1iaWd1b3VzIHJlcGxpY2EgbW9kZXMgY29tYmluYXRpb24uICVzAFRoZSBCSU5MT0cgc3RhdGVtZW50IG9mIHR5cGUgYCVzYCB3YXMgbm90IHByZWNlZGVkIGJ5IGEgZm9ybWF0IGRlc2NyaXB0aW9uIEJJTkxPRyBzdGF0ZW1lbnQuAENvcnJ1cHRlZCByZXBsaWNhdGlvbiBldmVudCB3YXMgZGV0ZWN0ZWQASW52YWxpZCBjb2x1bW4gcmVmZXJlbmNlICglLS42NHMpIGluIExPQUQgREFUQQBCZWluZyBwdXJnZWQgbG9nICVzIHdhcyBub3QgZm91bmQAWEFfUkJUSU1FT1VUOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrOiB0b29rIHRvbyBsb25nAFhBX1JCREVBRExPQ0s6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2s6IGRlYWRsb2NrIHdhcyBkZXRlY3RlZABQcmVwYXJlZCBzdGF0ZW1lbnQgbmVlZHMgdG8gYmUgcmUtcHJlcGFyZWQAREVMQVlFRCBvcHRpb24gbm90IHN1cHBvcnRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAFRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdAA8JS0uNjRzPiBvcHRpb24gaWdub3JlZABCdWlsdC1pbiBwbHVnaW5zIGNhbm5vdCBiZSBkZWxldGVkAFBsdWdpbiBpcyBidXN5IGFuZCB3aWxsIGJlIHVuaW5zdGFsbGVkIG9uIHNodXRkb3duACVzIHZhcmlhYmxlICclcycgaXMgcmVhZC1vbmx5LiBVc2UgU0VUICVzIHRvIGFzc2lnbiB0aGUgdmFsdWUAU3RvcmFnZSBlbmdpbmUgJXMgZG9lcyBub3Qgc3VwcG9ydCByb2xsYmFjayBmb3IgdGhpcyBzdGF0ZW1lbnQuIFRyYW5zYWN0aW9uIHJvbGxlZCBiYWNrIGFuZCBtdXN0IGJlIHJlc3RhcnRlZABVbmV4cGVjdGVkIHNvdXJjZSdzIGhlYXJ0YmVhdCBkYXRhOiAlcwBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBpcyBlaXRoZXIgbmVnYXRpdmUgb3IgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICglcyBzZWNvbmRzKS4AQmFkIHNjaGVtYSBmb3IgbXlzcWwubmRiX3JlcGxpY2F0aW9uIHRhYmxlLiBNZXNzYWdlOiAlLS42NHMARXJyb3IgaW4gcGFyc2luZyBjb25mbGljdCBmdW5jdGlvbi4gTWVzc2FnZTogJS0uNjRzAFdyaXRlIHRvIGV4Y2VwdGlvbnMgdGFibGUgZmFpbGVkLiBNZXNzYWdlOiAlLS4xMjhzAENvbW1lbnQgZm9yIHRhYmxlICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAENvbW1lbnQgZm9yIGZpZWxkICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAEZVTkNUSU9OICVzIGRvZXMgbm90IGV4aXN0LiBDaGVjayB0aGUgJ0Z1bmN0aW9uIE5hbWUgUGFyc2luZyBhbmQgUmVzb2x1dGlvbicgc2VjdGlvbiBpbiB0aGUgUmVmZXJlbmNlIE1hbnVhbABEYXRhYmFzZQBUYWJsZQBQYXJ0aXRpb24AU3VicGFydGl0aW9uAFRlbXBvcmFyeQBSZW5hbWVkAFRvbyBtYW55IGFjdGl2ZSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucwBOb24tQVNDSUkgc2VwYXJhdG9yIGFyZ3VtZW50cyBhcmUgbm90IGZ1bGx5IHN1cHBvcnRlZABkZWJ1ZyBzeW5jIHBvaW50IHdhaXQgdGltZWQgb3V0AGRlYnVnIHN5bmMgcG9pbnQgaGl0IGxpbWl0IHJlYWNoZWQARHVwbGljYXRlIGNvbmRpdGlvbiBpbmZvcm1hdGlvbiBpdGVtICclcycAVW5oYW5kbGVkIHVzZXItZGVmaW5lZCB3YXJuaW5nIGNvbmRpdGlvbgBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3VuZCBjb25kaXRpb24AVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24gY29uZGl0aW9uAFJFU0lHTkFMIHdoZW4gaGFuZGxlciBub3QgYWN0aXZlAFNJR05BTC9SRVNJR05BTCBjYW4gb25seSB1c2UgYSBDT05ESVRJT04gZGVmaW5lZCB3aXRoIFNRTFNUQVRFAERhdGEgdHJ1bmNhdGVkIGZvciBjb25kaXRpb24gaXRlbSAnJXMnAERhdGEgdG9vIGxvbmcgZm9yIGNvbmRpdGlvbiBpdGVtICclcycAVW5rbm93biBsb2NhbGU6ICclLS42NHMnAFRoZSByZXF1ZXN0ZWQgc2VydmVyIGlkICVkIGNsYXNoZXMgd2l0aCB0aGUgcmVwbGljYSBzdGFydHVwIG9wdGlvbiAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZABRdWVyeSBjYWNoZSBpcyBkaXNhYmxlZDsgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggcXVlcnlfY2FjaGVfdHlwZT0xIHRvIGVuYWJsZSBpdABEdXBsaWNhdGUgcGFydGl0aW9uIGZpZWxkIG5hbWUgJyUtLjE5MnMnAEluY29uc2lzdGVuY3kgaW4gdXNhZ2Ugb2YgY29sdW1uIGxpc3RzIGZvciBwYXJ0aXRpb25pbmcAUGFydGl0aW9uIGNvbHVtbiB2YWx1ZXMgb2YgaW5jb3JyZWN0IHR5cGUAVG9vIG1hbnkgZmllbGRzIGluICclLS4xOTJzJwBDYW5ub3QgdXNlIE1BWFZBTFVFIGFzIHZhbHVlIGluIFZBTFVFUyBJTgBDYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIHZhbHVlIGZvciB0aGlzIHR5cGUgb2YgJS0uNjRzIHBhcnRpdGlvbmluZwBSb3cgZXhwcmVzc2lvbnMgaW4gVkFMVUVTIElOIG9ubHkgYWxsb3dlZCBmb3IgbXVsdGktZmllbGQgY29sdW1uIHBhcnRpdGlvbmluZwBGaWVsZCAnJS0uMTkycycgaXMgb2YgYSBub3QgYWxsb3dlZCB0eXBlIGZvciB0aGlzIHR5cGUgb2YgcGFydGl0aW9uaW5nAFRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIHBhcnRpdGlvbmluZyBmaWVsZHMgaXMgdG9vIGxhcmdlAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIGJvdGggcm93LWluY2FwYWJsZSBlbmdpbmVzIGFuZCBzdGF0ZW1lbnQtaW5jYXBhYmxlIGVuZ2luZXMgYXJlIGludm9sdmVkLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gUk9XIGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyB1bnNhZmUsIHN0b3JhZ2UgZW5naW5lIGlzIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcsIGFuZCBCSU5MT0dfRk9STUFUID0gTUlYRUQuICVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyBpbiByb3cgZm9ybWF0IGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byByb3ctYmFzZWQgbG9nZ2luZy4lcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgaW4gcm93IGZvcm1hdCBhbmQgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVC4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgbW9yZSB0aGFuIG9uZSBlbmdpbmUgaXMgaW52b2x2ZWQgYW5kIGF0IGxlYXN0IG9uZSBlbmdpbmUgaXMgc2VsZi1sb2dnaW5nLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBMSU1JVCBjbGF1c2UuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIHNldCBvZiByb3dzIGluY2x1ZGVkIGNhbm5vdCBiZSBwcmVkaWN0ZWQuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBJTlNFUlQgREVMQVlFRC4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgdGltZXMgd2hlbiByb3dzIGFyZSBpbnNlcnRlZCBjYW5ub3QgYmUgcHJlZGljdGVkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgdGhlIGdlbmVyYWwgbG9nLCBzbG93IHF1ZXJ5IGxvZywgb3IgcGVyZm9ybWFuY2Vfc2NoZW1hIHRhYmxlKHMpLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHN5c3RlbSB0YWJsZXMgbWF5IGRpZmZlciBvbiByZXBsaWNhcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGludm9rZXMgYSB0cmlnZ2VyIG9yIGEgc3RvcmVkIGZ1bmN0aW9uIHRoYXQgaW5zZXJ0cyBpbnRvIGFuIEFVVE9fSU5DUkVNRU5UIGNvbHVtbi4gSW5zZXJ0ZWQgdmFsdWVzIGNhbm5vdCBiZSBsb2dnZWQgY29ycmVjdGx5LgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIFVERiB3aGljaCBtYXkgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gdmFyaWFibGUgdGhhdCBtYXkgaGF2ZSBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgYWNjZXNzZXMgYSBub24tdHJhbnNhY3Rpb25hbCB0YWJsZSBhZnRlciBhY2Nlc3NpbmcgYSB0cmFuc2FjdGlvbmFsIHRhYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4AJXMgU3RhdGVtZW50OiAlcwBDb2x1bW4gJWQgb2YgdGFibGUgJyUtLjE5MnMuJS0uMTkycycgY2Fubm90IGJlIGNvbnZlcnRlZCBmcm9tIHR5cGUgJyUtLjMycycgdG8gdHlwZSAnJS0uMzJzJwBDYW4ndCBjcmVhdGUgY29udmVyc2lvbiB0YWJsZSBmb3IgdGFibGUgJyUtLjE5MnMuJS0uMTkycycAQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdCBpbnNpZGUgYSB0cmFuc2FjdGlvbgBUaGUgcGF0aCBzcGVjaWZpZWQgZm9yICUuNjRzIGlzIHRvbyBsb25nLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBOYXRpdmUgdGFibGUgJyUtLjY0cycuJyUtLjY0cycgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmUASW52YWxpZCBwZXJmb3JtYW5jZV9zY2hlbWEgdXNhZ2UuAFRhYmxlICclcycuJyVzJyB3YXMgc2tpcHBlZCBzaW5jZSBpdHMgZGVmaW5pdGlvbiBpcyBiZWluZyBtb2RpZmllZCBieSBjb25jdXJyZW50IERETCBzdGF0ZW1lbnQAQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uYmlubG9nX2RpcmVjdF9ub25fdHJhbnNhY3Rpb25hbF91cGRhdGVzIGluc2lkZSBhIHRyYW5zYWN0aW9uAENhbm5vdCBjaGFuZ2UgdGhlIGJpbmxvZyBkaXJlY3QgZmxhZyBpbnNpZGUgYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBBIFNQQVRJQUwgaW5kZXggbWF5IG9ubHkgY29udGFpbiBhIGdlb21ldHJpY2FsIHR5cGUgY29sdW1uAENvbW1lbnQgZm9yIGluZGV4ICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFdhaXQgb24gYSBsb2NrIHdhcyBhYm9ydGVkIGR1ZSB0byBhIHBlbmRpbmcgZXhjbHVzaXZlIGxvY2sAJXMgdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGluICclcycAQSB2YXJpYWJsZSBvZiBhIG5vbi1pbnRlZ2VyIGJhc2VkIHR5cGUgaW4gTElNSVQgY2xhdXNlAE1peGluZyBzZWxmLWxvZ2dpbmcgYW5kIG5vbi1zZWxmLWxvZ2dpbmcgZW5naW5lcyBpbiBhIHN0YXRlbWVudCBpcyB1bnNhZmUuAFN0YXRlbWVudCBhY2Nlc3NlcyBub250cmFuc2FjdGlvbmFsIHRhYmxlIGFzIHdlbGwgYXMgdHJhbnNhY3Rpb25hbCBvciB0ZW1wb3JhcnkgdGFibGUsIGFuZCB3cml0ZXMgdG8gYW55IG9mIHRoZW0uAENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLnNxbF9sb2dfYmluIGluc2lkZSBhIHRyYW5zYWN0aW9uAENhbm5vdCBjaGFuZ2UgdGhlIHNxbF9sb2dfYmluIGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAEZhaWxlZCB0byByZWFkIGZyb20gdGhlIC5wYXIgZmlsZQBWQUxVRVMgdmFsdWUgZm9yIHBhcnRpdGlvbiAnJS0uNjRzJyBtdXN0IGhhdmUgdHlwZSBJTlQAJyUtLjQ4cydAJyUtLjY0cycg7IKs7Jqp7J6Q64qUIOygkeq3vOydtCDqsbDrtoAg65CY7JeI7Iq164uI64ukLgBTRVQgUEFTU1dPUkQgaGFzIG5vIHNpZ25pZmljYW5jZSBmb3IgdXNlcnMgYXV0aGVudGljYXRpbmcgdmlhIHBsdWdpbnMAR1JBTlQgd2l0aCBJREVOVElGSUVEIFdJVEggaXMgaWxsZWdhbCBiZWNhdXNlIHRoZSB1c2VyICUtLipzIGFscmVhZHkgZXhpc3RzAENhbm5vdCB0cnVuY2F0ZSBhIHRhYmxlIHJlZmVyZW5jZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICglLjE5MnMpAFBsdWdpbiAnJXMnIGlzIGZvcmNlX3BsdXNfcGVybWFuZW50IGFuZCBjYW4gbm90IGJlIHVubG9hZGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgZm9yIHRoZSBoZWFydGJlYXQgcGVyaW9kIGlzIGxlc3MgdGhhbiAxIG1pbGxpc2Vjb25kLiBUaGUgdmFsdWUgaXMgcmVzZXQgdG8gMCwgbWVhbmluZyB0aGF0IGhlYXJ0YmVhdGluZyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGRpc2FibGVkLgBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBleGNlZWRzIHRoZSB2YWx1ZSBvZiBgcmVwbGljYV9uZXRfdGltZW91dCcgc2Vjb25kcy4gQSBzZW5zaWJsZSB2YWx1ZSBmb3IgdGhlIHBlcmlvZCBzaG91bGQgYmUgbGVzcyB0aGFuIHRoZSB0aW1lb3V0LgBNdWx0aS1yb3cgc3RhdGVtZW50cyByZXF1aXJlZCBtb3JlIHRoYW4gJ21heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplJyBieXRlcyBvZiBzdG9yYWdlOyBpbmNyZWFzZSB0aGlzIG15c3FsZCB2YXJpYWJsZSBhbmQgdHJ5IGFnYWluAFByaW1hcnkga2V5L3BhcnRpdGlvbiBrZXkgdXBkYXRlIGlzIG5vdCBhbGxvd2VkIHNpbmNlIHRoZSB0YWJsZSBpcyB1cGRhdGVkIGJvdGggYXMgJyUtLjE5MnMnIGFuZCAnJS0uMTkycycuAFRhYmxlIHJlYnVpbGQgcmVxdWlyZWQuIFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCUtLjY0c2AgRk9SQ0UiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAVGhlIHZhbHVlIG9mICclcycgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgJyVzJwBJbmRleCBjb2x1bW4gc2l6ZSB0b28gbGFyZ2UuIFRoZSBtYXhpbXVtIGNvbHVtbiBzaXplIGlzICVsdSBieXRlcy4AVHJpZ2dlciAnJS0uNjRzJyBoYXMgYW4gZXJyb3IgaW4gaXRzIGJvZHk6ICclLS4yNTZzJwBVbmtub3duIHRyaWdnZXIgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycASW5kZXggJXMgaXMgY29ycnVwdGVkAFVuZG8gbG9nIHJlY29yZCBpcyB0b28gYmlnLgBJTlNFUlQgSUdOT1JFLi4uIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIFNFTEVDVC4uLiBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSB1cGRhdGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUkVQTEFDRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgcmVwbGFjZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUuLi4gSUdOT1JFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIFJFUExBQ0UgU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AVVBEQVRFIElHTk9SRSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgdXBkYXRlZCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGlnbm9yZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IHVuaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byB1bmluc3RhbGwgaXQuAFBsdWdpbiAnJXMnIGlzIG1hcmtlZCBhcyBub3QgZHluYW1pY2FsbHkgaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byBpbnN0YWxsIGl0LgBTdGF0ZW1lbnRzIHdyaXRpbmcgdG8gYSB0YWJsZSB3aXRoIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbiBhZnRlciBzZWxlY3RpbmcgZnJvbSBhbm90aGVyIHRhYmxlIGFyZSB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGRldGVybWluZXMgd2hhdCAoaWYgYW55KSByb3dzIHdpbGwgYmUgd3JpdHRlbi4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURSBUQUJMRS4uLiBTRUxFQ1QuLi4gIG9uIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaW5zZXJ0ZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBJTlNFUlQuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgIG9uIGEgdGFibGUgd2l0aCBtb3JlIHRoYW4gb25lIFVOSVFVRSBLRVkgaXMgdW5zYWZlAFRhYmxlIGlzIGJlaW5nIHVzZWQgaW4gZm9yZWlnbiBrZXkgY2hlY2suAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdAElOU0VSVCBpbnRvIGF1dG9pbmNyZW1lbnQgZmllbGQgd2hpY2ggaXMgbm90IHRoZSBmaXJzdCBwYXJ0IGluIHRoZSBjb21wb3NlZCBwcmltYXJ5IGtleSBpcyB1bnNhZmUuAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAVGhlIHJlcXVlc3RlZCB2YWx1ZSAlcyBmb3IgdGhlIHNvdXJjZSBkZWxheSBleGNlZWRzIHRoZSBtYXhpbXVtICV1AE9ubHkgRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBhbmQgcm93IGV2ZW50cyBhcmUgYWxsb3dlZCBpbiBCSU5MT0cgc3RhdGVtZW50cyAoYnV0ICVzIHdhcyBwcm92aWRlZCkATm9uIG1hdGNoaW5nIGF0dHJpYnV0ZSAnJS0uNjRzJyBiZXR3ZWVuIHBhcnRpdGlvbiBhbmQgdGFibGUAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaXMgcGFydGl0aW9uZWQ6ICclLS42NHMnAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHRlbXBvcmFyeTogJyUtLjY0cycAU3VicGFydGl0aW9uZWQgdGFibGUsIHVzZSBzdWJwYXJ0aXRpb24gaW5zdGVhZCBvZiBwYXJ0aXRpb24AVW5rbm93biBwYXJ0aXRpb24gJyUtLjY0cycgaW4gdGFibGUgJyUtLjY0cycAVGFibGVzIGhhdmUgZGlmZmVyZW50IGRlZmluaXRpb25zAEZvdW5kIGEgcm93IHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHBhcnRpdGlvbgBPcHRpb24gYmlubG9nX2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX2NhY2hlX3NpemUuAENhbm5vdCB1c2UgJS0uNjRzIGFjY2VzcyBvbiBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbiBvbiBmaWVsZCAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBoYXMgZm9yZWlnbiBrZXkgcmVmZXJlbmNlczogJyUtLjY0cycAS2V5IHZhbHVlICclLS4xOTJzJyB3YXMgbm90IGZvdW5kIGluIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnAERhdGEgZm9yIGNvbHVtbiAnJXMnIHRvbyBsb25nAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIGEgbG9nIGZpbGUuAE9wdGlvbiBiaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfc3RtdF9jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplLgBDYW4ndCB1cGRhdGUgdGFibGUgJyUtLjE5MnMnIHdoaWxlICclLS4xOTJzJyBpcyBiZWluZyBjcmVhdGVkLgBQQVJUSVRJT04gKCkgY2xhdXNlIG9uIG5vbiBwYXJ0aXRpb25lZCB0YWJsZQBGb3VuZCBhIHJvdyBub3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcnRpdGlvbiBzZXQAcGFydGl0aW9uICclLS42NHMnIGRvZXNuJ3QgZXhpc3QARmFpbHVyZSB3aGlsZSBjaGFuZ2luZyB0aGUgdHlwZSBvZiByZXBsaWNhdGlvbiByZXBvc2l0b3J5OiAlcy4AVGhlIGNyZWF0aW9uIG9mIHNvbWUgdGVtcG9yYXJ5IHRhYmxlcyBjb3VsZCBub3QgYmUgcm9sbGVkIGJhY2suAFNvbWUgdGVtcG9yYXJ5IHRhYmxlcyB3ZXJlIGRyb3BwZWQsIGJ1dCB0aGVzZSBvcGVyYXRpb25zIGNvdWxkIG5vdCBiZSByb2xsZWQgYmFjay4AJXMgaXMgbm90IHN1cHBvcnRlZCBpbiBtdWx0aS10aHJlYWRlZCByZXBsaWNhIG1vZGUuICVzAFRoZSBudW1iZXIgb2YgbW9kaWZpZWQgZGF0YWJhc2VzIGV4Y2VlZHMgdGhlIG1heGltdW0gJWQ7IHRoZSBkYXRhYmFzZSBuYW1lcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwbGljYXRpb24gZXZlbnQgbWV0YWRhdGEuAENhbm5vdCBleGVjdXRlIHRoZSBjdXJyZW50IGV2ZW50IGdyb3VwIGluIHRoZSBwYXJhbGxlbCBtb2RlLiBFbmNvdW50ZXJlZCBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHdoaWNoIHByZXZlbnRzIGV4ZWN1dGlvbiBvZiB0aGlzIGV2ZW50IGdyb3VwIGluIHBhcmFsbGVsIG1vZGUuIFJlYXNvbjogJXMuACVzAEZVTExURVhUIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4ASW52YWxpZCBjb25kaXRpb24gbnVtYmVyAFNlbmRpbmcgcGFzc3dvcmRzIGluIHBsYWluIHRleHQgd2l0aG91dCBTU0wvVExTIGlzIGV4dHJlbWVseSBpbnNlY3VyZS4AU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZm9yIHRhYmxlICclLjE5MnMnLCByZWNvcmQgJyUtLjE5MnMnIHdvdWxkIGxlYWQgdG8gYSBkdXBsaWNhdGUgZW50cnkgaW4gdGFibGUgJyUuMTkycycsIGtleSAnJS4xOTJzJwBGb3JlaWduIGtleSBjb25zdHJhaW50IGZvciB0YWJsZSAnJS4xOTJzJywgcmVjb3JkICclLS4xOTJzJyB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5IGluIGEgY2hpbGQgdGFibGUAU2V0dGluZyBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGlzIG5vdCBwb3NzaWJsZSB3aGVuIG9ubHkgdGhlIFJlcGxpY2EgU1FMIFRocmVhZCBpcyBiZWluZyBzdGFydGVkLgBUaGUgdGFibGUgZG9lcyBub3QgaGF2ZSBGVUxMVEVYVCBpbmRleCB0byBzdXBwb3J0IHRoaXMgcXVlcnkAVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCBpbiBzdG9yZWQgZnVuY3Rpb25zIG9yIHRyaWdnZXJzLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IHdoZW4gdGhlcmUgaXMgYW4gb25nb2luZyB0cmFuc2FjdGlvbi4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGhhcyB0aGUgdmFsdWUgJS4yMDBzLCB3aGljaCBpcyBub3QgbGlzdGVkIGluIEBAU0VTU0lPTi5HVElEX05FWFRfTElTVC4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBjaGFuZ2UgaW5zaWRlIGEgdHJhbnNhY3Rpb24uAFRoZSBzdGF0ZW1lbnQgJ1NFVCAlLjIwMHMnIGNhbm5vdCBpbnZva2UgYSBzdG9yZWQgZnVuY3Rpb24uAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgJ0FVVE9NQVRJQycgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QgaXMgbm9uLU5VTEwuAFNraXBwaW5nIHRyYW5zYWN0aW9uICUuMjAwcyBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gZXhlY3V0ZWQgYW5kIGxvZ2dlZC4ATWFsZm9ybWVkIEdUSUQgc2V0IHNwZWNpZmljYXRpb24gJyUuMjAwcycuAE1hbGZvcm1lZCBHVElEIHNldCBlbmNvZGluZy4ATWFsZm9ybWVkIEdUSUQgc3BlY2lmaWNhdGlvbiAnJS4yMDBzJy4ASW1wb3NzaWJsZSB0byBnZW5lcmF0ZSBHVElEOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW11bSB2YWx1ZS4gUmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBuZXcgc2VydmVyX3V1aWQuAFBhcmFtZXRlcnMgU09VUkNFX0xPR19GSUxFLCBTT1VSQ0VfTE9HX1BPUywgUkVMQVlfTE9HX0ZJTEUgYW5kIFJFTEFZX0xPR19QT1MgY2Fubm90IGJlIHNldCB3aGVuIFNPVVJDRV9BVVRPX1BPU0lUSU9OIGlzIGFjdGl2ZS4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnRzIHdpdGggaW1wbGljaXQgY29tbWl0IGluc2lkZSBhIHRyYW5zYWN0aW9uIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AQEBHTE9CQUwuR1RJRF9NT0RFID0gT04gb3IgT05fUEVSTUlTU0lWRSBvciBPRkZfUEVSTUlTU0lWRSByZXF1aXJlcyAtLWxvZy1iaW4gYW5kIC0tbG9nLXJlcGxpY2EtdXBkYXRlcy4AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIFVVSUQ6TlVNQkVSIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gQU5PTllNT1VTIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEBAU0VTU0lPTi5HVElEX05FWFRfTElTVCBjYW5ub3QgYmUgc2V0IHRvIGEgbm9uLU5VTEwgdmFsdWUgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAEZvdW5kIGEgR3RpZF9sb2dfZXZlbnQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBVcGRhdGVzIHRvIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBjYW4gb25seSBiZSBkb25lIGluIGVpdGhlciBhdXRvY29tbWl0dGVkIHN0YXRlbWVudHMgb3Igc2luZ2xlLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMsIGFuZCBuZXZlciBpbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYXMgdXBkYXRlcyB0byB0cmFuc2FjdGlvbmFsIHRhYmxlcy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBUQUJMRSAuLi4gU0VMRUNULgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgb3V0c2lkZSB0cmFuc2FjdGlvbmFsIGNvbnRleHQuICBUaGVzZSBzdGF0ZW1lbnRzIGFyZSBhbHNvIG5vdCBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgdHJpZ2dlciBiZWNhdXNlIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSBtdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLgBUaGUgdmFsdWUgb2YgQEBHTE9CQUwuR1RJRF9NT0RFIGNhbiBvbmx5IGJlIGNoYW5nZWQgb25lIHN0ZXAgYXQgYSB0aW1lOiBPRkYgPC0+IE9GRl9QRVJNSVNTSVZFIDwtPiBPTl9QRVJNSVNTSVZFIDwtPiBPTi4gQWxzbyBub3RlIHRoYXQgdGhpcyB2YWx1ZSBtdXN0IGJlIHN0ZXBwZWQgdXAgb3IgZG93biBzaW11bHRhbmVvdXNseSBvbiBhbGwgc2VydmVycy4gU2VlIHRoZSBNYW51YWwgZm9yIGluc3RydWN0aW9ucy4AQ2Fubm90IHJlcGxpY2F0ZSBiZWNhdXNlIHRoZSBzb3VyY2UgcHVyZ2VkIHJlcXVpcmVkIGJpbmFyeSBsb2dzLiBSZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBwcm92aXNpb24gYSBuZXcgcmVwbGljYSBmcm9tIGJhY2t1cC4gQ29uc2lkZXIgaW5jcmVhc2luZyB0aGUgc291cmNlJ3MgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZC4gJXMAQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suAFVua25vd24gRVhQTEFJTiBmb3JtYXQgbmFtZTogJyVzJwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgaW4gYSBSRUFEIE9OTFkgdHJhbnNhY3Rpb24uAENvbW1lbnQgZm9yIHRhYmxlIHBhcnRpdGlvbiAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBSZXBsaWNhIGlzIG5vdCBjb25maWd1cmVkIG9yIGZhaWxlZCB0byBpbml0aWFsaXplIHByb3Blcmx5LiBZb3UgbXVzdCBhdCBsZWFzdCBzZXQgLS1zZXJ2ZXItaWQgdG8gZW5hYmxlIGVpdGhlciBhIHNvdXJjZSBvciBhIHJlcGxpY2EuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAElubm9EQiBwcmVzZW50bHkgc3VwcG9ydHMgb25lIEZVTExURVhUIGluZGV4IGNyZWF0aW9uIGF0IGEgdGltZQBDYW5ub3QgY3JlYXRlIEZVTExURVhUIGluZGV4IG9uIHRlbXBvcmFyeSBJbm5vREIgdGFibGUAQ29sdW1uICclLS4xOTJzJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgASW5kZXggJyUtLjE5MnMnIGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleABDcmVhdGluZyBpbmRleCAnJS0uMTkycycgcmVxdWlyZWQgbW9yZSB0aGFuICdpbm5vZGJfb25saW5lX2FsdGVyX2xvZ19tYXhfc2l6ZScgYnl0ZXMgb2YgbW9kaWZpY2F0aW9uIGxvZy4gUGxlYXNlIHRyeSBhZ2Fpbi4AVW5rbm93biBBTEdPUklUSE0gJyVzJwBVbmtub3duIExPQ0sgdHlwZSAnJXMnAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJlcGxpY2Egd2FzIHN0b3BwZWQgd2l0aCBhbiBlcnJvciBvciBraWxsZWQgaW4gTVRBIG1vZGUuIENvbnNpZGVyIHVzaW5nIFJFU0VUIFJFUExJQ0Egb3IgU1RBUlQgUkVQTElDQSBVTlRJTC4AQ2Fubm90IHJlY292ZXIgYWZ0ZXIgUkVQTElDQSBlcnJvcmVkIG91dCBpbiBwYXJhbGxlbCBleGVjdXRpb24gbW9kZS4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ2Fubm90IGNsZWFuIHVwIHdvcmtlciBpbmZvIHRhYmxlcy4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAUmVwbGljYSBtdXN0IHNpbGVudGx5IHJldHJ5IGN1cnJlbnQgdHJhbnNhY3Rpb24AVGhlcmUgaXMgYSBmb3JlaWduIGtleSBjaGVjayBydW5uaW5nIG9uIHRhYmxlICclLS4xOTJzJy4gQ2Fubm90IGRpc2NhcmQgdGhlIHRhYmxlLgBTY2hlbWEgbWlzbWF0Y2ggKCVzKQBUYWJsZSAnJS0uMTkycycgaW4gc3lzdGVtIHRhYmxlc3BhY2UASU8gUmVhZCBlcnJvcjogKCVsdSwgJXMpICVzAElPIFdyaXRlIGVycm9yOiAoJWx1LCAlcykgJXMAVGFibGVzcGFjZSBpcyBtaXNzaW5nIGZvciB0YWJsZSAlcy4AVGFibGVzcGFjZSAnJS0uMTkycycgZXhpc3RzLgBUYWJsZXNwYWNlIGhhcyBiZWVuIGRpc2NhcmRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAEludGVybmFsIGVycm9yOiAlcwBBTFRFUiBUQUJMRSAlLS4xOTJzIElNUE9SVCBUQUJMRVNQQUNFIGZhaWxlZCB3aXRoIGVycm9yICVsdSA6ICclcycASW5kZXggY29ycnVwdDogJXMASW52YWxpZCBkaXNwbGF5IHdpZHRoLiBVc2UgWUVBUiBpbnN0ZWFkLgBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50cwBZb3UgbXVzdCByZXNldCB5b3VyIHBhc3N3b3JkIHVzaW5nIEFMVEVSIFVTRVIgc3RhdGVtZW50IGJlZm9yZSBleGVjdXRpbmcgdGhpcyBzdGF0ZW1lbnQuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgaW5kZXggZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgZm9yZWlnbiB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgaW5kZXggZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyB0byBzeXN0ZW0gdGFibGVzAEZhaWxlZCB0byBvcGVuIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0YWJsZSAnJXMnLiBJbmNvcnJlY3Qgb3B0aW9ucyBpbiBGT1JFSUdOIEtFWSBjb25zdHJhaW50ICclcycARHVwbGljYXRlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbmFtZSAnJXMnAFRoZSBwYXNzd29yZCBoYXNoIGRvZXNuJ3QgaGF2ZSB0aGUgZXhwZWN0ZWQgZm9ybWF0LgBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJwBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycAQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgTk9UIE5VTEw6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIFNFVCBOVUxMAER1cGxpY2F0ZSBpbmRleCAnJS0uNjRzJyBkZWZpbmVkIG9uIHRoZSB0YWJsZSAnJS0uNjRzLiUtLjY0cycuIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBkaXNhbGxvd2VkIGluIGEgZnV0dXJlIHJlbGVhc2UuAENhbm5vdCBjaGFuZ2UgY29sdW1uICclLS4xOTJzJzogdXNlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnAENhbm5vdCBjaGFuZ2UgY29sdW1uICclLS4xOTJzJzogdXNlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBDYW5ub3QgZGVsZXRlIHJvd3MgZnJvbSB0YWJsZSB3aGljaCBpcyBwYXJlbnQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycATWFsZm9ybWVkIGNvbW11bmljYXRpb24gcGFja2V0LgBSdW5uaW5nIGluIHJlYWQtb25seSBtb2RlAFdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCBpcyBzZXQgdG8gYSBHVElELCB5b3UgbXVzdCBleHBsaWNpdGx5IHNldCBpdCB0byBhIGRpZmZlcmVudCB2YWx1ZSBhZnRlciBhIENPTU1JVCBvciBST0xMQkFDSy4gUGxlYXNlIGNoZWNrIEdUSURfTkVYVCB2YXJpYWJsZSBtYW51YWwgcGFnZSBmb3IgZGV0YWlsZWQgZXhwbGFuYXRpb24uIEN1cnJlbnQgQEBTRVNTSU9OLkdUSURfTkVYVCBpcyAnJXMnLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IGluIHN0b3JlZCBwcm9jZWR1cmVzLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCBpcyBlbXB0eS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gdGhlcmUgYXJlIG5vIG9uZ29pbmcgdHJhbnNhY3Rpb25zIChub3QgZXZlbiBpbiBvdGhlciBjbGllbnRzKS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQsIGFuZCBib3RoIHJlcGxpY2F0ZWQgYW5kIG5vbiByZXBsaWNhdGVkIHRhYmxlcyBhcmUgd3JpdHRlbiB0by4AJXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBvcGVyYXRpb24uIFRyeSAlcy4AJXMgaXMgbm90IHN1cHBvcnRlZC4gUmVhc29uOiAlcy4gVHJ5ICVzLgBDT1BZIGFsZ29yaXRobSByZXF1aXJlcyBhIGxvY2sAUGFydGl0aW9uIHNwZWNpZmljIG9wZXJhdGlvbnMgZG8gbm90IHlldCBzdXBwb3J0IExPQ0svQUxHT1JJVEhNAENvbHVtbnMgcGFydGljaXBhdGluZyBpbiBhIGZvcmVpZ24ga2V5IGFyZSByZW5hbWVkAENhbm5vdCBjaGFuZ2UgY29sdW1uIHR5cGUgSU5QTEFDRQBBZGRpbmcgZm9yZWlnbiBrZXlzIG5lZWRzIGZvcmVpZ25fa2V5X2NoZWNrcz1PRkYAQ3JlYXRpbmcgdW5pcXVlIGluZGV4ZXMgd2l0aCBJR05PUkUgcmVxdWlyZXMgQ09QWSBhbGdvcml0aG0gdG8gcmVtb3ZlIGR1cGxpY2F0ZSByb3dzAERyb3BwaW5nIGEgcHJpbWFyeSBrZXkgaXMgbm90IGFsbG93ZWQgd2l0aG91dCBhbHNvIGFkZGluZyBhIG5ldyBwcmltYXJ5IGtleQBBZGRpbmcgYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uIHJlcXVpcmVzIGEgbG9jawBDYW5ub3QgcmVwbGFjZSBoaWRkZW4gRlRTX0RPQ19JRCB3aXRoIGEgdXNlci12aXNpYmxlIG9uZQBDYW5ub3QgZHJvcCBvciByZW5hbWUgRlRTX0RPQ19JRABGdWxsdGV4dCBpbmRleCBjcmVhdGlvbiByZXF1aXJlcyBhIGxvY2sAc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIGNhbiBub3QgYmUgc2V0IHdoZW4gdGhlIHNlcnZlciBpcyBydW5uaW5nIHdpdGggQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uIEluc3RlYWQsIGZvciBlYWNoIHRyYW5zYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gc2tpcCwgZ2VuZXJhdGUgYW4gZW1wdHkgdHJhbnNhY3Rpb24gd2l0aCB0aGUgc2FtZSBHVElEIGFzIHRoZSB0cmFuc2FjdGlvbgDspJHrs7XrkJwg7J6F66ClIOqwkjoga2V5ICclLS4xOTJzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AY2Fubm90IHNpbGVudGx5IGNvbnZlcnQgTlVMTCB2YWx1ZXMsIGFzIHJlcXVpcmVkIGluIHRoaXMgU1FMX01PREUAWW91ciBwYXNzd29yZCBoYXMgZXhwaXJlZC4gVG8gbG9nIGluIHlvdSBtdXN0IGNoYW5nZSBpdCB1c2luZyBhIGNsaWVudCB0aGF0IHN1cHBvcnRzIGV4cGlyZWQgcGFzc3dvcmRzLgBGb3VuZCBhIHJvdyBpbiB3cm9uZyBwYXJ0aXRpb24gJXMAQ2Fubm90IHNjaGVkdWxlIGV2ZW50ICVzLCByZWxheS1sb2cgbmFtZSAlcywgcG9zaXRpb24gJXMgdG8gV29ya2VyIHRocmVhZCBiZWNhdXNlIGl0cyBzaXplICVsdSBleGNlZWRzICVsdSBvZiByZXBsaWNhX3BlbmRpbmdfam9ic19zaXplX21heC4AQ2Fubm90IENSRUFURSBGVUxMVEVYVCBJTkRFWCBXSVRIIFBBUlNFUiBvbiBJbm5vREIgdGFibGUAVGhlIGJpbmFyeSBsb2cgZmlsZSAnJXMnIGlzIGxvZ2ljYWxseSBjb3JydXB0ZWQ6ICVzAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCB3YXMgYmVpbmcgcmVhZCBieSAlZCB0aHJlYWQocyksIHB1cmdlZCBvbmx5ICVkIG91dCBvZiAlZCBmaWxlcy4AZmlsZSAlcyB3YXMgbm90IHB1cmdlZCBiZWNhdXNlIGl0IGlzIHRoZSBhY3RpdmUgbG9nIGZpbGUuAEF1dG8taW5jcmVtZW50IHZhbHVlIGluIFVQREFURSBjb25mbGljdHMgd2l0aCBpbnRlcm5hbGx5IGdlbmVyYXRlZCB2YWx1ZXMAUm93IGV2ZW50cyBhcmUgbm90IGxvZ2dlZCBmb3IgJXMgc3RhdGVtZW50cyB0aGF0IG1vZGlmeSBCTEFDS0hPTEUgdGFibGVzIGluIHJvdyBmb3JtYXQuIFRhYmxlKHMpOiAnJS0uMTkycycAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgYXBwbGllciBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBBY2Nlc3MgZGVuaWVkIHRyeWluZyB0byBjaGFuZ2UgdG8gdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyAodXNpbmcgcGFzc3dvcmQ6ICVzKS4gRGlzY29ubmVjdGluZy4ASW5ub0RCIGlzIGluIHJlYWQgb25seSBtb2RlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBTUUwgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBTUUwgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIElPIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgSU8gdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAE9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkLiBUaGUgdGFibGUgJyUtLjY0cy4lLS42NHMnIGlzIG1pc3NpbmcsIGNvcnJ1cHQgb3IgY29udGFpbnMgYmFkIGRhdGEuAFRlbXBvcmFyeSBmaWxlIHdyaXRlIGZhaWx1cmUuAFVwZ3JhZGUgaW5kZXggbmFtZSBmYWlsZWQsIHBsZWFzZSB1c2UgY3JlYXRlIGluZGV4KGFsdGVyIHRhYmxlKSBhbGdvcml0aG0gY29weSB0byByZWJ1aWxkIGluZGV4LgBUSU1FL1RJTUVTVEFNUC9EQVRFVElNRSBjb2x1bW5zIG9mIG9sZCBmb3JtYXQgaGF2ZSBiZWVuIHVwZ3JhZGVkIHRvIHRoZSBuZXcgZm9ybWF0LgBPcGVyYXRpb24gbm90IGFsbG93ZWQgd2hlbiBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgPiAwLgBUaGUgaW5pdGlhbGl6YXRpb24gdmVjdG9yIHN1cHBsaWVkIHRvICVzIGlzIHRvbyBzaG9ydC4gTXVzdCBiZSBhdCBsZWFzdCAlZCBieXRlcyBsb25nAFBsdWdpbiAnJXMnIGNhbm5vdCBiZSB1bmluc3RhbGxlZCBub3cuICVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudCBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgYXMgbXVsdGlwbGUgc3RhdGVtZW50cywgYW5kIHRoaXMgaXMgbm90IGFsbG93ZWQgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUID09ICdVVUlEOk5VTUJFUicuAFJlcGxpY2EgaGFzIG1vcmUgR1RJRHMgdGhhbiB0aGUgc291cmNlIGhhcywgdXNpbmcgdGhlIHNvdXJjZSdzIFNFUlZFUl9VVUlELiBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSB0aGUgbGFzdCBiaW5hcnkgbG9nIGZpbGUgd2FzIHRydW5jYXRlZCBvciBsb3N0LCBlLmcuLCBhZnRlciBhIHBvd2VyIGZhaWx1cmUgd2hlbiBzeW5jX2JpbmxvZyAhPSAxLiBUaGUgc291cmNlIG1heSBoYXZlIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9ucyB0aGF0IHdlcmUgYWxyZWFkeSByZXBsaWNhdGVkIHRvIHRoZSByZXBsaWNhLiBSZXBsaWNhdGUgYW55IHRyYW5zYWN0aW9ucyB0aGF0IHNvdXJjZSBoYXMgcm9sbGVkIGJhY2sgZnJvbSByZXBsaWNhIHRvIHNvdXJjZSwgYW5kL29yIGNvbW1pdCBlbXB0eSB0cmFuc2FjdGlvbnMgb24gc291cmNlIHRvIGFjY291bnQgZm9yIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgYmVlbiBjb21taXR0ZWQgb24gc291cmNlIGJ1dCBhcmUgbm90IGluY2x1ZGVkIGluIEdUSURfRVhFQ1VURUQuAFRoZSB0YWJsZSAnJXMuJXMnIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBrZXkocykgZGVmaW5lZCBvbiBpdC4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZSBkZWZpbml0aW9uIGFuZCBjcmVhdGUgaW5kZXgocykgYWNjb3JkaW5nbHkuAFNldHRpbmcgbmFtZWRfcGlwZV9mdWxsX2FjY2Vzc19ncm91cD0nJXMnIGlzIGluc2VjdXJlLiBDb25zaWRlciB1c2luZyBhIFdpbmRvd3MgZ3JvdXAgd2l0aCBmZXdlciBtZW1iZXJzLgBGaWxlICVzIGlzIGNvcnJ1cHRlZABRdWVyeSBwYXJ0aWFsbHkgY29tcGxldGVkIG9uIHRoZSBzb3VyY2UgKGVycm9yIG9uIHNvdXJjZTogJWQpIGFuZCB3YXMgYWJvcnRlZC4gVGhlcmUgaXMgYSBjaGFuY2UgdGhhdCB5b3VyIHNvdXJjZSBpcyBpbmNvbnNpc3RlbnQgYXQgdGhpcyBwb2ludC4gSWYgeW91IGFyZSBzdXJlIHRoYXQgeW91ciBzb3VyY2UgaXMgb2ssIHJ1biB0aGlzIHF1ZXJ5IG1hbnVhbGx5IG9uIHRoZSByZXBsaWNhIGFuZCB0aGVuIHJlc3RhcnQgdGhlIHJlcGxpY2Egd2l0aCBTRVQgR0xPQkFMIFNRTF9SRVBMSUNBX1NLSVBfQ09VTlRFUj0xOyBTVEFSVCBSRVBMSUNBOy4gUXVlcnk6JyVzJwBRdWVyeSBjYXVzZWQgZGlmZmVyZW50IGVycm9ycyBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuIEVycm9yIG9uIHNvdXJjZTogbWVzc2FnZSAoZm9ybWF0KT0nJXMnIGVycm9yIGNvZGU9JWQ7IEVycm9yIG9uIHJlcGxpY2E6YWN0dWFsIG1lc3NhZ2U9JyVzJywgZXJyb3IgY29kZT0lZC4gRGVmYXVsdCBkYXRhYmFzZTonJXMnLiBRdWVyeTonJXMnAFN0b3JhZ2UgZW5naW5lIGZvciB0YWJsZSAnJXMnLiclcycgaXMgbm90IGxvYWRlZC4AR0VUIFNUQUNLRUQgRElBR05PU1RJQ1Mgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUAJXMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVGhlIHN0YXRlbWVudCB3YXMgY29udmVydGVkIHRvICVzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIGZ1bGx0ZXh0IHBhcnNlciBwbHVnaW4gd2hpY2ggbWF5IG5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgb24gdGhlIHJlcGxpY2EuAENhbm5vdCBESVNDQVJEL0lNUE9SVCB0YWJsZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0ZW1wb3JhcnkgdGFibGUARm9yZWlnbiBrZXkgY2FzY2FkZSBkZWxldGUvdXBkYXRlIGV4Y2VlZHMgbWF4IGRlcHRoIG9mICVkLgBUaGUgY29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AVHJpZ2dlciAlcy4lcy4lcyBkb2VzIG5vdCBoYXZlIENSRUFURUQgYXR0cmlidXRlLgBSZWZlcmVuY2VkIHRyaWdnZXIgJyVzJyBmb3IgdGhlIGdpdmVuIGFjdGlvbiB0aW1lIGFuZCBldmVudCB0eXBlIGRvZXMgbm90IGV4aXN0LgBFWFBMQUlOIEZPUiBDT05ORUNUSU9OIGNvbW1hbmQgaXMgc3VwcG9ydGVkIG9ubHkgZm9yIFNFTEVDVC9VUERBVEUvSU5TRVJUL0RFTEVURS9SRVBMQUNFAEludmFsaWQgc2l6ZSBmb3IgY29sdW1uICclLS4xOTJzJy4AVGFibGUgc3RvcmFnZSBlbmdpbmUgJyUtLjY0cycgZm91bmQgcmVxdWlyZWQgY3JlYXRlIG9wdGlvbiBtaXNzaW5nAE91dCBvZiBtZW1vcnkgaW4gc3RvcmFnZSBlbmdpbmUgJyUtLjY0cycuAFRoZSBwYXNzd29yZCBmb3IgYW5vbnltb3VzIHVzZXIgY2Fubm90IGJlIGV4cGlyZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBzcWwgdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgZmlyc3QAQ2Fubm90IGNyZWF0ZSBGVUxMVEVYVCBpbmRleCBvbiBtYXRlcmlhbGl6ZWQgc3VicXVlcnkAVW5kbyBMb2cgZXJyb3I6ICVzAEludmFsaWQgYXJndW1lbnQgZm9yIGxvZ2FyaXRobQBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2EgaW8gdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIElPX1RIUkVBRCBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0LgBUaGlzIG9wZXJhdGlvbiBtYXkgbm90IGJlIHNhZmUgd2hlbiB0aGUgcmVwbGljYSBoYXMgdGVtcG9yYXJ5IHRhYmxlcy4gVGhlIHRhYmxlcyB3aWxsIGJlIGtlcHQgb3BlbiB1bnRpbCB0aGUgc2VydmVyIHJlc3RhcnRzIG9yIHVudGlsIHRoZSB0YWJsZXMgYXJlIGRlbGV0ZWQgYnkgYW55IHJlcGxpY2F0ZWQgRFJPUCBzdGF0ZW1lbnQuIFN1Z2dlc3QgdG8gd2FpdCB1bnRpbCByZXBsaWNhX29wZW5fdGVtcF90YWJsZXMgPSAwLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIHdpdGggYSBTT1VSQ0VfTE9HX0ZJTEUgY2xhdXNlIGJ1dCBubyBTT1VSQ0VfTE9HX1BPUyBjbGF1c2UgbWF5IG5vdCBiZSBzYWZlLiBUaGUgb2xkIHBvc2l0aW9uIHZhbHVlIG1heSBub3QgYmUgdmFsaWQgZm9yIHRoZSBuZXcgYmluYXJ5IGxvZyBmaWxlLgBRdWVyeSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkLCBtYXhpbXVtIHN0YXRlbWVudCBleGVjdXRpb24gdGltZSBleGNlZWRlZABTZWxlY3QgaXMgbm90IGEgcmVhZCBvbmx5IHN0YXRlbWVudCwgZGlzYWJsaW5nIHRpbWVyAER1cGxpY2F0ZSBlbnRyeSAnJS0uMTkycycuACclcycgbW9kZSBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuIFVzZSBTVFJJQ1RfQUxMX1RBQkxFUyBvciBTVFJJQ1RfVFJBTlNfVEFCTEVTIGluc3RlYWQuAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBhbmQgYXBwbGllcyB0byBhIFVOSU9OLCBFWENFUFQgb3IgSU5URVJTRUNUAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBhbmQgYXBwbGllcyB0byB0aGUgcmVzdWx0IG9mIGEgbm9uLWFnZ3JlZ2F0ZWQgcXVlcnkAUmVwbGljYSB3b3JrZXIgaGFzIHN0b3BwZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIHByZXZpb3VzIHdvcmtlciBlbmNvdW50ZXJlZCBhbiBlcnJvciB3aGVuIHJlcGxpY2EtcHJlc2VydmUtY29tbWl0LW9yZGVyIHdhcyBlbmFibGVkLiBUbyBwcmVzZXJ2ZSBjb21taXQgb3JkZXIsIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGV4ZWN1dGVkIGJ5IHRoaXMgdGhyZWFkIGhhcyBub3QgYmVlbiBjb21taXR0ZWQuIFdoZW4gcmVzdGFydGluZyB0aGUgcmVwbGljYSBhZnRlciBmaXhpbmcgYW55IGZhaWxlZCB0aHJlYWRzLCB5b3Ugc2hvdWxkIGZpeCB0aGlzIHdvcmtlciBhcyB3ZWxsLgByZXBsaWNhX3ByZXNlcnZlX2NvbW1pdF9vcmRlciBpcyBub3Qgc3VwcG9ydGVkICVzLgBUaGUgc2VydmVyIGlzIGN1cnJlbnRseSBpbiBvZmZsaW5lIG1vZGUAQmluYXJ5IGdlb21ldHJ5IGZ1bmN0aW9uICVzIGdpdmVuIHR3byBnZW9tZXRyaWVzIG9mIGRpZmZlcmVudCBzcmlkczogJXUgYW5kICV1LCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGlkZW50aWNhbC4AQ2FsbGluZyBnZW9tZXRyeSBmdW5jdGlvbiAlcyB3aXRoIHVuc3VwcG9ydGVkIHR5cGVzIG9mIGFyZ3VtZW50cy4AVW5rbm93biBHSVMgZXJyb3Igb2NjdXJyZWQgaW4gZnVuY3Rpb24gJXMuAFVua25vd24gZXhjZXB0aW9uIGNhdWdodCBpbiBHSVMgZnVuY3Rpb24gJXMuAEludmFsaWQgR0lTIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXMuAFRoZSBnZW9tZXRyeSBoYXMgbm8gZGF0YSBpbiBmdW5jdGlvbiAlcy4AVW5hYmxlIHRvIGNhbGN1bGF0ZSBjZW50cm9pZCBiZWNhdXNlIGdlb21ldHJ5IGlzIGVtcHR5IGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSBvdmVybGF5IGNhbGN1bGF0aW9uIGVycm9yOiBnZW9tZXRyeSBkYXRhIGlzIGludmFsaWQgaW4gZnVuY3Rpb24gJXMuAEdlb21ldHJ5IHR1cm4gaW5mbyBjYWxjdWxhdGlvbiBlcnJvcjogZ2VvbWV0cnkgZGF0YSBpcyBpbnZhbGlkIGluIGZ1bmN0aW9uICVzLgBBbmFseXNpcyBwcm9jZWR1cmVzIG9mIGludGVyc2VjdGlvbiBwb2ludHMgaW50ZXJydXB0ZWQgdW5leHBlY3RlZGx5IGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbiB0aHJvd24gaW4gZnVuY3Rpb24gJXMuAE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBEb21haW4gZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAExlbmd0aCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBhcmd1bWVudCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AT3V0IG9mIHJhbmdlIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBPdmVyZmxvdyBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AUmFuZ2UgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFVuZGVyZmxvdyBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ATG9naWMgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFJ1bnRpbWUgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFVua25vd24gZXhjZXB0aW9uOiAlLS4zODRzIGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSBieXRlIHN0cmluZyBtdXN0IGJlIGxpdHRsZSBlbmRpYW4uAFRoZSBwYXNzd29yZCBwcm92aWRlZCBmb3IgdGhlIHJlcGxpY2F0aW9uIHVzZXIgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgMzIgY2hhcmFjdGVycwBJbmNvcnJlY3QgdXNlci1sZXZlbCBsb2NrIG5hbWUgJyUtLjE5MnMnLiBUaGUgbmFtZSBpcyBlbXB0eSwgTlVMTCwgb3IgY2FuIG5vdCBiZSBleHByZXNzZWQgaW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyLXNldC4ARGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IHVzZXItbGV2ZWwgbG9jazsgdHJ5IHJvbGxpbmcgYmFjayB0cmFuc2FjdGlvbi9yZWxlYXNpbmcgbG9ja3MgYW5kIHJlc3RhcnRpbmcgbG9jayBhY3F1aXNpdGlvbi4AUkVQTEFDRSBjYW5ub3QgYmUgZXhlY3V0ZWQgYXMgaXQgcmVxdWlyZXMgZGVsZXRpbmcgcm93cyB0aGF0IGFyZSBub3QgaW4gdGhlIHZpZXcARG8gbm90IHN1cHBvcnQgb25saW5lIG9wZXJhdGlvbiBvbiB0YWJsZSB3aXRoIEdJUyBpbmRleABVc2VyIHZhcmlhYmxlIG5hbWUgJyUtLjEwMHMnIGlzIGlsbGVnYWwAQ2Fubm90ICVzIHdoZW4gR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgJXMgZnJvbSBhIHJlcGxpY2EgdGhyZWFkLgBJbmNvcnJlY3QgdHlwZSBmb3IgYXJndW1lbnQgJXMgaW4gZnVuY3Rpb24gJXMuAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNsYXVzZSBpcyBub3QgaW4gU0VMRUNUIGxpc3QsIHJlZmVyZW5jZXMgY29sdW1uICclLS4xOTJzJyB3aGljaCBpcyBub3QgaW4gU0VMRUNUIGxpc3Q7IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJXMARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY2xhdXNlIGlzIG5vdCBpbiBTRUxFQ1QgbGlzdCwgY29udGFpbnMgYWdncmVnYXRlIGZ1bmN0aW9uOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoICVzAFN1cHBsaWVkIGZpbHRlciBsaXN0IGNvbnRhaW5zIGEgdmFsdWUgd2hpY2ggaXMgbm90IGluIHRoZSByZXF1aXJlZCBmb3JtYXQgJ2RiX3BhdHRlcm4udGFibGVfcGF0dGVybicAT0sgcGFja2V0IHRvbyBsYXJnZQBJbnZhbGlkIEpTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogJXMASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1pc3NpbmcgcmVxdWlyZWQgbWVtYmVyICclcycASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1lbWJlciAnJXMnIG11c3QgYmUgb2YgdHlwZSAnJXMnAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzAFVuc3VwcG9ydGVkIG51bWJlciBvZiBjb29yZGluYXRlIGRpbWVuc2lvbnMgaW4gZnVuY3Rpb24gJXM6IEZvdW5kICV1LCBleHBlY3RlZCAldQBSZXBsaWNhIGNoYW5uZWwgJyVzJyBkb2VzIG5vdCBleGlzdC4AQSByZXBsaWNhIGNoYW5uZWwgJyVzJyBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQgY29tYmluYXRpb24uAENvdWxkbid0IGNyZWF0ZSBjaGFubmVsOiBDaGFubmVsIG5hbWUgaXMgZWl0aGVyIGludmFsaWQgb3IgdG9vIGxvbmcuAFRvIGhhdmUgbXVsdGlwbGUgY2hhbm5lbHMsIHJlcG9zaXRvcnkgY2Fubm90IGJlIG9mIHR5cGUgRklMRTsgUGxlYXNlIGNoZWNrIHRoZSByZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24gYW5kIGNvbnZlcnQgdGhlbSB0byBUQUJMRS4AQ2Fubm90IGRlbGV0ZSByZXBsaWNhIGluZm8gb2JqZWN0cyBmb3IgY2hhbm5lbCAnJXMnLgBNdWx0aXBsZSBjaGFubmVscyBleGlzdCBvbiB0aGUgcmVwbGljYS4gUGxlYXNlIHByb3ZpZGUgY2hhbm5lbCBuYW1lIGFzIGFuIGFyZ3VtZW50LgBNYXhpbXVtIG51bWJlciBvZiByZXBsaWNhdGlvbiBjaGFubmVscyBhbGxvd2VkIGV4Y2VlZGVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggcnVubmluZyByZXBsaWNhdGlvbiB0aHJlYWRzOyBydW4gU1RPUCBSRVBMSUNBIEZPUiBDSEFOTkVMICclcycgZmlyc3QAVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgcnVubmluZyByZXBsaWNhdGlvbiB0aHJlYWRzOyBjb25maWd1cmUgcmVwbGljYSBhbmQgcnVuIFNUQVJUIFJFUExJQ0EgRk9SIENIQU5ORUwgJyVzJwBSZXBsaWNhdGlvbiB0aHJlYWQocykgZm9yIGNoYW5uZWwgJyVzJyBhcmUgYWxyZWFkeSBydW5ubmluZy4AUmVwbGljYXRpb24gdGhyZWFkKHMpIGZvciBjaGFubmVsICclcycgYXJlIGFscmVhZHkgc3RvcHBlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIHNxbCB0aHJlYWQ7IHJ1biBTVE9QIFJFUExJQ0EgU1FMX1RIUkVBRCBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0LgBXaGVuIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciA+IDAsIGl0IGlzIG5vdCBhbGxvd2VkIHRvIHN0YXJ0IG1vcmUgdGhhbiBvbmUgU1FMIHRocmVhZCBieSB1c2luZyAnU1RBUlQgUkVQTElDQSBbU1FMX1RIUkVBRF0nLiBWYWx1ZSBvZiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgY2FuIG9ubHkgYmUgdXNlZCBieSBvbmUgU1FMIHRocmVhZCBhdCBhIHRpbWUuIFBsZWFzZSB1c2UgJ1NUQVJUIFJFUExJQ0EgW1NRTF9USFJFQURdIEZPUiBDSEFOTkVMJyB0byBzdGFydCB0aGUgU1FMIHRocmVhZCB3aGljaCB3aWxsIHVzZSB0aGUgdmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyLgBFeHByZXNzaW9uICMldSBvZiAlcyBpcyBub3QgaW4gR1JPVVAgQlkgY2xhdXNlIGFuZCBjb250YWlucyBub25hZ2dyZWdhdGVkIGNvbHVtbiAnJS0uMTkycycgd2hpY2ggaXMgbm90IGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24gY29sdW1ucyBpbiBHUk9VUCBCWSBjbGF1c2U7IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3FsX21vZGU9b25seV9mdWxsX2dyb3VwX2J5AEluIGFnZ3JlZ2F0ZWQgcXVlcnkgd2l0aG91dCBHUk9VUCBCWSwgZXhwcmVzc2lvbiAjJXUgb2YgJXMgY29udGFpbnMgbm9uYWdncmVnYXRlZCBjb2x1bW4gJyUtLjE5MnMnOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHNxbF9tb2RlPW9ubHlfZnVsbF9ncm91cF9ieQBVcGRhdGluZyAnJXMnIGlzIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgbWFkZSByZWFkLW9ubHkgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQ2hhbmdpbmcgc3FsIG1vZGUgJyVzJyBpcyBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ARFJPUCBEQVRBQkFTRSBmYWlsZWQ7IHNvbWUgdGFibGVzIG1heSBoYXZlIGJlZW4gZHJvcHBlZCBidXQgdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSByZW1haW5zLiBUaGUgR1RJRCBoYXMgbm90IGJlZW4gYWRkZWQgdG8gR1RJRF9FWEVDVVRFRCBhbmQgdGhlIHN0YXRlbWVudCB3YXMgbm90IHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cuIEZpeCB0aGlzIGFzIGZvbGxvd3M6ICgxKSByZW1vdmUgYWxsIGZpbGVzIGZyb20gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSAlLS4xOTJzOyAoMikgU0VUIEdUSURfTkVYVD0nJS0uMTkycyc7ICgzKSBEUk9QIERBVEFCQVNFIGAlLS4xOTJzYC4AVGhlIHNlcnZlciBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSB0byBiZSBhbiBhY3RpdmUgbWVtYmVyIG9mIHRoZSBncm91cC4gUGxlYXNlIHNlZSBtb3JlIGRldGFpbHMgb24gZXJyb3IgbG9nLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIGdyb3VwIGlzIGFscmVhZHkgcnVubmluZy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIGFzIHRoZSBhcHBsaWVyIG1vZHVsZSBmYWlsZWQgdG8gc3RhcnQuAFRoZSBTVE9QIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFRoZSBhcHBsaWVyIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsIHdoaWxlIGl0IHdhcyBidXN5LiBUaGUgYXBwbGllciB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIGFzIHRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGluaXRpYWxpemluZyB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBsYXllci4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIGFzIHRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGpvaW5pbmcgdGhlIGNvbW11bmljYXRpb24gZ3JvdXAuAFRoZSB0YWJsZSBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIGJ5IGFuIGV4dGVybmFsIHBsdWdpbi4AQ2Fubm90IGNoYW5nZSB0aGUgdmFsdWUgb2YgdmFyaWFibGUgJXMgd2l0aG91dCBiaW5hcnkgbG9nIGZvcm1hdCBhcyBST1cuAEVycm9yIG9uIG9ic2VydmVyIHdoaWxlIHJ1bm5pbmcgcmVwbGljYXRpb24gaG9vayAnJXMnLgBQbHVnaW4gaW5zdHJ1Y3RlZCB0aGUgc2VydmVyIHRvIHJvbGxiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb24uAElOUExBQ0UgQUREIG9yIERST1Agb2YgdmlydHVhbCBjb2x1bW5zIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIEFMVEVSIFRBQkxFIGFjdGlvbnMAQ2Fubm90IGRlZmluZSBmb3JlaWduIGtleSB3aXRoICVzIGNsYXVzZSBvbiBhIGdlbmVyYXRlZCBjb2x1bW4uAFRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBpbiB0YWJsZSAnJXMnIGlzIG5vdCBhbGxvd2VkLgAnJXMnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGdlbmVyYXRlZCBjb2x1bW5zLgBHZW5lcmF0ZWQgY29sdW1uIGNhbiByZWZlciBvbmx5IHRvIGdlbmVyYXRlZCBjb2x1bW5zIGRlZmluZWQgcHJpb3IgdG8gaXQuAENvbHVtbiAnJXMnIGhhcyBhIGdlbmVyYXRlZCBjb2x1bW4gZGVwZW5kZW5jeS4AR2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhdXRvLWluY3JlbWVudCBjb2x1bW4uAFRoZSAnJS0uNjRzJyBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGU7IHlvdSBuZWVkIHRvIHJlbW92ZSAnJS0uNjRzJyBvciB1c2UgTXlTUUwgYnVpbHQgd2l0aCAnJS0uNjRzJwBTRVQgQEBHTE9CQUwuR1RJRF9NT0RFID0gJS0uNjRzIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgJS0uMzg0cy4AVGhlIHJlcGxpY2F0aW9uIHJlY2VpdmVyIHRocmVhZCUtLjE5MnMgY2Fubm90IHN0YXJ0IGluIEFVVE9fUE9TSVRJT04gbW9kZTogdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQVVUT19QT1NJVElPTiA9IDEsIGF0IGZpbGUgJS41MTJzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBHVElELXRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHNldCBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTiBiZWNhdXNlIHRoZXJlIGFyZSBvbmdvaW5nIHRyYW5zYWN0aW9ucyB0aGF0IHZpb2xhdGUgR1RJRCBjb25zaXN0ZW5jeS4AVGhlcmUgYXJlIG9uZ29pbmcgdHJhbnNhY3Rpb25zIHRoYXQgdmlvbGF0ZSBHVElEIGNvbnNpc3RlbmN5LgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGxvY2tlZC4ASW5jb3JyZWN0IHRhYmxlc3BhY2UgbmFtZSBgJS0uMTkyc2AAVGFibGVzcGFjZSBgJS0uMTkyc2AgaXMgbm90IGVtcHR5LgBJbmNvcnJlY3QgRmlsZSBOYW1lICclcycuAEluY29uc2lzdGVudCBpbnRlcnNlY3Rpb24gcG9pbnRzLgBPcHRpbWl6ZXIgaGludCBzeW50YXggZXJyb3IAVW5zdXBwb3J0ZWQgTUFYX0VYRUNVVElPTl9USU1FAE1BWF9FWEVDVVRJT05fVElNRSBoaW50IGlzIHN1cHBvcnRlZCBieSB0b3AtbGV2ZWwgc3RhbmRhbG9uZSBTRUxFQ1Qgc3RhdGVtZW50cyBvbmx5AEhpbnQgJXMgaXMgaWdub3JlZCBhcyBjb25mbGljdGluZy9kdXBsaWNhdGVkAFF1ZXJ5IGJsb2NrIG5hbWUgJXMgaXMgbm90IGZvdW5kIGZvciAlcyBoaW50AFVucmVzb2x2ZWQgbmFtZSAlcyBmb3IgJXMgaGludABQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGUgJXMgdGFibGUuIFRoaXMgaXMgYSBteXNxbCBpbnRlcm5hbCBzeXN0ZW0gdGFibGUgdG8gc3RvcmUgR1RJRHMgZm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuIE1vZGlmeWluZyBpdCBjYW4gbGVhZCB0byBhbiBpbmNvbnNpc3RlbnQgR1RJRCBzdGF0ZS4AQ29tbWFuZCBub3Qgc3VwcG9ydGVkIGJ5IHBsdWdnYWJsZSBwcm90b2NvbHMASW5jb3JyZWN0IGxvY2tpbmcgc2VydmljZSBsb2NrIG5hbWUgJyUtLjE5MnMnLgBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgbG9ja2luZyBzZXJ2aWNlIGxvY2s7IHRyeSByZWxlYXNpbmcgbG9ja3MgYW5kIHJlc3RhcnRpbmcgbG9jayBhY3F1aXNpdGlvbi4AU2VydmljZSBsb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZC4AUGFyYW1ldGVyICVzIGV4Y2VlZHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBvaW50cyBpbiBhIGdlb21ldHJ5ICglbHUpIGluIGZ1bmN0aW9uICVzLgAnTk9fWkVST19EQVRFJywgJ05PX1pFUk9fSU5fREFURScgYW5kICdFUlJPUl9GT1JfRElWSVNJT05fQllfWkVSTycgc3FsIG1vZGVzIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaWN0IG1vZGUuIFRoZXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBzdHJpY3QgbW9kZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBWZXJzaW9uIHRva2VuIG1pc21hdGNoIGZvciAlLipzLiBDb3JyZWN0IHZhbHVlICUuKnMAVmVyc2lvbiB0b2tlbiAlLipzIG5vdCBmb3VuZC4AVmFyaWFibGUgJS0uMTkycyBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suACUtLjE5MnMgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4ASW52YWxpZCBKU09OIHRleHQ6ICIlcyIgYXQgcG9zaXRpb24gJXUgaW4gdmFsdWUgZm9yIGNvbHVtbiAnJS0uMjAwcycgYXQgcm93ICVsZC4ASW52YWxpZCBKU09OIHRleHQgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM6ICIlcyIgYXQgcG9zaXRpb24gJXUuJS0uMHMAVGhlIEpTT04gYmluYXJ5IHZhbHVlIGNvbnRhaW5zIGludmFsaWQgZGF0YS4ASW52YWxpZCBKU09OIHBhdGggZXhwcmVzc2lvbi4gVGhlIGVycm9yIGlzIGFyb3VuZCBjaGFyYWN0ZXIgcG9zaXRpb24gJXUuJS0uMjAwcwBDYW5ub3QgY3JlYXRlIGEgSlNPTiB2YWx1ZSBmcm9tIGEgc3RyaW5nIHdpdGggQ0hBUkFDVEVSIFNFVCAnJXMnLgBJbnZhbGlkIEpTT04gY2hhcmFjdGVyIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6ICclcyc7IHV0ZjggaXMgcmVxdWlyZWQuAEludmFsaWQgZGF0YSB0eXBlIGZvciBKU09OIGRhdGEgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM7IGEgSlNPTiBzdHJpbmcgb3IgSlNPTiB0eXBlIGlzIHJlcXVpcmVkLgBDYW5ub3QgQ0FTVCB2YWx1ZSB0byBKU09OLgBBIHBhdGggZXhwcmVzc2lvbiBtdXN0IGJlIGVuY29kZWQgaW4gdGhlIHV0ZjggY2hhcmFjdGVyIHNldC4gVGhlIHBhdGggZXhwcmVzc2lvbiAnJS0uMjAwcycgaXMgZW5jb2RlZCBpbiBjaGFyYWN0ZXIgc2V0ICclLS4yMDBzJy4ASW4gdGhpcyBzaXR1YXRpb24sIHBhdGggZXhwcmVzc2lvbnMgbWF5IG5vdCBjb250YWluIHRoZSAqIGFuZCAqKiB0b2tlbnMgb3IgYW4gYXJyYXkgcmFuZ2UuAFRoZSBKU09OIHZhbHVlIGlzIHRvbyBiaWcgdG8gYmUgc3RvcmVkIGluIGEgSlNPTiBjb2x1bW4uAFRoZSBKU09OIG9iamVjdCBjb250YWlucyBhIGtleSBuYW1lIHRoYXQgaXMgdG9vIGxvbmcuAEpTT04gY29sdW1uICclLS4xOTJzJyBzdXBwb3J0cyBpbmRleGluZyBvbmx5IHZpYSBnZW5lcmF0ZWQgY29sdW1ucyBvbiBhIHNwZWNpZmllZCBKU09OIHBhdGguAFRoZSBwYXRoIGV4cHJlc3Npb24gJyQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC4AVGhlIG9uZU9yQWxsIGFyZ3VtZW50IHRvICVzIG1heSB0YWtlIHRoZXNlIHZhbHVlczogJ29uZScgb3IgJ2FsbCcuAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIHRvICVzJS0uMHMgZnJvbSBjb2x1bW4gJXMgYXQgcm93ICVsZABJbnZhbGlkIEpTT04gdmFsdWUgZm9yIENBU1QgdG8gJXMlLS4wcyBmcm9tIGNvbHVtbiAlcyBhdCByb3cgJWxkAFRoZSBKU09OIGRvY3VtZW50IGV4Y2VlZHMgdGhlIG1heGltdW0gZGVwdGguAEpTT04gZG9jdW1lbnRzIG1heSBub3QgY29udGFpbiBOVUxMIG1lbWJlciBuYW1lcy4AQ29ubmVjdGlvbnMgdXNpbmcgaW5zZWN1cmUgdHJhbnNwb3J0IGFyZSBwcm9oaWJpdGVkIHdoaWxlIC0tcmVxdWlyZV9zZWN1cmVfdHJhbnNwb3J0PU9OLgBObyBzZWN1cmUgdHJhbnNwb3J0cyAoU1NMIG9yIFNoYXJlZCBNZW1vcnkpIGFyZSBjb25maWd1cmVkLCB1bmFibGUgdG8gc2V0IC0tcmVxdWlyZV9zZWN1cmVfdHJhbnNwb3J0PU9OLgBTdG9yYWdlIGVuZ2luZSAlcyBpcyBkaXNhYmxlZCAoVGFibGUgY3JlYXRpb24gaXMgZGlzYWxsb3dlZCkuAEF1dGhvcml6YXRpb24gSUQgJXMgZG9lcyBub3QgZXhpc3QuAEF1dGhvcml6YXRpb24gSUQgJXMgYWxyZWFkeSBleGlzdHMuAEFib3J0ZWQgYnkgQXVkaXQgQVBJICgnJS0uNDhzJzslZCkuAEEgcGF0aCBleHByZXNzaW9uIGlzIG5vdCBhIHBhdGggdG8gYSBjZWxsIGluIGFuIGFycmF5LgBBbm90aGVyIGJ1ZmZlciBwb29sIHJlc2l6ZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLgBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yICclcycAU2VydmVyIGlzbid0IGF2YWlsYWJsZQBTZXNzaW9uIHdhcyBraWxsZWQATWVtb3J5IGNhcGFjaXR5IG9mICVsbHUgYnl0ZXMgZm9yICclcycgZXhjZWVkZWQuICVzAFJhbmdlIG9wdGltaXphdGlvbiB3YXMgbm90IGRvbmUgZm9yIHRoaXMgcXVlcnkuAFBhcnRpdGlvbmluZyB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZHVtcC9yZWxvYWQgdG8gZml4IGl0IG9yIGRvOiBBTFRFUiBUQUJMRSBgJS0uMTkyc2AuYCUtLjE5MnNgIFVQR1JBREUgUEFSVElUSU9OSU5HAFRoZSBjbGllbnQgaG9sZHMgb3duZXJzaGlwIG9mIHRoZSBHVElEICVzLiBUaGVyZWZvcmUsIFdBSVRfRk9SX0VYRUNVVEVEX0dUSURfU0VUIGNhbm5vdCB3YWl0IGZvciB0aGlzIEdUSUQuAENhbm5vdCBhZGQgZm9yZWlnbiBrZXkgb24gdGhlIGJhc2UgY29sdW1uIG9mIGluZGV4ZWQgdmlydHVhbCBjb2x1bW4uAENhbm5vdCBjcmVhdGUgaW5kZXggb24gdmlydHVhbCBjb2x1bW4gd2hvc2UgYmFzZSBjb2x1bW4gaGFzIGZvcmVpZ24gY29uc3RyYWludC4AUGxlYXNlIGRvIG5vdCBtb2RpZnkgdGhlICVzIHRhYmxlIHdpdGggYW4gWEEgdHJhbnNhY3Rpb24uIFRoaXMgaXMgYW4gaW50ZXJuYWwgc3lzdGVtIHRhYmxlIHVzZWQgdG8gc3RvcmUgR1RJRHMgZm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuIEFsdGhvdWdoIG1vZGlmeWluZyBpdCBjYW4gbGVhZCB0byBhbiBpbmNvbnNpc3RlbnQgR1RJRCBzdGF0ZSwgaWYgbmVjZXNzYXJ5IHlvdSBjYW4gbW9kaWZ5IGl0IHdpdGggYSBub24tWEEgdHJhbnNhY3Rpb24uAExvY2sgYWNxdWlzaXRpb24gcmVmdXNlZCBieSBzdG9yYWdlIGVuZ2luZS4AQUREIENPTFVNTiBjb2wuLi5WSVJUVUFMLCBBREQgSU5ERVgoY29sKQBNYXN0ZXIga2V5IHJvdGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3RvcmFnZSBlbmdpbmUuAEVuY3J5cHRpb24ga2V5IHJvdGF0aW9uIGVycm9yIHJlcG9ydGVkIGJ5IFNFOiAlcwBXcml0ZSB0byBiaW5sb2cgZmFpbGVkLiBIb3dldmVyLCBtYXN0ZXIga2V5IHJvdGF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuAFN0b3JhZ2UgZW5naW5lIGlzIG5vdCBhdmFpbGFibGUuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBlbmNyeXB0ZWQuAEludmFsaWQgZW5jcnlwdGlvbiBvcHRpb24uAENhbid0IGZpbmQgbWFzdGVyIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAFBhcnNlciBiYWlsZWQgb3V0IGZvciB0aGlzIHF1ZXJ5LgBDYW5ub3QgYWx0ZXIgZW5jcnlwdGlvbiBhdHRyaWJ1dGUgYnkgaW5wbGFjZSBhbGdvcml0aG0uAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2UgdW5kZXJseWluZyBrZXlyaW5nIHNlcnZpY2UgcmV0dXJuZWQgYW4gZXJyb3IuIFBsZWFzZSBjaGVjayBpZiBhIGtleXJpbmcgaXMgaW5zdGFsbGVkIGFuZCB0aGF0IHByb3ZpZGVkIGFyZ3VtZW50cyBhcmUgdmFsaWQgZm9yIHRoZSBrZXlyaW5nIHlvdSBhcmUgdXNpbmcuAEl0IHNlZW1zIHRoYXQgeW91ciBkYiBzY2hlbWEgaXMgb2xkLiBUaGUgJXMgY29sdW1uIGlzIDc3IGNoYXJhY3RlcnMgbG9uZyBhbmQgc2hvdWxkIGJlIDkzIGNoYXJhY3RlcnMgbG9uZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMgaXMgbm90IGFsbG93ZWQgYmVjYXVzZSAlLS4zODRzLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIGdyb3VwIGFscmVhZHkgaGFzIDkgbWVtYmVycy4AQ2Fubm90IGFkZCBmb3JlaWduIGtleSBvbiB0aGUgYmFzZSBjb2x1bW4gb2Ygc3RvcmVkIGNvbHVtbi4gAENhbm5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGJlY2F1c2UgdGFibGUgaXMgcmVmZXJlbmNlZCBieSBhbm90aGVyIGNvbm5lY3Rpb24uAFRoZSBwYXJ0aXRpb24gZW5naW5lLCB1c2VkIGJ5IHRhYmxlICclLS4xOTJzLiUtLjE5MnMnLCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSBuYXRpdmUgcGFydGl0aW9uaW5nIGluc3RlYWQuACUuMTkycyhnZW9tZXRyeSkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSBzdF9zcmlkKGdlb21ldHJ5LCAwKSBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBVc2UgJS4xOTJzKHN0X2Fzd2tiKGdlb21ldHJ5KSwgMCkgaW5zdGVhZC4AJS4xOTJzKGdlb21ldHJ5LCBzcmlkKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHN0X3NyaWQoZ2VvbWV0cnksIHNyaWQpIGluIGEgZnV0dXJlIHZlcnNpb24uIFVzZSAlLjE5MnMoc3RfYXN3a2IoZ2VvbWV0cnkpLCBzcmlkKSBpbnN0ZWFkLgBUaGUgcmVzb3VyY2UgbWFuYWdlciBpcyBub3QgYWJsZSB0byBjb21taXQgdGhlIHRyYW5zYWN0aW9uIGJyYW5jaCBhdCB0aGlzIHRpbWUuIFBsZWFzZSByZXRyeSBsYXRlci4ARnVuY3Rpb24gJXMgZmFpbGVkIGR1ZSB0bzogJXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpcyBiZWluZyB1c2VkIGluc2lkZSBhIFhBIHRyYW5zYWN0aW9uLiBDb25jdXJyZW50IFhBIHRyYW5zYWN0aW9ucyBtYXkgZGVhZGxvY2sgb24gcmVwbGljYXMgd2hlbiByZXBsaWNhdGVkIHVzaW5nIHN0YXRlbWVudHMuACVzIFVERiBmYWlsZWQ7ICVzAENhbiBub3QgcGVyZm9ybSBrZXlyaW5nIG1pZ3JhdGlvbiA6ICVzAEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkICUtLjEyOHMgcHJpdmlsZWdlcyBmb3IgdGhpcyBvcGVyYXRpb24AS2V5cmluZyBtaWdyYXRpb24gJXMuAEZhaWxlZCB0byBvcGVuIHRoZSAlcyBmaWx0ZXIgdGFibGVzLgBGYWlsZWQgdG8gb3BlbiAnJXMuJXMnICVzIHRhYmxlLgBObyBrZXlyaW5nIHBsdWdpbiBpbnN0YWxsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGhhcyBub3QgYmVlbiBzZXQ7IGl0IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIFVzZSBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9nZXQgdG8gb2J0YWluIHRoZSBwYXNzd29yZCBvciBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9zZXQgdG8gc2V0IGEgbmV3IG9uZS4AQ291bGQgbm90IGNyZWF0ZSBBRVMga2V5LiBPcGVuU1NMJ3MgRVZQX0J5dGVzVG9LZXkgZnVuY3Rpb24gZmFpbGVkLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBjYW5ub3QgYmUgZmV0Y2hlZCBmcm9tIHRoZSBrZXlyaW5nLiBQYXNzd29yZCB1c2VkIHNvIGZhciBpcyB1c2VkIGZvciBlbmNyeXB0aW9uLgBBdWRpdCBMb2cgZmlsdGVyaW5nIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyVzJ0AnJXMnLiBTVVBFUiBwcml2aWxlZ2Ugb3IgQVVESVRfQURNSU4gcm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb24AU1VQRVIgcHJpdmlsZWdlIG9yIEFVRElUX0FETUlOIHJvbGUgcmVxdWlyZWQgZm9yICclcydAJyVzJyB1c2VyLgBDb3VsZCBub3QgcmVpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWx0ZXJzLgBJbnZhbGlkIGFyZ3VtZW50IHR5cGUASW52YWxpZCBhcmd1bWVudCBjb3VudABhdWRpdF9sb2cgcGx1Z2luIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgdXNpbmcgSU5TVEFMTCBQTFVHSU4gc3ludGF4LgBJbnZhbGlkICJtYXhfYXJyYXlfbGVuZ3RoIiBhcmd1bWVudCB0eXBlLgBJbnZhbGlkICJtYXhfYXJyYXlfbGVuZ3RoIiBhcmd1bWVudCB2YWx1ZS4AJXMARmlsdGVyIG5hbWUgY2Fubm90IGJlIGVtcHR5LgBVc2VyIGNhbm5vdCBiZSBlbXB0eS4AU3BlY2lmaWVkIGZpbHRlciBoYXMgbm90IGJlZW4gZm91bmQuAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdXNlciBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgdXNlciBuYW1lLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLgBXaXRoIHRoZSBNQVhEQiBTUUwgbW9kZSBlbmFibGVkLCBUSU1FU1RBTVAgaXMgaWRlbnRpY2FsIHdpdGggREFURVRJTUUuIFRoZSBNQVhEQiBTUUwgbW9kZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGRpc2FibGUgdGhlIE1BWERCIFNRTCBtb2RlIGFuZCB1c2UgREFURVRJTUUgaW5zdGVhZC4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMAR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4AQ2FuJ3Qgc3RhcnQgc2VydmVyIDogTmFtZWQgUGlwZSAiJXMiIGFscmVhZHkgaW4gdXNlLgBUaGUgc2l6ZSBvZiB3cml0ZXNldCBkYXRhIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBleGNlZWRzIGEgbGltaXQgaW1wb3NlZCBieSBhbiBleHRlcm5hbCBjb21wb25lbnQuIElmIHVzaW5nIEdyb3VwIFJlcGxpY2F0aW9uIGNoZWNrICdncm91cF9yZXBsaWNhdGlvbl90cmFuc2FjdGlvbl9zaXplX2xpbWl0Jy4AQWNjZXB0ZWQgYSBjb25uZWN0aW9uIHdpdGggZGVwcmVjYXRlZCBwcm90b2NvbCAnJXMnIGZvciBhY2NvdW50IGAlc2BAYCVzYCBmcm9tIGhvc3QgYCVzYC4gQ2xpZW50IHN1cHBsaWVkIHVzZXJuYW1lIGAlc2AAQSBkZXByZWNhdGVkIFRMUyB2ZXJzaW9uICVzIGlzIGVuYWJsZWQuIFBsZWFzZSB1c2UgVExTdjEuMiBvciBoaWdoZXIuAE9wdGlvbmFsIG5hdGl2ZSB0YWJsZSAnJS0uNjRzJy4nJS0uNjRzJyBoYXMgdGhlIHdyb25nIHN0cnVjdHVyZSBvciBpcyBtaXNzaW5nLgBLREYgbWV0aG9kIG5hbWUgaXMgbm90IHZhbGlkLiBQbGVhc2UgdXNlIGhrZGYgb3IgcGJrZGYyX2htYWMgbWV0aG9kIG5hbWUARm9yIEtERiBtZXRob2QgcGJrZGYyX2htYWMgaXRlcmF0aW9ucyB2YWx1ZSBsZXNzIHRoYW4gMTAwMCBvciBtb3JlIHRoYW4gNjU1MzUgaXMgbm90IGFsbG93ZWQgZHVlIHRvIHNlY3VyaXR5IHJlYXNvbnMuIFBsZWFzZSBwcm92aWRlIGl0ZXJhdGlvbnMgPj0gMTAwMCBhbmQgaXRlcmF0aW9ucyA8IDY1NTM1AEFFUyBrZXkgc2l6ZSBzaG91bGQgYmUgJWQgYnl0ZXMgbGVuZ3RoIG9yIHNlY3VyZSBLREYgbWV0aG9kcyBoa2RmIG9yIHBia2RmMl9obWFjIHNob3VsZCBiZSB1c2VkLCBwbGVhc2UgcHJvdmlkZSBleGFjdCBBRVMga2V5IHNpemUgb3IgdXNlIEtERiBtZXRob2RzIGZvciBiZXR0ZXIgc2VjdXJpdHkuAEtERiBvcHRpb24gc2l6ZSBpcyBpbnZhbGlkLCBwbGVhc2UgcHJvdmlkZSB2YWxpZCBzaXplIDwgJWQgYnl0ZXMgYW5kIG5vdCBOVUxMAENSRUFURSBURU1QT1JBUlkgVEFCTEUgaXMgbm90IGFsbG93ZWQgd2l0aCBST1dfRk9STUFUPUNPTVBSRVNTRUQgb3IgS0VZX0JMT0NLX1NJWkUuAFRoZSBBQ0wgb3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvciBmcm9tIFNFOiBlcnJjb2RlICVkIC0gJS4yNTZzAFRoaXMgc3RvcmFnZSBlbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgJXMgaW5kZXggYWxnb3JpdGhtLCBzdG9yYWdlIGVuZ2luZSBkZWZhdWx0IHdhcyB1c2VkIGluc3RlYWQuAERhdGFiYXNlICclLS4xOTJzJyBkb2Vzbid0IGV4aXN0AFRvbyBtYW55IGVudW1lcmF0aW9uIHZhbHVlcyBmb3IgY29sdW1uICUuMTkycy4AVG9vIGxvbmcgZW51bWVyYXRpb24vc2V0IHZhbHVlIGZvciBjb2x1bW4gJS4xOTJzLgAlcyBkaWN0aW9uYXJ5IG9iamVjdCBpcyBpbnZhbGlkLiAoJS4xOTJzKQBGYWlsZWQgdG8gdXBkYXRlICUuMTkycyBkaWN0aW9uYXJ5IG9iamVjdC4ARGljdGlvbmFyeSBvYmplY3QgaWQgKCVsdSkgZG9lcyBub3QgZXhpc3QuAERpY3Rpb25hcnkgb2JqZWN0IG5hbWUgJyVzJyBpcyBpbnZhbGlkLiAoJS4xOTJzKQBUYWJsZXNwYWNlICUtLjE5MnMgZG9lc24ndCBleGlzdC4AQ29tbWVudCBmb3Igcm91dGluZSAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBGYWlsZWQgdG8gbG9hZCByb3V0aW5lICclLS42NHMnLgBCaW5hcnkgb3BlcmFuZHMgb2YgYml0d2lzZSBvcGVyYXRvcnMgbXVzdCBiZSBvZiBlcXVhbCBsZW5ndGgAQWdncmVnYXRlIGJpdHdpc2UgZnVuY3Rpb25zIGNhbm5vdCBhY2NlcHQgYXJndW1lbnRzIGxvbmdlciB0aGFuIDUxMSBieXRlczsgY29uc2lkZXIgdXNpbmcgdGhlIFNVQlNUUklORygpIGZ1bmN0aW9uAEhpbnRzIGFyZW4ndCBzdXBwb3J0ZWQgaW4gJXMAJS42NHMgdmFsdWUgaXMgYSBnZW9tZXRyeSBvZiB1bmV4cGVjdGVkIHR5cGUgJS42NHMgaW4gJS42NHMuAENhbid0IHBhcnNlIHRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBvZiBTUklEICV1LgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbWFuZGF0b3J5ICVzIChFUFNHICV1KSBwcm9qZWN0aW9uIHBhcmFtZXRlci4AVGhlcmUncyBubyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaXMgbm90IENhcnRlc2lhbi4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBDYXJ0ZXNpYW4gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcywgYnV0IG9uZSBvZiBpdHMgYXJndW1lbnRzIGlzIGluIFNSSUQgJXUsIHdoaWNoIGhhcyBub3QgYmVlbiBkZWZpbmVkLgBBIHByaW1hcnkga2V5IGluZGV4IGNhbm5vdCBiZSBpbnZpc2libGUAVW5rbm93biBhdXRob3JpemF0aW9uIElEIGAlLjY0c2BAYCUuNjRzYABGYWlsZWQgdG8gZ3JhbnQgJS45MHNgIHRvICUuOTBzAEZhaWxlZCB0byBvcGVuIHRoZSBzZWN1cml0eSBzeXN0ZW0gdGFibGVzAEZhaWxlZCB0byBzZXQgZGVmYXVsdCByb2xlcwBDYW5ub3QgZmluZCBzY2hlbWEgaW4gc3BlY2lmaWVkIFVSTjogJyUuMTkycycuAENhbm5vdCBhY3F1aXJlIHNjaGVtZSBsb2FkIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm9yIHNjaGVtYSAnJS4xOTJzJyBpbiBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AQ2Fubm90IGxvYWQgY29tcG9uZW50IGZyb20gc3BlY2lmaWVkIFVSTjogJyUuMTkycycuAGAlLjY0c2BAYCUuNjRzYCBpcyBub3QgZ3JhbnRlZCB0byBgJS42NHNgQGAlLjY0c2AAQ291bGQgbm90IHJldm9rZSByb2xlIGZyb20gYCUuNjRzYEBgJS42NHNgAFJlbmFtaW5nIG9mIGEgcm9sZSBpZGVudGlmaWVyIGlzIGZvcmJpZGRlbgBDYW5ub3QgYWNxdWlyZSBzcGVjaWZpZWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbjogJyUuMTkycycuAENhbm5vdCBzYXRpc2Z5IGRlcGVuZGVuY3kgZm9yIHNlcnZpY2UgJyUuMTkycycgcmVxdWlyZWQgYnkgY29tcG9uZW50ICclLjE5MnMnLgBDYW5ub3QgcmVnaXN0ZXIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiAnJS4xOTJzJyBwcm92aWRlZCBieSBjb21wb25lbnQgJyUuMTkycycuAEluaXRpYWxpemF0aW9uIG1ldGhvZCBwcm92aWRlZCBieSBjb21wb25lbnQgJyUuMTkycycgZmFpbGVkLgBDb21wb25lbnQgc3BlY2lmaWVkIGJ5IFVSTiAnJS4xOTJzJyB0byB1bmxvYWQgaGFzIG5vdCBiZWVuIGxvYWRlZCBiZWZvcmUuAERlLWluaXRpYWxpemF0aW9uIG1ldGhvZCBwcm92aWRlZCBieSBjb21wb25lbnQgJyUuMTkycycgZmFpbGVkLgBSZWxlYXNlIG9mIHByZXZpb3VzbHkgYWNxdWlyZWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBmYWlsZWQuAFVucmVnaXN0cmF0aW9uIG9mIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gJyUuMTkycycgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnIGZhaWxlZCBkdXJpbmcgdW5sb2FkaW5nIG9mIHRoZSBjb21wb25lbnQuAENhbm5vdCB1bmxvYWQgY29tcG9uZW50IGZyb20gc3BlY2lmaWVkIFVSTjogJyUuMTkycycuAFRoZSBQZXJzaXN0ZW50IER5bmFtaWMgTG9hZGVyIHdhcyB1c2VkIHRvIHVubG9hZCBhIGNvbXBvbmVudCAnJS4xOTJzJywgYnV0IGl0IHdhcyBub3QgdXNlZCB0byBsb2FkIHRoYXQgY29tcG9uZW50IGJlZm9yZS4AVGhlIG15c3FsLmNvbXBvbmVudCB0YWJsZSBpcyBtaXNzaW5nIG9yIGhhcyBhbiBpbmNvcnJlY3QgZGVmaW5pdGlvbi4ARmFpbGVkIHRvIG1hbmlwdWxhdGUgY29tcG9uZW50ICclLjE5MnMnIHBlcnNpc3RlbmNlIGRhdGEuIEVycm9yIGNvZGUgJWQgZnJvbSBzdG9yYWdlIGVuZ2luZS4AVGhlIGNvbXBvbmVudCB3aXRoIHNwZWNpZmllZCBVUk46ICclLjE5MnMnIHdhcyBzcGVjaWZpZWQgaW4gZ3JvdXAgbW9yZSB0aGFuIG9uY2UuAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbm5vdCBiZSBjaGFuZ2VkOiAlcwBDYW4gbm90IGxvY2sgdXNlciBtYW5hZ2VtZW50IGNhY2hlcyBmb3IgcHJvY2Vzc2luZy4AVGhlcmUncyBubyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBWYXJpYWJsZXMgY2Fubm90IGJlIHBlcnNpc3RlZC4gUGxlYXNlIHJldHJ5LgBJbmZvcm1hdGlvbiBzY2hlbWEgcXVlcmllcyBkbyBub3Qgc3VwcG9ydCB0aGUgJyVzJyBjbGF1c2UuAFVuYWJsZSB0byBzdG9yZSBkeW5hbWljICVzIHN0YXRpc3RpY3MgaW50byBkYXRhIGRpY3Rpb25hcnkuAEFjY2VzcyB0byBzeXN0ZW0gc2NoZW1hICclLjY0cycgaXMgcmVqZWN0ZWQuAEFjY2VzcyB0byBzeXN0ZW0gdGFibGVzcGFjZSAnJS42NHMnIGlzIHJlamVjdGVkLgBBY2Nlc3MgdG8gJS42NHMgJyUuNjRzLiUuNjRzJyBpcyByZWplY3RlZC4AZGF0YSBkaWN0aW9uYXJ5IHRhYmxlAHN5c3RlbSB0YWJsZQB0YWJsZQBJbnZhbGlkIG9wdGlvbiBrZXkgJyUuMTkycycgaW4gZnVuY3Rpb24gJS4xOTJzLgBJbnZhbGlkIHZhbHVlICclLjE5MnMnIGZvciBvcHRpb24gJyUuMTkycycgaW4gZnVuY3Rpb24gJyUuMTkycycuAFRoZSBzdHJpbmcgJyUuMTkycycgaXMgbm90IGEgdmFsaWQga2V5ICVjIHZhbHVlIHBhaXIgaW4gZnVuY3Rpb24gJS4xOTJzLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgc3RhcnRzIHdpdGggdGhlIGludmFsaWQgY2hhcmFjdGVyICclYycuAFRoZSBvcHRpb25zIGFyZ3VtZW50IGluIGZ1bmN0aW9uICUuMTkycyBlbmRzIHdpdGggdGhlIGludmFsaWQgY2hhcmFjdGVyICclYycuAFRoZSBvcHRpb25zIGFyZ3VtZW50IGluIGZ1bmN0aW9uICUuMTkycyBjb250YWlucyB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgc2VxdWVuY2UgJyUuMTkycycuAER1cGxpY2F0ZSBvcHRpb24ga2V5ICclLjE5MnMnIGluIGZ1bnRpb24gJyUuMTkycycuAFRoZXJlJ3Mgbm8gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4gVGhlIGF4aXMgb3JkZXIgaXMgdW5rbm93bi4AQWNjZXNzIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS42NHMnIGlzIHJlamVjdGVkLgBUaGUgcmVxdWVzdGVkIHZhbHVlICclbGx1JyBmb3IgdGhlIG5leHQgYmluYXJ5IGxvZyBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuIFBsZWFzZSB1c2UgYSB2YWx1ZSBiZXR3ZWVuICcxJyBhbmQgJyVsdScuAFVucmVzb2x2ZWQgdGFibGUgbmFtZSAlcyBpbiBsb2NraW5nIGNsYXVzZS4AVGFibGUgJXMgYXBwZWFycyBpbiBtdWx0aXBsZSBsb2NraW5nIGNsYXVzZXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIFNLSVAgTE9DS0VELiBUaGUgc2V0IG9mIGluc2VydGVkIHZhbHVlcyBpcyBub24tZGV0ZXJtaW5pc3RpYy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgTk9XQUlULiBXaGV0aGVyIHRoZSBjb21tYW5kIHdpbGwgc3VjY2VlZCBvciBmYWlsIGlzIG5vdCBkZXRlcm1pbmlzdGljLgBTdGF0ZW1lbnQgYWJvcnRlZCBiZWNhdXNlIGxvY2socykgY291bGQgbm90IGJlIGFjcXVpcmVkIGltbWVkaWF0ZWx5IGFuZCBOT1dBSVQgaXMgc2V0LgBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBzaG91bGQgY29udGFpbiBhIFVOSU9OAFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnIHNob3VsZCBoYXZlIG9uZSBvciBtb3JlIG5vbi1yZWN1cnNpdmUgcXVlcnkgYmxvY2tzIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIHJlY3Vyc2l2ZSBvbmVzAFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnIGNhbiBjb250YWluIG5laXRoZXIgYWdncmVnYXRpb24gbm9yIHdpbmRvdyBmdW5jdGlvbnMgaW4gcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrAEluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jayBvZiBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJywgdGhlIHJlY3Vyc2l2ZSB0YWJsZSBtdXN0IG5laXRoZXIgYmUgaW4gdGhlIHJpZ2h0IGFyZ3VtZW50IG9mIGEgTEVGVCBKT0lOLCBub3IgYmUgZm9yY2VkIHRvIGJlIG5vbi1maXJzdCB3aXRoIGpvaW4gb3JkZXIgaGludHMASW4gcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrIG9mIFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnLCB0aGUgcmVjdXJzaXZlIHRhYmxlIG11c3QgYmUgcmVmZXJlbmNlZCBvbmx5IG9uY2UsIGFuZCBub3QgaW4gYW55IHN1YnF1ZXJ5ACclcycgcmVxdWlyZXMgQEBpbnRlcm5hbF90bXBfZGlza19zdG9yYWdlX2VuZ2luZT1Jbm5vREIAV2luZG93IG5hbWUgJyVzJyBpcyBub3QgZGVmaW5lZC4AVGhlcmUgaXMgYSBjaXJjdWxhcml0eSBpbiB0aGUgd2luZG93IGRlcGVuZGVuY3kgZ3JhcGguAEEgd2luZG93IHdoaWNoIGRlcGVuZHMgb24gYW5vdGhlciBjYW5ub3QgZGVmaW5lIHBhcnRpdGlvbmluZy4AV2luZG93ICclcycgaGFzIGEgZnJhbWUgZGVmaW5pdGlvbiwgc28gY2Fubm90IGJlIHJlZmVyZW5jZWQgYnkgYW5vdGhlciB3aW5kb3cuAFdpbmRvdyAnJXMnIGNhbm5vdCBpbmhlcml0ICclcycgc2luY2UgYm90aCBjb250YWluIGFuIE9SREVSIEJZIGNsYXVzZS4AV2luZG93ICclcyc6IGZyYW1lIHN0YXJ0IGNhbm5vdCBiZSBVTkJPVU5ERUQgRk9MTE9XSU5HLgBXaW5kb3cgJyVzJzogZnJhbWUgZW5kIGNhbm5vdCBiZSBVTkJPVU5ERUQgUFJFQ0VESU5HLgBXaW5kb3cgJyVzJzogZnJhbWUgc3RhcnQgb3IgZW5kIGlzIG5lZ2F0aXZlLCBOVUxMIG9yIG9mIG5vbi1pbnRlZ3JhbCB0eXBlAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgTiBQUkVDRURJTkcvRk9MTE9XSU5HIGZyYW1lIHJlcXVpcmVzIGV4YWN0bHkgb25lIE9SREVSIEJZIGV4cHJlc3Npb24sIG9mIG51bWVyaWMgb3IgdGVtcG9yYWwgdHlwZQBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIGZyYW1lIGhhcyBPUkRFUiBCWSBleHByZXNzaW9uIG9mIGRhdGV0aW1lIHR5cGUuIE9ubHkgSU5URVJWQUwgYm91bmQgdmFsdWUgYWxsb3dlZC4AV2luZG93ICclcycgd2l0aCBSQU5HRSBmcmFtZSBoYXMgT1JERVIgQlkgZXhwcmVzc2lvbiBvZiBudW1lcmljIHR5cGUsIElOVEVSVkFMIGJvdW5kIHZhbHVlIG5vdCBhbGxvd2VkLgBXaW5kb3cgJyVzJyBoYXMgYSBub24tY29uc3RhbnQgZnJhbWUgYm91bmQuAFdpbmRvdyAnJXMnIGlzIGRlZmluZWQgdHdpY2UuAFdpbmRvdyAnJXMnOiBPUkRFUiBCWSBvciBQQVJUSVRJT04gQlkgdXNlcyBsZWdhY3kgcG9zaXRpb24gaW5kaWNhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLCB1c2UgZXhwcmVzc2lvbi4AWW91IGNhbm5vdCB1c2UgdGhlIHdpbmRvdyBmdW5jdGlvbiAnJXMnIGluIHRoaXMgY29udGV4dC4nAFlvdSBjYW5ub3QgdXNlIHRoZSBhbGlhcyAnJXMnIG9mIGFuIGV4cHJlc3Npb24gY29udGFpbmluZyBhIHdpbmRvdyBmdW5jdGlvbiBpbiB0aGlzIGNvbnRleHQuJwBZb3UgY2Fubm90IG5lc3QgYSB3aW5kb3cgZnVuY3Rpb24gaW4gdGhlIHNwZWNpZmljYXRpb24gb2Ygd2luZG93ICclcycuAFdpbmRvdyAnJXMnOiBJTlRFUlZBTCBjYW4gb25seSBiZSB1c2VkIHdpdGggUkFOR0UgZnJhbWVzLgBBU0Mgb3IgREVTQyB3aXRoIEdST1VQIEJZIGlzbid0IGFsbG93ZWQgd2l0aCB3aW5kb3cgZnVuY3Rpb25zOyBwdXQgQVNDIG9yIERFU0MgaW4gT1JERVIgQlkAVG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHdpbmRvdyBmdW5jdGlvbnMgdXNlIEVYUExBSU4gRk9STUFUPUpTT04AV2luZG93IGZ1bmN0aW9uICclcycgaWdub3JlcyB0aGUgZnJhbWUgY2xhdXNlIG9mIHdpbmRvdyAnJXMnIGFuZCBhZ2dyZWdhdGVzIG92ZXIgdGhlIHdob2xlIHBhcnRpdGlvbgBXaW5kb3dpbmcgcmVxdWlyZXMgQEBpbnRlcm5hbF90bXBfbWVtX3N0b3JhZ2VfZW5naW5lPVRlbXBUYWJsZS4AVG9vIG1hbnkgYXJndW1lbnRzIGZvciBmdW5jdGlvbiAlczogJWx1OyBtYXhpbXVtIGFsbG93ZWQgaXMgJXMuAEFyZ3VtZW50ICMldSBvZiBHUk9VUElORyBmdW5jdGlvbiBpcyBub3QgaW4gR1JPVVAgQlkAQ29tbWVudCBmb3IgdGFibGVzcGFjZSAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBTdG9yYWdlIGVuZ2luZSBjYW4ndCBkcm9wIHRhYmxlICclLS4xMjlzJwBTdG9yYWdlIGVuZ2luZSBjYW4ndCBkcm9wIHRhYmxlICclLS4xMjlzJyBiZWNhdXNlIGl0IGlzIG1pc3NpbmcuIFVzZSBEUk9QIFRBQkxFIElGIEVYSVNUUyB0byByZW1vdmUgaXQgZnJvbSBkYXRhLWRpY3Rpb25hcnkuAER1cGxpY2F0ZSBmaWxlIG5hbWUgZm9yIHRhYmxlc3BhY2UgJyUtLjY0cycAUHJvYmxlbSB3aGlsZSBkcm9wcGluZyBkYXRhYmFzZS4gQ2FuJ3QgcmVtb3ZlIGRhdGFiYXNlIGRpcmVjdG9yeSAoJXMpLiBQbGVhc2UgcmVtb3ZlIGl0IG1hbnVhbGx5LgBObyBTREkgZmlsZXMgbWF0Y2hlZCB0aGUgcGF0dGVybiAnJXMnAFNjaGVtYSAnJS4yNTZzJywgcmVmZXJlbmNlZCBpbiBTREksIGRvZXMgbm90IGV4aXN0LgBUYWJsZSAnJS4yNTZzLiUuMjU2cycsIHJlZmVyZW5jZWQgaW4gU0RJLCBhbHJlYWR5IGV4aXN0cy4ASW1wb3J0ZWQgbXlzcWxkX3ZlcnNpb24gKCVsbHUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudCAoJWxsdSkASW1wb3J0ZWQgZGQgdmVyc2lvbiAoJXUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudCAoJXUpAEltcG9ydGVkIHNkaSB2ZXJzaW9uICglbGx1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCVsbHUpAEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgaGludCAlcwBWYXJpYWJsZSAlcyBkb2VzIG5vdCBleGlzdCBpbiBwZXJzaXN0ZWQgY29uZmlnIGZpbGUATG9uZ2l0dWRlICVmIGlzIG91dCBvZiByYW5nZSBpbiBmdW5jdGlvbiAlLjE5MnMuIEl0IG11c3QgYmUgd2l0aGluICglZiwgJWZdLgBMYXRpdHVkZSAlZiBpcyBvdXQgb2YgcmFuZ2UgaW4gZnVuY3Rpb24gJS4xOTJzLiBJdCBtdXN0IGJlIHdpdGhpbiBbJWYsICVmXS4AJS4xOTJzKCUuODBzKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIGdlb2dyYXBoaWMgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcy4ASWxsZWdhbCBwcml2aWxlZ2UgbGV2ZWwgc3BlY2lmaWVkIGZvciAlcwBBY2Nlc3MgdG8gc3lzdGVtIHZpZXcgSU5GT1JNQVRJT05fU0NIRU1BLiclLjY0cycgaXMgcmVqZWN0ZWQuAFRoZSBsb2ctZmlsdGVyIGNvbXBvbmVudCAiJXMiIGdvdCBjb25mdXNlZCBhdCAiJXMiIC4uLgBQYXJ0aXRpb25pbmcgZXhwcmVzc2lvbiBpcyB0b28gbG9uZy4ARFJPUCBGVU5DVElPTiBjYW4ndCBkcm9wIGEgZHluYW1pY2FsbHkgcmVnaXN0ZXJlZCB1c2VyIGRlZmluZWQgZnVuY3Rpb24AVW5hYmxlIHRvIHN0b3JlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIHVwZGF0ZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byByZW1vdmUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gYnVpbGQgaGlzdG9ncmFtIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBUaGUgcm9sZSAlcyBpcyBhIG1hbmRhdG9yeSByb2xlIGFuZCBjYW4ndCBiZSByZXZva2VkIG9yIGRyb3BwZWQuIFRoZSByZXN0cmljdGlvbiBjYW4gYmUgbGlmdGVkIGJ5IGV4Y2x1ZGluZyB0aGUgcm9sZSBpZGVudGlmaWVyIGZyb20gdGhlIGdsb2JhbCB2YXJpYWJsZSBtYW5kYXRvcnlfcm9sZXMuAFRhYmxlc3BhY2UgJyUuMTkycycgZG9lcyBub3QgaGF2ZSBhIGZpbGUgbmFtZWQgJyUuMTkycycAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgJS0uMTI4cyBwcml2aWxlZ2VzIGZvciB0aGlzIG9wZXJhdGlvbgBZb3UgbmVlZCB0aGUgU1VQRVIgcHJpdmlsZWdlIGZvciBjb21tYW5kICclLS4xOTJzJwBQYXRoIGlzIHdpdGhpbiB0aGUgY3VycmVudCBkYXRhIGRpcmVjdG9yeSAnJS0uMTkycycAQ29uY3VycmVudCBEREwgaXMgcGVyZm9ybWVkIGR1cmluZyBjbG9uZSBvcGVyYXRpb24uIFBsZWFzZSB0cnkgYWdhaW4uAFRvbyBtYW55IGNvbmN1cnJlbnQgY2xvbmUgb3BlcmF0aW9ucy4gTWF4aW11bSBhbGxvd2VkIC0gJWQuAFRoZSB0YWJsZSBpbiB0cmFuc2FjdGlvbiAlcyBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIGJ5IGFuIGV4dGVybmFsIHBsdWdpbi4AUmVjdXJzaXZlIHF1ZXJ5IGFib3J0ZWQgYWZ0ZXIgJXUgaXRlcmF0aW9ucy4gVHJ5IGluY3JlYXNpbmcgQEBjdGVfbWF4X3JlY3Vyc2lvbl9kZXB0aCB0byBhIGxhcmdlciB2YWx1ZS4AVmFyaWFibGUgJXMgY2Fubm90IGJlIHNldCB1c2luZyBTRVRfVkFSIGhpbnQuAENhbm5vdCB1c2UgdGhlc2UgY3JlZGVudGlhbHMgZm9yICclLipzQCUuKnMnIGJlY2F1c2UgdGhleSBjb250cmFkaWN0IHRoZSBwYXNzd29yZCBoaXN0b3J5IHBvbGljeQBOb24temVybyBwYXNzd29yZCBoaXN0b3J5IGNsYXVzZXMgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IHBhc3N3b3JkIGhpc3RvcnkAVGhlIGNsaWVudCBkb2Vzbid0IHN1cHBvcnQgJXMAVGFibGVzcGFjZSAnJXMnIHdhcyBza2lwcGVkIHNpbmNlIGl0cyBkZWZpbml0aW9uIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IGNvbmN1cnJlbnQgRERMIHN0YXRlbWVudABFbmdpbmUgJyUuMTkycycgZG9lcyBub3QgbWF0Y2ggc3RvcmVkIGVuZ2luZSAnJS4xOTJzJyBmb3IgdGFibGVzcGFjZSAnJS4xOTJzJwBUaGUgU1JJRCBvZiB0aGUgZ2VvbWV0cnkgZG9lcyBub3QgbWF0Y2ggdGhlIFNSSUQgb2YgdGhlIGNvbHVtbiAnJS42NHMnLiBUaGUgU1JJRCBvZiB0aGUgZ2VvbWV0cnkgaXMgJWx1LCBidXQgdGhlIFNSSUQgb2YgdGhlIGNvbHVtbiBpcyAlbHUuIENvbnNpZGVyIGNoYW5naW5nIHRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBvciB0aGUgU1JJRCBwcm9wZXJ0eSBvZiB0aGUgY29sdW1uLgBUaGUgU1JJRCBzcGVjaWZpY2F0aW9uIG9uIHRoZSBjb2x1bW4gJyUuNjRzJyBjYW5ub3QgYmUgY2hhbmdlZCBiZWNhdXNlIHRoZXJlIGlzIGEgc3BhdGlhbCBpbmRleCBvbiB0aGUgY29sdW1uLiBQbGVhc2UgcmVtb3ZlIHRoZSBzcGF0aWFsIGluZGV4IGJlZm9yZSBhbHRlcmluZyB0aGUgU1JJRCBzcGVjaWZpY2F0aW9uLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnM9JS4xOTJzIHdpbGwgYmUgaWdub3JlZCBhbmQgdXBkYXRlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gZnVsbCBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gbG9nX2Jpbl91c2VfdjFfcm93X2V2ZW50cz0xIHdpbGwgYmUgaWdub3JlZCBhbmQgcm93IGV2ZW50cyB3aWxsIGJlIHdyaXR0ZW4gaW4gbmV3IGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnM9JS4xOTJzIHdpbGwgYmUgdXNlZCBvbmx5IGZvciB0aGUgYWZ0ZXItaW1hZ2UuIEZ1bGwgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbiBpbiB0aGUgYmVmb3JlLWltYWdlLCBzbyB0aGUgc2F2aW5nIGluIGRpc2sgc3BhY2UgZHVlIHRvIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucyBpcyBsaW1pdGVkIHRvIGxlc3MgdGhhbiA1MCUlLgBDb3VsZCBub3QgYXBwbHkgSlNPTiBkaWZmIGluIHRhYmxlICUuKnMsIGNvbHVtbiAlcy4AQ29ycnVwdGVkIEpTT04gZGlmZiBmb3IgdGFibGUgJS4qcywgY29sdW1uICVzLgBSZXNvdXJjZSBHcm91cCAnJS0uMTkycycgZXhpc3RzAFJlc291cmNlIEdyb3VwICclLS4xOTJzJyBkb2VzIG5vdCBleGlzdC4ASW52YWxpZCBjcHUgaWQgJXUASW52YWxpZCBWQ1BVIHJhbmdlICV1LSV1AEludmFsaWQgdGhyZWFkIHByaW9yaXR5IHZhbHVlICVkIGZvciAlcyByZXNvdXJjZSBncm91cCAlcy4gQWxsb3dlZCByYW5nZSBpcyBbJWQsICVkXS4AJXMgb3BlcmF0aW9uIGlzIGRpc2FsbG93ZWQgb24gJXMAUmVzb3VyY2UgZ3JvdXAgJXMgaXMgYnVzeS4AUmVzb3VyY2UgZ3JvdXAgJXMgaXMgZGlzYWJsZWQuAEZlYXR1cmUgJXMgaXMgdW5zdXBwb3J0ZWQgKCVzKS4AQXR0cmlidXRlICVzIGlzIGlnbm9yZWQgKCVzKS4ASW52YWxpZCB0aHJlYWQgaWQgKCVsbHUpLgBVbmFibGUgdG8gYmluZCByZXNvdXJjZSBncm91cCAlcyB3aXRoIHRocmVhZCBpZCAoJWxsdSkuKCVzKS4AT3B0aW9uIEZPUkNFIGludmFsaWQgYXMgRElTQUJMRSBvcHRpb24gaXMgbm90IHNwZWNpZmllZC4AVGhlICVzIGNvbW1hbmQgZW5jb3VudGVyZWQgYSBmYWlsdXJlLiAlcwBGYWlsZWQgdG8gJXMgU0RJICclLjE5MnMuJS4xOTJzJyBpbiB0YWJsZXNwYWNlICclLjE5MnMnLgBNaXNzaW5nIHZhbHVlIGZvciBKU09OX1RBQkxFIGNvbHVtbiAnJS4xOTJzJwBDYW4ndCBzdG9yZSBhbiBhcnJheSBvciBhbiBvYmplY3QgaW4gdGhlIHNjYWxhciBKU09OX1RBQkxFIGNvbHVtbiAnJS4xOTJzJwBFdmVyeSB0YWJsZSBmdW5jdGlvbiBtdXN0IGhhdmUgYW4gYWxpYXMASU5ORVIgb3IgTEVGVCBKT0lOIG11c3QgYmUgdXNlZCBmb3IgTEFURVJBTCByZWZlcmVuY2VzIG1hZGUgYnkgJyUuMTkycycAVmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciBKU09OX1RBQkxFJ3MgY29sdW1uICclLjE5MnMnAE1vcmUgdGhhbiBzdXBwb3J0ZWQgJXUgTkVTVEVEIFBBVEhzIHdlcmUgZm91bmQgaW4gSlNPTl9UQUJMRSAnJS4xOTJzJwBUaGUgc2VsZWN0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kICUuKnMgZG9lcyBub3Qgc3VwcG9ydCBwYXNzd29yZCBleHBpcmF0aW9uAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNZW1iZXIgJ2NycycgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlIHRvcCBsZXZlbCBvYmplY3QuAENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIG51bGwAVGhlIHNwYXRpYWwgaW5kZXggb24gY29sdW1uICclLjY0cycgd2lsbCBub3QgYmUgdXNlZCBieSB0aGUgcXVlcnkgb3B0aW1pemVyIHNpbmNlIHRoZSBjb2x1bW4gZG9lcyBub3QgaGF2ZSBhbiBTUklEIGF0dHJpYnV0ZS4gQ29uc2lkZXIgYWRkaW5nIGFuIFNSSUQgYXR0cmlidXRlIHRvIHRoZSBjb2x1bW4uAENyZWF0ZSB0YWJsZS90YWJsZXNwYWNlICclLS4xOTJzJyBmYWlsZWQsIGFzIGRpc2sgaXMgZnVsbABDb3VsZCBub3QgcGFyc2UgYXJndW1lbnQgdG8gZGlnZXN0IGZ1bmN0aW9uOiAiJXMiLgBDb3VsZCBub3QgcGFyc2UgYXJndW1lbnQgdG8gZGlnZXN0IGZ1bmN0aW9uLgBTY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIGFscmVhZHkgZXhpc3RzLiBUaGlzIG11c3QgYmUgcmVzb2x2ZWQgbWFudWFsbHkgKGUuZy4gYnkgbW92aW5nIHRoZSBzY2hlbWEgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24pLgBTY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIGRvZXMgbm90IGV4aXN0AEZhaWxlZCB0byBjcmVhdGUgc2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyAoZXJybm86ICVkIC0gJXMpAFNjaGVtYSAnJS4xOTJzJyBkb2VzIG5vdCBleGlzdCwgYnV0IHNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgd2FzIGZvdW5kLiBUaGlzIG11c3QgYmUgcmVzb2x2ZWQgbWFudWFsbHkgKGUuZy4gYnkgbW92aW5nIHRoZSBzY2hlbWEgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24pLgBGdW5jdGlvbiAlLjE5MnMgaXMgb25seSBkZWZpbmVkIGZvciBTUklEIDAgYW5kIFNSSUQgNDMyNi4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGFuZCBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcyB0byBzZXQgdGhlIGV4cGlyZSB0aW1lIChleHBpcmVfbG9nc19kYXlzIGlzIGRlcHJlY2F0ZWQpAFRoZSByZXN1bHQgc3RyaW5nIGlzIGxhcmdlciB0aGFuIHRoZSByZXN1bHQgYnVmZmVyLgBJbGxlZ2FsIGFyZ3VtZW50IHRvIGEgcmVndWxhciBleHByZXNzaW9uLgBJbmRleCBvdXQgb2YgYm91bmRzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBzZWFyY2guAEludGVybmFsIGVycm9yIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AU3ludGF4IGVycm9yIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBvbiBsaW5lICV1LCBjaGFyYWN0ZXIgJXUuAFVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zIGEgZmVhdHVyZSB0aGF0IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGxpYnJhcnkgdmVyc2lvbi4ATWlzbWF0Y2hlZCBwYXJlbnRoZXNpcyBpbiByZWd1bGFyIGV4cHJlc3Npb24uAEluY29ycmVjdCBkZXNjcmlwdGlvbiBvZiBhIHttaW4sbWF4fSBpbnRlcnZhbC4AVGhlIG1heGltdW0gaXMgbGVzcyB0aGFuIHRoZSBtaW51bXVtIGluIGEge21pbixtYXh9IGludGVydmFsLgBJbnZhbGlkIGJhY2stcmVmZXJlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIGxvb2stYmVoaW5kIGFzc2VydGlvbiBleGNlZWRzIHRoZSBsaW1pdCBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYW4gdW5jbG9zZWQgYnJhY2tldCBleHByZXNzaW9uLgBUaGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zIGFuIFt4LXldIGNoYXJhY3RlciByYW5nZSB3aGVyZSB4IGNvbWVzIGFmdGVyIHkuAE92ZXJmbG93IGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gYmFja3RyYWNrIHN0YWNrLgBUaW1lb3V0IGV4Y2VlZGVkIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaC4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIGV4Y2VlZHMgbGltaXRzIG9uIHNpemUgb3IgY29tcGxleGl0eS4AVmFsdWUgZm9yICVzIGdvdCBjb25mdXNpbmcgYXQgb3IgYXJvdW5kICIlcyIuIFN5bnRheCBtYXkgYmUgd3JvbmcsIGNvbXBvbmVudCBtYXkgbm90IGJlIElOU1RBTExlZCwgb3IgYSBjb21wb25lbnQgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGluc3RhbmNlcyBtYXkgYmUgbGlzdGVkIG1vcmUgdGhhbiBvbmNlLgBTZXR0aW5nIGFuIGVtcHR5ICVzIHBpcGVsaW5lIGRpc2FibGVzIGVycm9yIGxvZ2dpbmchAGZpbHRlciAlczogJXMAJS4xOTJzKCUuODBzKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgcHJvamVjdGVkIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuAEludmFsaWQgcmFkaXVzIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBSYWRpdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AUmVzdGFydCBzZXJ2ZXIgZmFpbGVkICglcykuAE1pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSAlcy4ATXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgYXR0cmlidXRlICVzLgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIG5hbWUgY2FuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nIG9yIHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UuAFRoZSBvcmdhbml6YXRpb24gbmFtZSBjYW4ndCBiZSBhbiBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4AVGhlcmUgaXMgYWxyZWFkeSBhIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFRoZXJlIGlzIGFscmVhZHkgYSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBTUklEIDAgaXMgbm90IG1vZGlmaWFibGUuAFRoZSBTUklEIHJhbmdlIFsldSwgJXVdIGhhcyBiZWVuIHJlc2VydmVkIGZvciBzeXN0ZW0gdXNlLiBTUlNzIGluIHRoaXMgcmFuZ2UgbWF5IGJlIGFkZGVkLCBtb2RpZmllZCBvciByZW1vdmVkIHdpdGhvdXQgd2FybmluZyBkdXJpbmcgdXBncmFkZS4AQ2FuJ3QgbW9kaWZ5IFNSSUQgJXUuIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjb2x1bW4gZGVwZW5kaW5nIG9uIGl0LgBJbnZhbGlkIGNoYXJhY3RlciBpbiBhdHRyaWJ1dGUgJXMuAEF0dHJpYnV0ZSAlcyBpcyB0b28gbG9uZy4gVGhlIG1heGltdW0gbGVuZ3RoIGlzICV1IGNoYXJhY3RlcnMuACd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIGJ1dCB3aWxsIGJlIGFuIGFsaWFzIGZvciBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBOQVRJT05BTC9OQ0hBUi9OVkFSQ0hBUiBpbXBsaWVzIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0hBUih4KSBDSEFSQUNURVIgU0VUIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAEludmFsaWQgZGVmYXVsdCBjb2xsYXRpb24gJXM6IHV0ZjhtYjRfMDkwMF9haV9jaSBvciB1dGY4bWI0X2dlbmVyYWxfY2kgZXhwZWN0ZWQAVW5hYmxlIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gZm9yIGNvbHVtbiAnJS0uMTkycyc6ICUtLjE5MnMuAFRoZSB0YWJsZSAnJS0uMTkycycgbWF5IG5vdCBiZSBjcmVhdGVkIGluIHRoZSByZXNlcnZlZCB0YWJsZXNwYWNlICclLS4xOTJzJy4AVGhpcyBvcHRpb24gY2Fubm90IGJlIHNldCAlcy4AQSBjb21taXQgZm9yIGFuIGF0b21pYyBEREwgc3RhdGVtZW50IHdhcyB1bnN1Y2Nlc3NmdWwgb24gdGhlIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuIFRoZSByZXBsaWNhIHN1cHBvcnRzIGF0b21pYyBEREwgc3RhdGVtZW50cyBidXQgdGhlIHNvdXJjZSBkb2VzIG5vdCwgc28gdGhlIGFjdGlvbiB0YWtlbiBieSB0aGUgcmVwbGljYSBhbmQgc291cmNlIG1pZ2h0IGRpZmZlci4gQ2hlY2sgdGhhdCB0aGVpciBzdGF0ZXMgaGF2ZSBub3QgZGl2ZXJnZWQgYmVmb3JlIHByb2NlZWRpbmcuAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgZ2VvZ3JhcGhpYyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaXMgbm90IGdlb2dyYXBoaWMuAEZ1bmN0aW9uICVzIGVuY291bnRlcmVkIGEgcG9seWdvbiB0aGF0IHdhcyB0b28gbGFyZ2UuIFBvbHlnb25zIG11c3QgY292ZXIgbGVzcyB0aGFuIGhhbGYgdGhlIHBsYW5ldC4AU3BhdGlhbCBpbmRleGVzIGNhbid0IGJlIHByaW1hcnkgb3IgdW5pcXVlIGluZGV4ZXMuAFRoZSBpbmRleCB0eXBlICUuMjBzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNwYXRpYWwgaW5kZXhlcy4AQ2Fubm90IGRyb3AgdGFibGUgJyVzJyByZWZlcmVuY2VkIGJ5IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIG9uIHRhYmxlICclcycuAEEgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICUuMTkycyBjb250YWlucyBhIGdlb21ldHJ5IHdpdGggbG9uZ2l0dWRlICVmLCB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgd2l0aGluICglZiwgJWZdLgBBIHBhcmFtZXRlciBvZiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgYSBnZW9tZXRyeSB3aXRoIGxhdGl0dWRlICVmLCB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgd2l0aGluIFslZiwgJWZdLgBGb3JlaWduIGtleSAnJXMnIHVzZXMgdmlydHVhbCBjb2x1bW4gJyVzJyB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLgBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIGNvbHVtbiAnJXMnIGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwAlczogQ291bGQgbm90IGFkZCBzdXBwcmVzc2lvbiBydWxlIGZvciBjb2RlICIlcyIuIFJ1bGUtc2V0IG1heSBiZSBmdWxsLCBvciBjb2RlIG1heSBub3QgY29ycmVzcG9uZCB0byBhbiBlcnJvci1sb2cgbWVzc2FnZS4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIGZvciBTUklEICV1IHNwZWNpZmllcyBpbnZhbGlkIGdlb2dyYXBoaWMgYXhlcyAnJS4yMHMnIGFuZCAnJS4yMHMnLiBPbmUgYXhpcyBtdXN0IGJlIE5PUlRIIG9yIFNPVVRIIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBFQVNUIG9yIFdFU1QuAFRoZSBsZW5ndGggb2YgdGhlIHNlbWktbWFqb3IgYXhpcyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLgBUaGUgaW52ZXJzZSBmbGF0dGVuaW5nIG11c3QgYmUgbGFyZ2VyIHRoYW4gMS4wLCBvciAwLjAgaWYgdGhlIGVsbGlwc29pZCBpcyBhIHNwaGVyZS4AVGhlIGFuZ3VsYXIgdW5pdCBjb252ZXJzaW9uIGZhY3RvciBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLgBUaGUgcHJpbWUgbWVyaWRpYW4gbXVzdCBiZSB3aXRoaW4gKC0xODAsIDE4MF0gZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LgBUcmFuc2Zvcm1hdGlvbiBmcm9tIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4AVHJhbnNmb3JtYXRpb24gdG8gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLgBUcmFuc2Zvcm1hdGlvbiBmcm9tIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4gVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBoYXMgbm8gVE9XR1M4NCBjbGF1c2UuAFRyYW5zZm9ybWF0aW9uIHRvIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4gVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBoYXMgbm8gVE9XR1M4NCBjbGF1c2UuAENoYW5naW5nIEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0IGlzIGRpc2FsbG93ZWQgd2hlbiB0aGUgc2Vzc2lvbiBoYXMgb3BlbiB0ZW1wb3JhcnkgdGFibGUocykuIFlvdSBjb3VsZCB3YWl0IHVudGlsIHRoZXNlIHRlbXBvcmFyeSB0YWJsZShzKSBhcmUgZHJvcHBlZCBhbmQgdHJ5IGFnYWluLgBDaGFuZ2luZyBAQGdsb2JhbC5iaW5sb2dfZm9ybWF0IG9yIEBAcGVyc2lzdC5iaW5sb2dfZm9ybWF0IGlzIGRpc2FsbG93ZWQgd2hlbiBhbnkgcmVwbGljYXRpb24gY2hhbm5lbCBoYXMgb3BlbiB0ZW1wb3JhcnkgdGFibGUocykuIFlvdSBjb3VsZCB3YWl0IHVudGlsIFJlcGxpY2Ffb3Blbl90ZW1wX3RhYmxlcyA9IDAgYW5kIHRyeSBhZ2FpbgBDaGFuZ2luZyBAQGdsb2JhbC5iaW5sb2dfZm9ybWF0IG9yIEBAcGVyc2lzdC5iaW5sb2dfZm9ybWF0IGlzIGRpc2FsbG93ZWQgd2hlbiBhbnkgcmVwbGljYXRpb24gY2hhbm5lbCBhcHBsaWVyIHRocmVhZCBpcyBydW5uaW5nLiBZb3UgY291bGQgZXhlY3V0ZSBTVE9QIFJFUExJQ0EgU1FMX1RIUkVBRCBhbmQgdHJ5IGFnYWluLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBhIHRyYW5zYWN0aW9uIG9yIGluc2lkZSBhIHByb2NlZHVyZSBpbiBhIHRyYW5zYWN0aW9uYWwgY29udGV4dCB3aGVuIEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4AWEE6IEZhaWxlZCB0byB0YWtlIE1ETCBMb2NrIGJhY2t1cCBvZiBQUkVQQVJFRCBYQSB0cmFuc2FjdGlvbiBkdXJpbmcgY2xpZW50IGRpc2Nvbm5lY3QuAFVuYWJsZSB0byBjcmVhdGUgb3IgY2hhbmdlIGEgdGFibGUgd2l0aG91dCBhIHByaW1hcnkga2V5LCB3aGVuIHRoZSBzeXN0ZW0gdmFyaWFibGUgJ3NxbF9yZXF1aXJlX3ByaW1hcnlfa2V5JyBpcyBzZXQuIEFkZCBhIHByaW1hcnkga2V5IHRvIHRoZSB0YWJsZSBvciB1bnNldCB0aGlzIHZhcmlhYmxlIHRvIGF2b2lkIHRoaXMgbWVzc2FnZS4gTm90ZSB0aGF0IHRhYmxlcyB3aXRob3V0IGEgcHJpbWFyeSBrZXkgY2FuIGNhdXNlIHBlcmZvcm1hbmNlIHByb2JsZW1zIGluIHJvdy1iYXNlZCByZXBsaWNhdGlvbiwgc28gcGxlYXNlIGNvbnN1bHQgeW91ciBEQkEgYmVmb3JlIGNoYW5naW5nIHRoaXMgc2V0dGluZy4ARGF0YSB0cnVuY2F0ZWQgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBhdCByb3cgJWxkAFZhbHVlIGlzIG91dCBvZiByYW5nZSBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGF0IHJvdyAlbGQAQ2Fubm90IGNyZWF0ZSBhIGZ1bmN0aW9uYWwgaW5kZXggb24gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBKU09OIG9yIEdFT01FVFJZIHZhbHVlLgBGdW5jdGlvbmFsIGluZGV4ICclLjY0cycgY2Fubm90IHJlZmVyIHRvIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbi4AQ2Fubm90IGRyb3AgY29sdW1uICclLS42NHMnIGJlY2F1c2UgaXQgaXMgdXNlZCBieSBhIGZ1bmN0aW9uYWwgaW5kZXguIEluIG9yZGVyIHRvIGRyb3AgdGhlIGNvbHVtbiwgeW91IG11c3QgcmVtb3ZlIHRoZSBmdW5jdGlvbmFsIGluZGV4LgBUaGUgcHJpbWFyeSBrZXkgY2Fubm90IGJlIGEgZnVuY3Rpb25hbCBpbmRleABDYW5ub3QgY3JlYXRlIGEgZnVuY3Rpb25hbCBpbmRleCBvbiBhbiBleHByZXNzaW9uIHRoYXQgcmV0dXJucyBhIEJMT0Igb3IgVEVYVC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENBU1QuAEV4cHJlc3Npb24gb2YgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbi4ARnVsbHRleHQgZnVuY3Rpb25hbCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkLgBTcGF0aWFsIGZ1bmN0aW9uYWwgaW5kZXggaXMgbm90IHN1cHBvcnRlZC4AVGhlIHVzZWQgc3RvcmFnZSBlbmdpbmUgY2Fubm90IGluZGV4IHRoZSBleHByZXNzaW9uICclcycuAEZ1bmN0aW9uYWwgaW5kZXggb24gYSBjb2x1bW4gaXMgbm90IHN1cHBvcnRlZC4gQ29uc2lkZXIgdXNpbmcgYSByZWd1bGFyIGluZGV4IGluc3RlYWQuAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbjogJXMuAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlcy4AQ29sdW1uICclcycgb2YgdGFibGUgJyVzJyBoYXMgYSBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gZGVwZW5kZW5jeSBhbmQgY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIGNvbHVtbiBkZWZpbmVkIGFmdGVyIGl0IGlmIHRoYXQgY29sdW1uIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbiBvciBoYXMgYW4gZXhwcmVzc2lvbiBhcyBkZWZhdWx0IHZhbHVlLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbi4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbi4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbjogJXMuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdXNlciBvciBzeXN0ZW0gdmFyaWFibGVzLgBERUZBVUxUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucwAnJXMnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBBTFRFUiBUQUJMRSAuLi4gQUREIENPTFVNTiAuLiB3aXRoIGV4cHJlc3Npb24gYXMgREVGQVVMVC4AQ2Fubm90IGNoYW5nZSB0YWJsZSdzIHN0b3JhZ2UgZW5naW5lIGJlY2F1c2UgdGhlIHRhYmxlIHBhcnRpY2lwYXRlcyBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuAFNldHRpbmcgdXNlciB2YXJpYWJsZXMgd2l0aGluIGV4cHJlc3Npb25zIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciBhbHRlcm5hdGl2ZXM6ICdTRVQgdmFyaWFibGU9ZXhwcmVzc2lvbiwgLi4uJywgb3IgJ1NFTEVDVCBleHByZXNzaW9uKHMpIElOVE8gdmFyaWFibGVzKHMpJy4AJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCBVVEY4TUIzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBOZXN0ZWQgY29tbWVudCBzeW50YXggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFJlZmVyZW5jaW5nIGNvbHVtbiAnJXMnIGFuZCByZWZlcmVuY2VkIGNvbHVtbiAnJXMnIGluIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyBhcmUgaW5jb21wYXRpYmxlLgBUaW1lb3V0IGV4Y2VlZGVkIGZvciBoZWxkIHN0YXRlbWVudCB3aGlsZSBuZXcgR3JvdXAgUmVwbGljYXRpb24gcHJpbWFyeSBtZW1iZXIgaXMgYXBwbHlpbmcgYmFja2xvZy4ASGVsZCBzdGF0ZW1lbnQgYWJvcnRlZCBiZWNhdXNlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBnb3Qgc2h1dCBkb3duIG9yIHRocmVhZCB3YXMga2lsbGVkIHdoaWxlIG5ldyBwcmltYXJ5IG1lbWJlciB3YXMgYXBwbHlpbmcgYmFja2xvZy4ASGVsZCBzdGF0ZW1lbnQgd2FzIGFib3J0ZWQgZHVlIHRvIG1lbWJlciBiZWluZyBpbiBlcnJvciBzdGF0ZSwgd2hpbGUgYmFja2xvZyBpcyBiZWluZyBhcHBsaWVkIGR1cmluZyBHcm91cCBSZXBsaWNhdGlvbiBwcmltYXJ5IGVsZWN0aW9uLgBGYWlsZWQgdG8gZmV0Y2gga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBDYW4ndCBmaW5kIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAEZldGNoZWQgYW4gaW52YWxpZCBrZXkgZnJvbSBrZXlyaW5nLgBFcnJvciByZWFkaW5nIGEgcmVwbGljYXRpb24gbG9nIGVuY3J5cHRpb24gaGVhZGVyOiAlcy4ARmFpbGVkIHRvIHJvdGF0ZSBzb21lIGxvZ3MgYWZ0ZXIgY2hhbmdpbmcgYmlubG9nIGVuY3J5cHRpb24gc2V0dGluZ3MuIFBsZWFzZSBmaXggdGhlIHByb2JsZW0gYW5kIHJvdGF0ZSB0aGUgbG9ncyBtYW51YWxseS4AS2V5ICVzIGV4aXN0cyB1bmV4cGVjdGVkLgBGYWlsZWQgdG8gZ2VuZXJhdGUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBzdG9yZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHJlbW92ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIGNoYW5nZSBiaW5sb2dfZW5jcnlwdGlvbiB2YWx1ZS4gJS0uODBzLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5sb2cgZW5jcnlwdGlvbiBtYXN0ZXIga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAHNsb3cgcXVlcnkgbG9nIGZpbGUgZm9ybWF0IGNoYW5nZWQgYXMgcmVxdWVzdGVkLCBidXQgc2V0dGluZyB3aWxsIGhhdmUgbm8gZWZmZWN0IHdoZW4gbm90IGFjdHVhbGx5IGxvZ2dpbmcgdG8gYSBmaWxlLgBUaGUgb3B0aW9uIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5IGNhbm5vdCBiZSB1c2VkIG9uIHRoZSBjdXJyZW50IG1lbWJlciBzdGF0ZS4ARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgZ3JvdXAgdHJhbnNhY3Rpb25zIGNvbW1pdCBvbiBncm91cF9yZXBsaWNhdGlvbl9jb25zaXN0ZW5jeT0gJ0JFRk9SRScuAEVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucyB3aXRoIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5PSAnQUZURVInIHRvIGNvbW1pdC4AVGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBpcyBzdG9wcGluZywgdGhlcmVmb3JlIG5ldyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBhbGxvd2VkIHRvIHN0YXJ0LgBFeHByZXNzaW9uIG9mIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAEZhaWxlZCB0byBlbmNyeXB0IGNvbnRlbnQgdG8gd3JpdGUgaW50byBiaW5sb2cgZmlsZTogJXMuAFBhZ2UgVHJhY2tpbmcgaXMgbm90IHN0YXJ0ZWQgeWV0LgBUcmFja2luZyB3YXMgbm90IGVuYWJsZWQgZm9yIHRoZSBMU04gcmFuZ2Ugc3BlY2lmaWVkAENhbm5vdCBwdXJnZSBkYXRhIHdoZW4gY29uY3VycmVudCBjbG9uZSBpcyBpbiBwcm9ncmVzcy4gVHJ5IGxhdGVyLgBDYW5ub3Qgcm90YXRlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3aGVuICdiaW5sb2ctZW5jcnlwdGlvbicgaXMgb2ZmLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5hcnkgbG9nIG1hc3RlciBrZXksIHRoZSBjb21iaW5hdGlvbiBvZiBuZXdfbWFzdGVyX2tleV9zZXFubz0ldSwgbWFzdGVyX2tleV9zZXFubz0ldSBhbmQgb2xkX21hc3Rlcl9rZXlfc2Vxbm89JXUgYXJlIHdyb25nLgBGYWlsZWQgdG8gb3BlcmF0ZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgb24ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgc3RhdGVtZW50IGhhZCBubyBlZmZlY3Q6IHRoZSBvbGQgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IGlzIHN0aWxsIGluIHVzZSwgdGhlIGtleXJpbmcsIGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzIGFyZSB1bmNoYW5nZWQsIGFuZCB0aGUgc2VydmVyIGNvdWxkIG5vdCBzdGFydCB1c2luZyBhIG5ldyBiaW5hcnkgbG9nIG1hc3RlciBrZXkgZm9yIGVuY3J5cHRpbmcgbmV3IGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzLgBGYWlsZWQgdG8gcm90YXRlIG9uZSBvciBtb3JlIGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMuIEEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3YXMgZ2VuZXJhdGVkIGFuZCB3aWxsIGJlIHVzZWQgdG8gZW5jcnlwdCBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuIFRoZXJlIG1heSBzdGlsbCBleGlzdCBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzIHVzaW5nIHRoZSBwcmV2aW91cyBiaW5hcnkgbG9nIG1hc3RlciBrZXkuACVzLiBBIG5ldyBiaW5hcnkgbG9nIG1hc3RlciBrZXkgd2FzIGdlbmVyYXRlZCBhbmQgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgbmV3IGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzLiBUaGVyZSBtYXkgc3RpbGwgZXhpc3QgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcyB1c2luZyB0aGUgcHJldmlvdXMgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LgBGYWlsZWQgdG8gcmVtb3ZlIHVudXNlZCBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5cyBmcm9tIHRoZSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSB1bnVzZWQgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleXMgbWF5IHN0aWxsIGV4aXN0IGluIHRoZSBrZXlyaW5nLCBhbmQgdGhleSB3aWxsIGJlIHJlbW92ZWQgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4ARmFpbGVkIHRvIHJlbW92ZSBhdXhpbGlhcnkgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIGNsZWFudXAgb2YgdGhlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSByb3RhdGlvbiBwcm9jZXNzIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkIGFuZCB0aGUgY2xlYW51cCB3aWxsIHRha2UgcGxhY2UgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4AQW4gZXhwcmVzc2lvbiBvZiBub24tYm9vbGVhbiB0eXBlIHNwZWNpZmllZCB0byBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnLgBDb2x1bW4gY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgcmVmZXJlbmNlcyBvdGhlciBjb2x1bW4uAEFuIGV4cHJlc3Npb24gb2YgYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjb250YWlucyBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNvbnRhaW5zIGRpc2FsbG93ZWQgZnVuY3Rpb24uAEFuIGV4cHJlc3Npb24gb2YgYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYSB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZS4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBpcyB2aW9sYXRlZC4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgcmVmZXJzIHRvIG5vbi1leGlzdGluZyBjb2x1bW4gJyUtLjE5MnMnLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBpcyBub3QgZm91bmQgaW4gdGhlIHRhYmxlLgBEdXBsaWNhdGUgY2hlY2sgY29uc3RyYWludCBuYW1lICclLS4xOTJzJy4AQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgdXNlZCBpbiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcmVudGlhbCBhY3Rpb24uAENyZWF0aW5nIGFuIHVuZW5jcnlwdGVkIHRhYmxlIGluIGEgZGF0YWJhc2Ugd2l0aCBkZWZhdWx0IGVuY3J5cHRpb24gZW5hYmxlZC4AUmVxdWVzdCB0byBjcmVhdGUgJXMgdGFibGUgd2hpbGUgdXNpbmcgYW4gJXMgdGFibGVzcGFjZS4AVGFibGUgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSBpdHMgZGF0YWJhc2UgZGVmYXVsdCBlbmNyeXB0aW9uLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4ARGF0YWJhc2UgZGVmYXVsdCBlbmNyeXB0aW9uIGRpZmZlciBmcm9tICdkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24nIHNldHRpbmcsIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBUYWJsZXNwYWNlIGVuY3J5cHRpb24gZGlmZmVyIGZyb20gJ2RlZmF1bHRfdGFibGVfZW5jcnlwdGlvbicgc2V0dGluZywgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBlbmNyeXB0ZWQsIGJlY2F1c2Ugb25lIG9mIHRhYmxlJ3Mgc2NoZW1hIGhhcyBkZWZhdWx0IGVuY3J5cHRpb24gT0ZGIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBUaGlzIHRhYmxlc3BhY2UgY2FuJ3QgYmUgZGVjcnlwdGVkLCBiZWNhdXNlIG9uZSBvZiB0YWJsZSdzIHNjaGVtYSBoYXMgZGVmYXVsdCBlbmNyeXB0aW9uIE9OIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBDYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSB0YWJsZXNwYWNlIG5hbWVkICclcycuAFNvdXJjZSB0YWJsZXNwYWNlIGlzIGVuY3J5cHRlZCBidXQgdGFyZ2V0IHRhYmxlc3BhY2UgaXMgbm90LgBFTkNSWVBUSU9OIGNsYXVzZSBpcyBub3QgdmFsaWQgZm9yICVzIHRhYmxlc3BhY2UuAE11bHRpcGxlICVzIGNsYXVzZXMAR1JBTlQgLi4uIEFTIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQgb25seSBmb3IgZ2xvYmFsIHByaXZpbGVnZXMuAEVpdGhlciBzb21lIG9mIHRoZSBhdXRob3JpemF0aW9uIElEcyBpbiB0aGUgQVMgY2xhdXNlIGFyZSBpbnZhbGlkIG9yIHRoZSBjdXJyZW50IHVzZXIgbGFja3MgcHJpdmlsZWdlcyB0byBleGVjdXRlIHRoZSBzdGF0ZW1lbnQuAENvbHVtbiAnJXMnIGhhcyBhIGZ1bmN0aW9uYWwgaW5kZXggZGVwZW5kZW5jeSBhbmQgY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4AUGx1Z2luICclcycgaXMgbm90IHRvIGJlIHVzZWQgYXMgYW4gImVhcmx5IiBwbHVnaW4uIERvbid0IGFkZCBpdCB0byAtLWVhcmx5LXBsdWdpbi1sb2FkLCBrZXlyaW5nIG1pZ3JhdGlvbiBldGMuAFJlZG8gbG9nIGFyY2hpdmluZyBzdGFydCBwcm9oaWJpdHMgcGF0aCBuYW1lIGluICdzdWJkaXInIGFyZ3VtZW50AFJlZG8gbG9nIGFyY2hpdmluZyBzdGFydCB0aW1lZCBvdXQAU2VydmVyIHZhcmlhYmxlICdpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9kaXJzJyBpcyBOVUxMIG9yIGVtcHR5AExhYmVsICclLjE5MnMnIG5vdCBmb3VuZCBpbiBzZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnAERpcmVjdG9yeSBpcyBlbXB0eSBhZnRlciBsYWJlbCAnJS4xOTJzJyBpbiBzZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnAFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhIGRpcmVjdG9yeQBSZWRvIGxvZyBhcmNoaXZlIGRpcmVjdG9yeSAnJS4xOTJzJyBpcyBpbiwgdW5kZXIsIG9yIG92ZXIgc2VydmVyIGRpcmVjdG9yeSAnJS4xOTJzJyAtICclLjE5MnMnAFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgYXJjaGl2ZSBmaWxlICclLjUxMnMnIChPUyBlcnJubzogJWQgLSAlLjEyOHMpAFJlZG8gbG9nIGFyY2hpdmluZyBoYXMgYmVlbiBzdGFydGVkIG9uICclLjUxMnMnIC0gQ2FsbCBpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9zdG9wKCkgZmlyc3QAUmVkbyBsb2cgYXJjaGl2aW5nIGlzIG5vdCBhY3RpdmUAUmVkbyBsb2cgYXJjaGl2aW5nIGZhaWxlZDogJS41MTJzAFJlZG8gbG9nIGFyY2hpdmluZyBoYXMgbm90IGJlZW4gc3RhcnRlZCBieSB0aGlzIHNlc3Npb24AUmVnZXggZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQgSlNPTiB0eXBlIGluIGFyZ3VtZW50ICV1IHRvIGZ1bmN0aW9uICVzOyBhbiAlcyBpcyByZXF1aXJlZC4AQ2Fubm90IGNvbnZlcnQgc3RyaW5nICclLjY0cycgZnJvbSAlcyB0byAlcwBDb2x1bW4gJyVzJyBoYXMgYSBwYXJ0aXRpb25pbmcgZnVuY3Rpb24gZGVwZW5kZW5jeSBhbmQgY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4AQVVUT19JTkNSRU1FTlQgc3VwcG9ydCBmb3IgRkxPQVQvRE9VQkxFIGNvbHVtbnMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHJlbW92aW5nIEFVVE9fSU5DUkVNRU5UIGZyb20gY29sdW1uICclLS4xOTJzJy4AQ2Fubm90IHN0b3AgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgbG9ja2VkIGZvciBiYWNrdXAuIFRyeSBydW5uaW5nIGBVTkxPQ0sgSU5TVEFOQ0VgIGZpcnN0LgBTcGVjaWZ5aW5nIG51bWJlciBvZiBkaWdpdHMgZm9yIGZsb2F0aW5nIHBvaW50IGRhdGEgdHlwZXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFVOU0lHTkVEIGZvciBkZWNpbWFsIGFuZCBmbG9hdGluZyBwb2ludCBkYXRhIHR5cGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBJbnRlZ2VyIGRpc3BsYXkgd2lkdGggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRoZSBaRVJPRklMTCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFVzZSB0aGUgTFBBRCBmdW5jdGlvbiB0byB6ZXJvLXBhZCBudW1iZXJzLCBvciBzdG9yZSB0aGUgZm9ybWF0dGVkIG51bWJlcnMgaW4gYSBDSEFSIGNvbHVtbi4AQ2xvbmUgRG9ub3IgRXJyb3I6ICUuNTEycy4AQ2xvbmUgcmVjZWl2ZWQgdW5leHBlY3RlZCByZXNwb25zZSBmcm9tIERvbm9yIDogJS41MTJzLgBDbG9uZSBEb25vciBNeVNRTCB2ZXJzaW9uOiAlLjY0cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgTXlTUUwgdmVyc2lvbiAlLjY0cy4AQ2xvbmUgRG9ub3IgT1M6ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBPUzogJS42NHMuAENsb25lIERvbm9yIHBsYXRmb3JtOiAlLjY0cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgcGxhdGZvcm06ICUuNjRzLgBDbG9uZSBEb25vciBjb2xsYXRpb246ICUuMTI4cyBpcyB1bmF2YWlsYWJsZSBpbiBSZWNpcGllbnQuAENsb25lIENvbmZpZ3VyYXRpb24gJS4xMjhzOiBEb25vciB2YWx1ZTogJS4xMjhzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCB2YWx1ZTogJS4xMjhzLgBDbG9uZSBzeXN0ZW0gY29uZmlndXJhdGlvbjogJS41MTJzAENsb25lIERvbm9yIHBsdWdpbiAlLjEyOHMgaXMgbm90IGFjdGl2ZSBpbiBSZWNpcGllbnQuAENsb25lIGNhbm5vdCB1c2UgbG9vcCBiYWNrIGNvbm5lY3Rpb24gd2hpbGUgY2xvbmluZyBpbnRvIGN1cnJlbnQgZGF0YSBkaXJlY3RvcnkuAENsb25lIG5lZWRzIFNTTCBjb25uZWN0aW9uIGZvciBlbmNyeXB0ZWQgdGFibGUuAENsb25lIGVzdGltYXRlZCBkYXRhYmFzZSBzaXplIGlzICUuNjRzLiBBdmFpbGFibGUgc3BhY2UgJS42NHMgaXMgbm90IGVub3VnaC4AQ29uY3VycmVudCBjbG9uZSBpbiBwcm9ncmVzcy4gUGxlYXNlIHRyeSBhZnRlciBjbG9uZSBpcyBjb21wbGV0ZS4AVGhlIGNsb25lIG9wZXJhdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hlbiAlcy4AQ2Fubm90IGdyYW50IHJvbGVzIHRvIGFuIGFub255bW91cyB1c2VyLgAlcwBFbXB0eSBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGFzIHNlY29uZCBwYXNzd29yZCBmb3IgdXNlciAnJXMnQCclcycuAEFjY2VzcyBkZW5pZWQgZm9yIEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgdG8gZGF0YWJhc2UgJyUtLjE5MnMnLgBDYW5ub3Qgc2V0IG1hbmRhdG9yeV9yb2xlczogQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBoYXMgJyVzJyBwcml2aWxlZ2UuAEd0aWQgdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIG9wZW5lZC4AVGhlIGdlb21ldHJ5IHBhc3NlZCB0byBmdW5jdGlvbiAlcyBpcyBpbiBTUklEIDAsIHdoaWNoIGRvZXNuJ3Qgc3BlY2lmeSBhIGxlbmd0aCB1bml0LiBDYW4ndCBjb252ZXJ0IHRvICclcycuAEVycm9yIGluc3RhbGxpbmcgcGx1Z2luICclcyc6ICVzAFN0b3JhZ2UgZW5naW5lIGNvdWxkIG5vdCBhbGxvY2F0ZSB0ZW1wb3JhcnkgdGFibGVzcGFjZSBmb3IgdGhpcyBzZXNzaW9uLgBHb3QgdW5rbm93biBlcnJvcjogJWQAQ291bGQgbm90IGNoYW5nZSBjb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnLiBUaGUgcmVzdWx0aW5nIHNpemUgb2YgaW5kZXggJyVzJyB3b3VsZCBleGNlZWQgdGhlIG1heCBrZXkgbGVuZ3RoIG9mICVkIGJ5dGVzLgBBIGNhcHR1cmUgZ3JvdXAgaGFzIGFuIGludmFsaWQgbmFtZS4ARmFpbGVkIHRvIHNldCB1cCBTU0wgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIFNTTCBsaWJyYXJ5IGVycm9yOiAlcwBTZWNvbmRhcnkgZW5naW5lIG9wZXJhdGlvbiBmYWlsZWQuICVzLgBERExzIG9uIGEgdGFibGUgd2l0aCBhIHNlY29uZGFyeSBlbmdpbmUgZGVmaW5lZCBhcmUgbm90IGFsbG93ZWQuAEluY29ycmVjdCBjdXJyZW50IHBhc3N3b3JkLiBTcGVjaWZ5IHRoZSBjb3JyZWN0IHBhc3N3b3JkIHdoaWNoIGhhcyB0byBiZSByZXBsYWNlZC4AQ3VycmVudCBwYXNzd29yZCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIFJFUExBQ0UgY2xhdXNlIGluIG9yZGVyIHRvIGNoYW5nZSBpdC4ARG8gbm90IHNwZWNpZnkgdGhlIGN1cnJlbnQgcGFzc3dvcmQgd2hpbGUgY2hhbmdpbmcgaXQgZm9yIG90aGVyIHVzZXJzLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgYXV0aGVudGljYXRpb24gcGx1Z2luIGlzIGJlaW5nIGNoYW5nZWQuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBuZXcgcGFzc3dvcmQgaXMgZW1wdHkuAEF0IGxlYXN0IG9uZSBwYXJ0aWFsIHJldm9rZSBleGlzdHMgb24gYSBkYXRhYmFzZS4gVGhlIHN5c3RlbSB2YXJpYWJsZSAnQEBwYXJ0aWFsX3Jldm9rZXMnIG11c3QgYmUgc2V0IHRvIE9OLgBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGlzIHNldCBhcyBtYW5kYXRvcnlfcm9sZXMuIENhbm5vdCBncmFudCB0aGUgJyVzJyBwcml2aWxlZ2UuAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBzcWxfbW9kZT0weCUwOHggaXMgbm90IHN1cHBvcnRlZC4ASW52YWxpZCBtYXRjaCBtb2RlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9uLgAnJXMnIHByaXZpbGVnZSBmb3IgZGF0YWJhc2UgJyVzJyBleGlzdHMgYm90aCBhcyBwYXJ0aWFsIHJldm9rZSBhbmQgbXlzcWwuZGIgc2ltdWx0YW5lb3VzbHkuIEl0IGNvdWxkIG1lYW4gdGhhdCB0aGUgJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBUaGVyZSdzIG5vIHVuaXQgb2YgbWVhc3VyZSBuYW1lZCAnJXMnLgBJbnZhbGlkIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBFeGNlZWRlZCBtYXggbnVtYmVyIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgdmFsdWUocykuAEV4Y2VlZGVkIG1heCB0b3RhbCBsZW5ndGggb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSBieXRlcy4ARGF0YSB0b28gbG9uZyBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4AQ2Fubm90IHN0b3JlIGFuIGFycmF5IG9yIGFuIG9iamVjdCBpbiBhIHNjYWxhciBrZXkgcGFydCBvZiB0aGUgaW5kZXggJyUuMTkycycuAENhbm5vdCB1c2UgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbi4AVGhlIGZ1bmN0aW9uICclcycgZmFpbGVkLiAlcwBDYW5ub3QgdXBkYXRlIEdUSURfUFVSR0VEIHdpdGggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBydW5uaW5nAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIGEgcGF0aCBsZW5ndGggdG9vIGxvbmcgZm9yIHRhYmxlICclcycuIFBsZWFzZSBjaGVjayB0aGUgcGF0aCBsaW1pdCBmb3IgeW91ciBPUy4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJS42NHMnQCclLjY0cycuIFJvbGUgbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uOiAnJS4zMnMnACdhdWRpdF9sb2cnIHBhc3N3b3JkIGhhcyBiZWVuIGNvcGllZCBpbnRvICclLjMycycgYW5kIHdpbGwgYmUgcmVtb3ZlZCB3aXRoIGZpcnN0IHB1cmdlZCBwYXNzd29yZC4AU3RhcnRlZCBhdXRvLXJlam9pbiBwcm9jZWR1cmUgYXR0ZW1wdCAlbHUgb2YgJWx1AEEgcGx1Z2luIHdhcyBsb2FkZWQgb3IgdW5sb2FkZWQgZHVyaW5nIGEgcXVlcnksIGEgc3lzdGVtIHZhcmlhYmxlIHRhYmxlIHdhcyBjaGFuZ2VkLgBBIHBsdWdpbiB3YXMgbG9hZGVkIG9yIHVubG9hZGVkIGR1cmluZyBhIHF1ZXJ5LCBhIGdsb2JhbCBzdGF0dXMgdmFyaWFibGUgd2FzIGNoYW5nZWQuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCB0byBzdGFydCBpdHMgbWVzc2FnZSBzZXJ2aWNlLgBJbnZhbGlkIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TICclLjE5MnMnIGZvciBjaGFubmVsICclLjE5MnMnLgBJbnZhbGlkIFNPVVJDRV9aU1REX0NPTVBSRVNTSU9OX0xFVkVMICV1IGZvciBjaGFubmVsICclLjE5MnMnLgBJbnZhbGlkIGNvbXByZXNzaW9uIGFsZ29yaXRobSAnJS4xOTJzJy4ASW52YWxpZCB6c3RkIGNvbXByZXNzaW9uIGxldmVsIGZvciBhbGdvcml0aG0gJyUuMTkycycuAFNwZWNpZmllZCBjb21wcmVzc2lvbiBhbGdvcml0aG0gbGlzdCAnJS4xOTJzJyBleGNlZWRzIHRvdGFsIGNvdW50IG9mIDMgZm9yIGNoYW5uZWwgJyUuMTkycycuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGBgQGAlLjI1NXNgLCBidXQgYW5vbnltb3VzIHVzZXJzIGFyZSBkaXNhbGxvd2VkIGZvciBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIGlzIG5vdCBhbiBleGlzdGluZyB1c2VyLgBJbnZhbGlkLCBjb3JydXB0ZWQgUFJJVklMRUdFX0NIRUNLU19VU0VSIHdhcyBmb3VuZCBpbiB0aGUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiByZXBvc2l0b3J5IGZvciBjaGFubmVsICclLjE5MnMnLiBVc2UgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgdG8gY29ycmVjdCB0aGUgY29uZmlndXJhdGlvbi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgdXNlciBkb2VzIG5vdCBoYXZlIFJFUExJQ0FUSU9OX0FQUExJRVIgcHJpdmlsZWdlLgBEeW5hbWljIHByaXZpbGVnZSAnJXMnIGlzIG5vdCByZWdpc3RlcmVkIHdpdGggdGhlIHNlcnZlci4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgaXMgaW52YWxpZC4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgdHlwZSBpcyBpbnZhbGlkLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSBsZW5ndGggaXMgdG9vIGxvbmcuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IHR5cGUgaXMgdG9vIGxvbmcuACVzLgBJbnZhbGlkIGNoYXJhY3RlciBzZXQgJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGVpdGhlciBjaGFyYWN0ZXIgc2V0IG5hbWUgb3IgY29sbGF0aW9uIG5hbWUgYXMgc3VwcG9ydGVkIGJ5IHNlcnZlci4ASW52YWxpZCBjaGFyYWN0ZXIgc2V0ICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBhIGNoYXJhY3RlciBzZXQgbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGNvbGxhdGlvbiAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgYSBjb2xsYXRpb24gbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGV4dGVuc2lvbiBhcmd1bWVudCB0eXBlICclcycgd2FzIHNwZWNpZmllZC4gUmVmZXIgdGhlIE15U1FMIG1hbnVhbCBmb3IgdGhlIHZhbGlkIFVERiBleHRlbnNpb24gYXJndW1lbnRzIHR5cGUuAFRhYmxlIGhhcyBtdWx0aXBsZSBjb25zdHJhaW50cyB3aXRoIHRoZSBuYW1lICclLS4xOTJzJy4gUGxlYXNlIHVzZSBjb25zdHJhaW50IHNwZWNpZmljICclcycgY2xhdXNlLgBDb25zdHJhaW50ICclLS4xOTJzJyBkb2VzIG5vdCBleGlzdC4AQWx0ZXJpbmcgY29uc3RyYWludCBlbmZvcmNlbWVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgY29uc3RyYWludCAnJS0uMTkycycuIEVuZm9yY2VtZW50IHN0YXRlIGFsdGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBQUklNQVJZLCBVTklRVUUgYW5kIEZPUkVJR04gS0VZIHR5cGUgY29uc3RyYWludHMuAEVhY2ggcm93IG9mIGEgVkFMVUVTIGNsYXVzZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVtbiwgdW5sZXNzIHdoZW4gdXNlZCBhcyBzb3VyY2UgaW4gYW4gSU5TRVJUIHN0YXRlbWVudC4AQSBWQUxVRVMgY2xhdXNlIGNhbm5vdCB1c2UgREVGQVVMVCB2YWx1ZXMsIHVubGVzcyB1c2VkIGFzIGEgc291cmNlIGluIGFuIElOU0VSVCBzdGF0ZW1lbnQuAFRoZSBxdWVyeSBkb2VzIG5vdCBjb21wbHkgd2l0aCB2YXJpYWJsZSByZXF1aXJlX3Jvd19mb3JtYXQgcmVzdHJpY3Rpb25zLgBUaGUgcmVxdWVzdGVkIHZhbHVlICVzIGlzIGludmFsaWQgZm9yIFJFUVVJUkVfUk9XX0ZPUk1BVCwgbXVzdCBiZSBlaXRoZXIgMCBvciAxLgBGYWlsZWQgdG8gYWNxdWlyZSBsb2NrIG9uIHVzZXIgbWFuYWdlbWVudCBzZXJ2aWNlLCB1bmFibGUgdG8gZGV0ZXJtaW5lIGlmIHJvbGUgYCVzYEBgJXNgIGlzIG1hbmRhdG9yeQBGYWlsZWQgdG8gYWNxdWlyZSBsb2NrIG9uIHVzZXIgbWFuYWdlbWVudCBzZXJ2aWNlLCB1bmFibGUgdG8gZmV0Y2ggbWFuZGF0b3J5IHJvbGUgbGlzdABMb2FkaW5nIGxvY2FsIGRhdGEgaXMgZGlzYWJsZWQ7IHRoaXMgbXVzdCBiZSBlbmFibGVkIG9uIGJvdGggdGhlIGNsaWVudCBhbmQgc2VydmVyIHNpZGVzAEZhaWxlZCB0byBpbXBvcnQgJXMgYmVjYXVzZSB0aGUgQ0ZHIGZpbGUgdmVyc2lvbiAoJXUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbiAoJXUpAE91dCBvZiBtZW1vcnkAQ2hhcmFjdGVyIHNldCBjYW4gYmUgc2V0IG9ubHkgZm9yIHRoZSBVREYgYXJndW1lbnQgdHlwZSBTVFJJTkcuAENoYXJhY3RlciBzZXQgY2FuIGJlIHNldCBvbmx5IGZvciB0aGUgVURGIFJFVFVSTiB0eXBlIFNUUklORy4ATXVsdGlwbGUgSU5UTyBjbGF1c2VzIGluIG9uZSBxdWVyeSBibG9jay4ATWlzcGxhY2VkIElOVE8gY2xhdXNlLCBJTlRPIGlzIG5vdCBhbGxvd2VkIGluc2lkZSBzdWJxdWVyaWVzLCBhbmQgbXVzdCBiZSBwbGFjZWQgYXQgZW5kIG9mIFVOSU9OIGNsYXVzZXMuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgYmxvY2tlZCBmb3IgJXMgZGF5KHMpICglcyBkYXkocykgcmVtYWluaW5nKSBkdWUgdG8gJXUgY29uc2VjdXRpdmUgZmFpbGVkIGxvZ2lucy4AVU5TSUdORUQgZm9yIHRoZSBZRUFSIGRhdGEgdHlwZSBpcyBkZXByZWNhdGVkIGFuZCBzdXBwb3J0IGZvciBpdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQ2xvbmUgbmVlZHMgbWF4X2FsbG93ZWRfcGFja2V0IHZhbHVlIHRvIGJlICV1IG9yIG1vcmUuIEN1cnJlbnQgdmFsdWUgaXMgJXUARmFpbGVkIHRvICVzIHNkaSBmb3IgJXMuJXMgaW4gJXMgZHVlIHRvIG1pc3NpbmcgcmVjb3JkLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyB1c2VzIGNvbHVtbiAnJS0uMTkycycsIGhlbmNlIGNvbHVtbiBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHJ1bm5pbmc7IHJ1biBTVE9QIEdST1VQX1JFUExJQ0FUSU9OIGZpcnN0AFNwZWNpZnlpbmcgYW4gT04gRU1QVFkgY2xhdXNlIGFmdGVyIHRoZSBPTiBFUlJPUiBjbGF1c2UgaW4gYSBKU09OX1RBQkxFIGNvbHVtbiBkZWZpbml0aW9uIGlzIGRlcHJlY2F0ZWQgc3ludGF4IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gU3BlY2lmeSBPTiBFTVBUWSBiZWZvcmUgT04gRVJST1IgaW5zdGVhZC4AVGhlIElOVE8gY2xhdXNlIGlzIGRlcHJlY2F0ZWQgaW5zaWRlIHF1ZXJ5IGJsb2NrcyBvZiBxdWVyeSBleHByZXNzaW9ucyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBtb3ZlIHRoZSBJTlRPIGNsYXVzZSB0byB0aGUgZW5kIG9mIHN0YXRlbWVudCBpbnN0ZWFkLgBUaGUgVkFMVUVTIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBJdCBhbHdheXMgcmV0dXJucyBOVUxMIGluIHRoaXMgY29udGV4dC4gSWYgeW91IG1lYW50IHRvIGFjY2VzcyBhIHZhbHVlIGZyb20gdGhlIFZBTFVFUyBjbGF1c2Ugb2YgdGhlIElOU0VSVCBzdGF0ZW1lbnQsIGNvbnNpZGVyIHVzaW5nIGFuIGFsaWFzIChJTlNFUlQgSU5UTyAuLi4gVkFMVUVTICguLi4pIEFTIGFsaWFzKSBhbmQgcmVmZXJlbmNlIGFsaWFzLmNvbCBpbnN0ZWFkIG9mIFZBTFVFUyhjb2wpIGluIHRoZSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBjbGF1c2UuAFNRTF9DQUxDX0ZPVU5EX1JPV1MgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIHR3byBzZXBhcmF0ZSBxdWVyaWVzIGluc3RlYWQuAEZPVU5EX1JPV1MoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgQ09VTlQoKikgaW5zdGVhZC4ATm8gdmFsdWUgd2FzIGZvdW5kIGJ5ICclLjE5MnMnIG9uIHRoZSBzcGVjaWZpZWQgcGF0aC4ATW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQgYnkgJyUuMTkycycgb24gdGhlIHNwZWNpZmllZCBwYXRoLgBIb3N0bmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJWQgY2hhcmFjdGVycy4AQ29sdW1uICclLjY0cy4lLjY0cy4lLjY0cycgaGF2aW5nIHByZWZpeCBrZXkgcGFydCAnJS42NHMoJXUpJyBpcyBpZ25vcmVkIGJ5IHRoZSBwYXJ0aXRpb25pbmcgZnVuY3Rpb24uIFVzZSBvZiBwcmVmaXhlZCBjb2x1bW5zIGluIHRoZSBQQVJUSVRJT04gQlkgS0VZKCkgY2xhdXNlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIHVzZXJuYW1lIHByb3ZpZGVkIGZvciByZWNvdmVyeSBjaGFubmVsIGlzIGVtcHR5LgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIFVTRVIgb3B0aW9uIHdhcyBub3QgcHJvdmlkZWQgd2l0aCBQQVNTV09SRCBmb3IgcmVjb3ZlcnkgY2hhbm5lbC4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBwYXNzd29yZCBwcm92aWRlZCBmb3IgdGhlIHJlY292ZXJ5IGNoYW5uZWwgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgMzIgY2hhcmFjdGVycy4AU3RhdGVtZW50IHJlcXVpcmVzIGEgdHJhbnNmb3JtIG9mIGEgc3VicXVlcnkgdG8gYSBub24tU0VUIG9wZXJhdGlvbiAobGlrZSBJTjJFWElTVFMsIG9yIHN1YnF1ZXJ5LXRvLUxBVEVSQUwtZGVyaXZlZC10YWJsZSkuIFRoaXMgaXMgbm90IGFsbG93ZWQgd2l0aCBvcHRpbWl6ZXIgc3dpdGNoICdzdWJxdWVyeV90b19kZXJpdmVkJyBvbi4ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgcmVjb3Zlcnkgc29ja2V0IGVuZHBvaW50cyAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCwgY29tbWEgc2VwYXJhdGVkLCBsaXN0IG9mIGVuZHBvaW50cyAoSVA6cG9ydCkuAFRoZSBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyBvbiBlbmRwb2ludCAnJXMnLiBPbmx5IGVuZHBvaW50cyB0aGF0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uIGFyZSB2YWxpZCByZWNvdmVyeSBlbmRwb2ludHMuAFZhcmlhYmxlICclLS42NHMnIGNhbm5vdCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJy4gJS0uMjAwcwBPbmx5IEJJTkxPRyBJTlNFUlQsIENPTU1JVCBhbmQgUk9MTEJBQ0sgc3RhdGVtZW50cyBhcmUgYWxsb3dlZCBhZnRlciBDUkVBVEUgVEFCTEUgd2l0aCBTVEFSVCBUUkFOU0FDVElPTiBzdGF0ZW1lbnQuAEZvcmVpZ24ga2V5IGNyZWF0aW9uIGlzIG5vdCBhbGxvd2VkIHdpdGggQ1JFQVRFIFRBQkxFIGFzIFNFTEVDVCBhbmQgQ1JFQVRFIFRBQkxFIHdpdGggU1RBUlQgVFJBTlNBQ1RJT04gc3RhdGVtZW50LgBTVEFSVCBUUkFOU0FDVElPTiBjbGF1c2UgY2Fubm90IGJlIHVzZWQgJS4xMjhzAEludmFsaWQganNvbiBhdHRyaWJ1dGUsIGVycm9yOiAiJXMiIGF0IHBvcyAldTogJyVzJwBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgRU5HSU5FX0FUVFJJQlVURS4AVGhlIHVzZXIgYXR0cmlidXRlIG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdABDYW5ub3QgcGVyZm9ybSBvcGVyYXRpb24gYXMgSW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gUGxlYXNlIHJldHJ5IGFmdGVyIGVuYWJsaW5nIHJlZG8gbG9nIHdpdGggQUxURVIgSU5TVEFOQ0UAQ2Fubm90IHBlcmZvcm0gb3BlcmF0aW9uIGFzIElubm9EQiBpcyBhcmNoaXZpbmcgcmVkbyBsb2cuIFBsZWFzZSByZXRyeSBhZnRlciBzdG9wcGluZyByZWRvIGFyY2hpdmUgYnkgaW52b2tpbmcgaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfc3RvcCgpAE5vdCBlbm91Z2ggcmVzb3VyY2VzIHRvIGNvbXBsZXRlIGxvY2sgcmVxdWVzdC4ARXZhbHVhdGluZyBhIEpTT04gdmFsdWUgaW4gU1FMIGJvb2xlYW4gY29udGV4dCBkb2VzIGFuIGltcGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCBKU09OIGludGVnZXIgMDsgaWYgdGhpcyBpcyBub3Qgd2hhdCB5b3Ugd2FudCwgY29uc2lkZXIgY29udmVydGluZyBKU09OIHRvIGEgU1FMIG51bWVyaWMgdHlwZSB3aXRoIEpTT05fVkFMVUUgUkVUVVJOSU5HAFRoZSBmdW5jdGlvbiAlcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjaGFyYWN0ZXIgc2V0ICclcycuAENvbnZlcnNpb24gZnJvbSBjb2xsYXRpb24gJXMgaW50byAlcyBpbXBvc3NpYmxlIGZvciAlcwBTY2hlbWEgJyVzJyBpcyBpbiByZWFkIG9ubHkgbW9kZS4ARmFpbGVkIHRvIGVuYWJsZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBmZWF0dXJlLiBUaGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4ARmFpbGVkIHRvIGVuYWJsZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBmZWF0dXJlLiBUaGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSBjYW4gb25seSBiZSBzZXQgd2hlbiBTT1VSQ0VfQVVUT19QT1NJVElPTiBvcHRpb24gb2YgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBpcyBlbmFibGVkLgBUaGUgQEBHTE9CQUwuR1RJRF9NT0RFID0gJS0uNjRzIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGlzIGVuYWJsZWQgaS5lLiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMCBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBpcyBlbmFibGVkIGkuZS4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMS4ASW52YWxpZCB1c2Ugb2YgcGFyYW1ldGVycyBpbiAnJXMnAENoYXJhY3RlciBzZXQgJyVzJyBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoICclcycgaW4gY2FsbCB0byAlcy4AQ2hhbmdpbmcgJXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiBGYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQuAEludmFsaWQgdGltZSB6b25lIGludGVydmFsOiAnJXMnAENhbm5vdCBjYXN0IHZhbHVlIHRvICVzLgBUaGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgZG9lcyBub3QgeWV0IHN1cHBvcnQgJyVzJwBUaGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgaXMgaGlnaGx5IGV4cGVyaW1lbnRhbCBhbmQgaXMgbWVhbnQgZm9yIHRlc3Rpbmcgb25seS4gRG8gbm90IGVuYWJsZSBpdCB1bmxlc3MgeW91IGFyZSBhIE15U1FMIGRldmVsb3Blci4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIHdpdGggLS1sb2ctZXJyb3Itc2VydmljZXM9Li4uIHByb3ZpZGVzIGEgbG9nLXBhcnNlci4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIHByZXZpb3VzIHJ1bnMnIGVycm9yLWxvZ3MgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCBpbiBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMgc3VwcG9ydHMgd3JpdGluZyB0byB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hLiBUaGUgc2VydmVyIHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSB0aGUgY3VycmVudCBydW5zJyBlcnJvciBldmVudHMgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuIFRvIGNoYW5nZSB0aGlzLCBhZGQgYSBsb2ctc2luayB0aGF0IHN1cHBvcnRzIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgdG8gQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzLgBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMgbGlzdHMgbW9yZSB0aGFuIG9uZSBsb2ctZmlsdGVyIHNlcnZpY2UuIFRoaXMgaXMgZGlzY291cmFnZWQgYXMgaXQgd2lsbCBtYWtlIGl0IGhhcmQgdG8gdW5kZXJzdGFuZCB3aGljaCBydWxlIGluIHdoaWNoIGZpbHRlciBhZmZlY3RlZCBhIGxvZy1ldmVudC4AQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBVc2VyICUuMjU2cyBpcyByZWZlcmVuY2VkIGFzIGEgZGVmaW5lciBhY2NvdW50IGluICVzLgBPcGVyYXRpb24gJXMgZmFpbGVkIGZvciAlLjI1NnMgYXMgaXQgaXMgcmVmZXJlbmNlZCBhcyBhIGRlZmluZXIgYWNjb3VudCBpbiAlcy4ARGVjaW1hbCBudW1iZXIgaW4gcmVndWxhciBleHByZXNzaW9uIGlzIHRvbyBsYXJnZS4AVGhlIHZhcmlhYmxlICIlcyIgaGFzIGEgbm9uLWludGVnZXIgYmFzZWQgdHlwZQBSZWFkcyB3aXRoIHNlcmlhbGl6YWJsZSBpc29sYXRpb24vU0VMRUNUIEZPUiBTSEFSRSBhcmUgbm90IHN1cHBvcnRlZCBmb3IgQUNMIHRhYmxlcy4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1cGRhdGVzIGEgdGFibGUgZGVwZW5kaW5nIG9uIEFDTCB0YWJsZSByZWFkIG9wZXJhdGlvbi4gQXMgc3RvcmFnZSBlbmdpbmUgcm93IGxvY2tzIGFyZSBza2lwcGVkIGZvciBBQ0wgdGFibGUsIGl0IG1heSBub3QgaGF2ZSBzYW1lIGVmZmVjdCBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIE1vbml0b3IgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBNb25pdG9yIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBUaGUgUmVwbGljYSBNb25pdG9yIHRocmVhZCBmYWlsZWQgdG8gc3RhcnQuAFJlcGxpY2F0aW9uIGNhbm5vdCBzdGFydCUuMTkycyB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGFzIHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgb3B0aW9ucyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIHZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciB3aWxsIG9ubHkgdGFrZSBlZmZlY3QgZm9yIGNoYW5uZWxzIHJ1bm5pbmcgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA8PiBPRkYuAFVzaW5nIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIGNyZWF0ZXMgbGltaXRhdGlvbnMgb24gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5IC0geW91IGNhbm5vdCBmYWlsIG92ZXIgYmV0d2VlbiBkb3duc3RyZWFtIGFuZCB1cHN0cmVhbSBzZXJ2ZXJzLiBPbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZW5hYmxlIEdUSURzIG9uIHRoZSBzb3VyY2UsIGZvciBpbnN0YW5jZSwgYmVjYXVzZSBvZiBsYWNrIG9mIHBlcm1pc3Npb25zLiBJZiBwb3NzaWJsZSwgdXNlIHRoZSBwcm9jZWR1cmUgZm9yIGVuYWJsaW5nIEdUSUQgdHJhbnNhY3Rpb25zIG9ubGluZSBpbnN0ZWFkLCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uAFdBSVRfVU5USUxfU1FMX1RIUkVBRF9BRlRFUl9HVElEUyBjYW5ub3QgYmUgdXNlZCBvbiBhIGNoYW5uZWwgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+AFRoZSBTUUxfQUZURVJfR1RJRFMgb3IgU1FMX0JFRk9SRV9HVElEUyBjbGF1c2VzIGZvciBTVEFSVCBSRVBMSUNBIGNhbm5vdCBiZSB1c2VkIHdoZW4gdGhlIHJlcGxpY2F0aW9uIGNoYW5uZWwgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+LgBSZXBsaWNhdGlvbiAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gd2hlcmUgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUAQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AVGhlIGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5IGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZywgbW9zdCBsaWtlbHkgaXQgaXMgd2FpdGluZyBmb3IgYSBkYXRhYmFzZS90YWJsZSBsb2NrLCB3aGljaCBpcyBwcmV2ZW50aW5nIHRoZSBjaGFubmVsIGZyb20gc3RvcHBpbmcuIFBsZWFzZSBjaGVjayBkYXRhYmFzZS90YWJsZSBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGNyZWF0ZWQgYnkgYmFja3VwIHRvb2xzLgBBVVRPRVhURU5EX1NJWkUgc2hvdWxkIGJlIGEgbXVsdGlwbGUgb2YgJXVNAElubm9EQjogIiVzIiBub3QgYWxsb3dlZCB3aXRoIGdlbmVyYWwgdGFibGVzcGFjZXMAQVVUT0VYVEVORF9TSVpFIHZhbHVlIHNob3VsZCBiZSBiZXR3ZWVuICV1TSBhbmQgJXVNAEFVVE9FWFRFTkRfU0laRSBjbGF1c2UgaXMgbm90IHZhbGlkIGZvciAlcyB0YWJsZXNwYWNlLgBVc2VyIGFjY291bnQgJXMgaXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBncmFudGVkIHRvIHRoZSByb2xlICVzLiBUaGUgR1JBTlQgd291bGQgY3JlYXRlIGEgbG9vcABBIHRhYmxlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgdmlzaWJsZSBjb2x1bW4uAENvbXByZXNzaW9uIGZhaWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IgOiAlcwBUaGUgcGFyYW1ldGVyIG5ldHdvcmtfbmFtZXNwYWNlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBQbGVhc2UgdXNlIHRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIGNvbW1hbmQgdG8gc2V0IGNoYW5uZWwgbmV0d29ya19uYW1lc3BhY2UgcGFyYW1ldGVyLgBUaGUgY2xpZW50IHdhcyBkaXNjb25uZWN0ZWQgYnkgdGhlIHNlcnZlciBiZWNhdXNlIG9mIGluYWN0aXZpdHkuIFNlZSB3YWl0X3RpbWVvdXQgYW5kIGludGVyYWN0aXZlX3RpbWVvdXQgZm9yIGNvbmZpZ3VyaW5nIHRoaXMgYmVoYXZpb3IuAEludmFsaWQgY2FzdCBmcm9tICVzIHRvICVzLgBJbnZhbGlkIGNhc3QgZnJvbSAlcyB0byAlcy4gQSBwb2x5Z29uIHJpbmcgaXMgaW4gdGhlIHdyb25nIGRpcmVjdGlvbi4AQXJndW1lbnRzIHRvIGZ1bmN0aW9uICVzIGNvbnRhaW5zIGdlb21ldHJpZXMgd2l0aCBkaWZmZXJlbnQgU1JJRHM6ICV1IGFuZCAldS4gQWxsIGdlb21ldHJpZXMgbXVzdCBoYXZlIHRoZSBzYW1lIFNSSUQuAEtleXJpbmcgcmVsb2FkIGZhaWxlZC4gUGxlYXNlIGNoZWNrIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLgBUYWJsZXNwYWNlICclLjE5MnMnIGlzIGludmFsaWQgZm9yIFNESSBvcGVyYXRpb25zLgBWYWx1ZSB0b28gbG9uZyBzZXR0aW5nIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TIG9wdGlvbiB0byBhICVkIGNoYXJzIGxvbmcgc3RyaW5nIGZvciBjaGFubmVsICclLjE5MnMnLgBBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZCBmb3IgY2hhbm5lbCAlcy4gUGxlYXNlIHVzZSBUTFN2MS4yIG9yIGhpZ2hlci4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AUmVwbGljYXRpb24gJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IHdoZXJlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkAFVuYWJsZSB0byByZXRyaWV2ZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIHZhcmlhYmxlIGR1cmluZyBzZXJ2ZXIgY2hlY2tzIG9uIHJlcGxpY2F0aW9uIG9wZXJhdGlvbnMuAEJvdGggYXVkaXRfbG9nX21heF9zaXplIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBhcmUgc2V0IHRvIG5vbi16ZXJvLiBhdWRpdF9sb2dfbWF4X3NpemUgdGFrZXMgcHJlY2VkZW5jZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgaXMgaWdub3JlZABhdWRpdF9sb2dfcm90YXRlX29uX3NpemUgaXMgbm90IGdyYW51bGFyIGVub3VnaCBmb3IgdGhlIHZhbHVlIG9mIGF1ZGl0X2xvZ19tYXhfc2l6ZSBzdXBwbGllZC4gU2hvdWxkIGJlIGF0IGxlYXN0ICVkIHRpbWVzIHNtYWxsZXIuAENyZWF0ZS9BbHRlciB1c2VyIGhhcyBmYWlsZWQsIENvbmZpZ3VyZWQgdXNlciByZWFsbSBhcyBhdXRoZW50aWNhdGlvbiBzdHJpbmcgaXMgZW1wdHksIFBsZWFzZSBtYWtlIHN1cmUgdG8gY29uZmlndXJlIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBhcyB1c2VyIHJlYWxtLgBDYW5ub3QgaW5zdGFsbCB0aGUgJS4xOTJzIHBsdWdpbiB3aGVuIHRoZSAlLjE5MnMgcGx1Z2luIGlzIGluc3RhbGxlZC4AJWQgZXJyb3IgbG9nZ2luZyBjb21wb25lbnQocykgZmFpbGVkIHRvIGZsdXNoLiBGb3IgZmlsZS1iYXNlZCBsb2dzIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBwYXRoIG9yIHBlcm1pc3Npb25zIG9mIHRoZSBsb2ctZmlsZSBoYXZlIGNoYW5nZWQuIEZhaWx1cmUgdG8gZmx1c2ggZmlsZWQtYmFzZWQgbG9ncyBtYXkgYWZmZWN0IGxvZy1yb3RhdGlvbi4AVGhlIHVudGlsIGNsYXVzZSBTUUxfQUZURVJfTVRTX0dBUFMgaXMgYmVpbmcgdXNlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfTU9ERSA9IE9OIGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTj0xIG1lYW5pbmcgdGhlIHNlcnZlciBkaWQgbm90IGNvbXB1dGUgaW50ZXJuYWxseSB3aGF0IGdhcHMgbWF5IGV4aXN0IGluIHRoZSByZWxheSBsb2cgdHJhbnNhY3Rpb24gZXhlY3V0aW9uLiBUbyBjbG9zZSBhbnkgZXhlY3V0aW9uIGdhcHMgdXNlIGVpdGhlciB0aGUgU1FMX0JFRk9SRV9HVElEUyBvciBTUUxfQUZURVJfR1RJRFMgdW50aWwgY2xhdXNlLgBJbnZhbGlkIHRhcmdldCBmb3IgYXNzaWdubWVudCBpbiBJTlNFUlQgb3IgVVBEQVRFIHN0YXRlbWVudCAnJS4xOTJzJy4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBhIEdyb3VwIFJlcGxpY2F0aW9uIHNlY29uZGFyeSBtZW1iZXIsIGl0IG11c3QgYmUgZG9uZSBvbiB0aGUgZ3JvdXAgcHJpbWFyeS4AVW5hYmxlIHRvIHByb3BhZ2F0ZSB0aGUgU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiB2YWx1ZSBmb3IgY2hhbm5lbCAnJXMnIHRvIGdyb3VwIHJlcGxpY2F0aW9uIG1lbWJlcnMuIFBsZWFzZSByZXRyeSB0aGUgb3BlcmF0aW9uLgBhdWRpdF9sb2dfZm9ybWF0X3VuaXhfdGltZXN0YW1wIGlzIGFwcGxpY2FibGUgb25seSB3aGVuIGF1ZGl0X2xvZ19mb3JtYXQgPSBKU09OLgBJbnZhbGlkIHBsdWdpbiAiJXMiIHNwZWNpZmllZCBhcyAlZCBmYWN0b3IgZHVyaW5nICIlcyIuAElERU5USUZJRUQgQlkgY2xhdXNlIGR1cmluZyAiJXMiIG5vdCBzdXBwb3J0ZWQgZm9yIHBsdWdpbiAiJXMiLgBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwbHVnaW4gIiVzIi4AQXV0aGVudGljYXRpb24gcGx1Z2luIHJlcXVpcmVzIHJlZ2lzdHJhdGlvbi4gUGxlYXNlIHJlZmVyIEFMVEVSIFVTRVIgc3ludGF4IG9yIHNldCAtLXJlZ2lzdGVyLWZhY3RvciBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGRvIHJlZ2lzdHJhdGlvbi4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBleGlzdHMuIFBsZWFzZSBkbyBBTFRFUiBVU0VSLi4uIERST1AgJWQgZmFjdG9yIGJlZm9yZSBkb2luZyB0aGlzIG9wZXJhdGlvbiBPUiBkbyBBTFRFUiBVU0VSLi4uIE1PRElGWSAlZCBmYWN0b3IuLi4gdG8gbW9kaWZ5IGV4aXN0aW5nICVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QuACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgZG9lc24ndCBleGlzdC4gUGxlYXNlIGRvIEFMVEVSIFVTRVIuLi4gQUREICVkIGZhY3Rvci4uLiBiZWZvcmUgZG9pbmcgdGhpcyBvcGVyYXRpb24uACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgZG9lcyBub3QgbWF0Y2ggYWdhaW5zdCBhdXRoZW50aWNhdGlvbiBwb2xpY3kuIFBsZWFzZSByZWZlciBAQGF1dGhlbnRpY2F0aW9uX3BvbGljeSBzeXN0ZW0gdmFyaWFibGUuAFRoZSByZWdpc3RyYXRpb24gZm9yICVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgaXMgYWxyZWFkeSBjb21wbGV0ZWQuIFlvdSBjYW5ub3QgcGVyZm9ybSByZWdpc3RyYXRpb24gbXVsdGlwbGUgdGltZXMuAFRoZSByZWdpc3RyYXRpb24gb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGZvciB1c2VyICclcydAJyVzJy4gVGhlIG9wZXJhdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgaW4gdXNlcidzIG93biBzZXNzaW9uLgBBdXRoZW50aWNhdGlvbiBwbHVnaW4ncyByZWdpc3RyYXRpb24gZmFpbGVkLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIHNob3VsZCBiZSBhZGRlZCBiZWZvcmUgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4AQXV0aGVudGljYXRpb24gZmFjdG9yIHNob3VsZCBiZSBkaWZmZXJlbnQuAFRoZSBvcGVyYXRpb24gIiVzIiBjYW5ub3QgYmUgcGVyZm9ybWVkIGZvciB1c2VyICclcydAJyVzJyBjb25maWd1cmVkIHRvIGNvbm5lY3Qgd2l0aG91dCBhIHBhc3N3b3JkLgBHVElEX09OTFkgY2Fubm90IGJlIGVuYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycuIFlvdSBuZWVkIEdUSURfTU9ERSA9IE9OLCBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgYW5kIFJFUVVJUkVfUk9XX0ZPUk1BVCA9IDEuAFJFUVVJUkVfUk9XX0ZPUk1BVCBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX09OTFk9MS4AU09VUkNFX0FVVE9fUE9TSVRJT04gY2Fubm90IGJlIGRpc2FibGVkIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdoZW4gR1RJRF9PTkxZPTEuAFdoZW4gZGlzYWJsaW5nIEdUSURfT05MWSBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT04gRk9SIENIQU5ORUwgJyUuMTkycycgeW91IG11c3QgcHJvdmlkZSBTT1VSQ0VfTE9HX0ZJTEUgYW5kIFNPVVJDRV9MT0dfUE9TIGFzIHNvdXJjZSBwb3NpdGlvbnMgYXJlIGludmFsaWQuAFdoZW4gZGlzYWJsaW5nIFNPVVJDRV9BVVRPX1BPU0lUSU9OIEZPUiBDSEFOTkVMICclLjE5MnMnIHlvdSBtdXN0IHByb3ZpZGUgU09VUkNFX0xPR19GSUxFIGFuZCBTT1VSQ0VfTE9HX1BPUyBhcyBzb3VyY2UgcG9zaXRpb25zIGFyZSBpbnZhbGlkLgBXaGVuIGNvbmZpZ3VyaW5nIGEgZ3JvdXAgcmVwbGljYXRpb24gY2hhbm5lbCB5b3UgbXVzdCBkbyBpdCB3aGVuIEdUSURfTU9ERSA9IE9OLgBSZXBsaWNhdGlvbiBjYW5ub3Qgc3RhcnQlLjE5MnMgd2l0aCBHVElEX09OTFkgPSAxIGFzIHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgcmVwbGljYXRpb24gcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgbWF5IGJlIG91dC1vZi1kYXRlIG9uIGNoYW5uZWwgJyUuMTkycycsIGR1ZSB0byB0aGUgdXNlIG9mIEdUSURfT05MWT0xLiBUaGUgb3V0LW9mLWRhdGUgcG9zaXRpb25zIGNhbiBzdGlsbCBiZSB1c2VkIGluIHNvbWUgY2FzZXMgc28sIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGVtLCB3ZSBzdWdnZXN0IHRoYXQgeW91IHN0YXJ0IHRoZSByZXBsaWNhdGlvbiB0byByZWNlaXZlIGFuZCBhcHBseSBhdCBsZWFzdCBvbmUgdHJhbnNhY3Rpb24sIHdoaWNoIHdpbGwgc2V0IHRoZSBwb3NpdGlvbnMgdG8gdmFsaWQgdmFsdWVzLgBTU0wgZmlwcyBtb2RlIGVycm9yOiAlcwAlcz0lbGx1IGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFslbGx1LCVsbHVdLiAlbGx1IHdpbGwgYmUgdXNlZC4ATUFUQ0ggZG9lcyBub3Qgc3VwcG9ydCBST0xMVVAgY29sdW1ucy4ATWlzc2luZyBsb2NhbGUgcmVzb3VyY2UgaW4gcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkuAFJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5IHVzZWQgZGVmYXVsdCAocm9vdCkgbG9jYWxlLgBNaXNzaW5nIGRhdGEgZmlsZSBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCAlcy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nICVzIHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAFRoZSAlcyB3YXMgY2FsbGVkIHdoZW4gdGhlcmUgd2FzIGFscmVhZHkgYW5vdGhlciBjb25jdXJyZW50IGNhbGwgdG8gdGhpcyBwcm9jZWR1cmUuIE5vIGFjdGlvbiB3YXMgdGFrZW4uIFdhaXQgZm9yIG90aGVyIGNhbGxzIHRvICVzIHRvIGZpbmlzaCBiZWZvcmUgcmV0cnlpbmcuAENvbm5lY3Rpb24gY2xvc2VkLiBHbG9iYWwgY29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4AQ29ubmVjdGlvbiBjbG9zZWQuIENvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAE5lZWQgdG8gcmVidWlsZCB0aGUgdGFibGUgdG8gY2hhbmdlIGNvbHVtbiB0eXBlAFRoaXMgZnVuY3Rpb24gJyUtLjE5MnMnIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbG9hZGFibGUgZnVuY3Rpb24gKFVERikuIFRvIGludm9rZSB0aGUgc3RvcmVkIGZ1bmN0aW9uLCBpdCBpcyBuZWNlc3NhcnkgdG8gcXVhbGlmeSBpdCB3aXRoIHRoZSBzY2hlbWEgbmFtZS4AQ291bGQgbm90IHB1cmdlIGJpbmFyeSBsb2dzIHNpbmNlIGFub3RoZXIgc2Vzc2lvbiBpcyBleGVjdXRpbmcgTE9DSyBJTlNUQU5DRSBGT1IgQkFDS1VQLiBXYWl0IGZvciB0aGF0IHNlc3Npb24gdG8gcmVsZWFzZSB0aGUgbG9jay4AVG9vIG1hbnkgd2luZG93cyBpbiBTRUxFQ1Q6ICVkLiBNYXhpbXVtIGFsbG93ZWQgaXMgJWQuIFVzZSBuYW1lZCB3aW5kb3dzIHRvIHNoYXJlIHdpbmRvd3MgYmV0d2VlbiB3aW5kb3cgZnVuY3Rpb25zLgAlcwBDb21tZW50IGZvciAlcyAnJXMnIGNvbnRhaW5zIGFuIGludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJy4ARGVmaW5pdGlvbiBvZiAlcyAnJS0uMTkycy4lLS4xOTJzJyBjb250YWlucyBhbiBpbnZhbGlkICVzIGNoYXJhY3RlciBzdHJpbmc6ICclLjY0cycuAENhbid0IGV4ZWN1dGUgdGhlIGdpdmVuIGNvbW1hbmQgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUID09ICdVVUlEOk5VTUJFUicuAFhBOiBUZW1wb3JhcnkgdGFibGVzIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbnNpZGUgWEEgdHJhbnNhY3Rpb25zIHdoZW4geGFfZGV0YWNoX29uX3ByZXBhcmU9T04ATWF4aW11bSByb3cgdmVyc2lvbnMgcmVhY2hlZCBmb3IgdGFibGUgJXMuIE5vIG1vcmUgY29sdW1ucyBjYW4gYmUgYWRkZWQgb3IgZHJvcHBlZCBpbnN0YW50bHkuIFBsZWFzZSB1c2UgQ09QWS9JTlBMQUNFLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhcyBhZnRlciB0aGlzIG1heCBwb3NzaWJsZSByb3cgc2l6ZSBjcm9zc2VzIG1heCBwZXJtaXNzaWJsZSByb3cgc2l6ZS4gVHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAEFsbCBxdWVyaWVzIGhhdmUgYmVlbiBibG9ja2VkIHdoaWxlIGZ1bmN0aW9uICdncm91cF9yZXBsaWNhdGlvbl9zZXRfYXNfcHJpbWFyeSgpJyBpcyBleGVjdXRpbmcuIFBsZWFzZSByZWZlciB0aW1lb3V0IHBhcmFtZXRlciBvZiBmdW5jdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fc2V0X2FzX3ByaW1hcnkoKScuAERlbGltaXRlciAnJXMnIGluIHBvc2l0aW9uICVkIGluIGRhdGV0aW1lIHZhbHVlICclcycgYXQgcm93ICVkIGlzIGRlcHJlY2F0ZWQuIFByZWZlciB0aGUgc3RhbmRhcmQgJyVjJy4ARGVsaW1pdGVyICclcycgaW4gcG9zaXRpb24gJWQgaW4gZGF0ZXRpbWUgdmFsdWUgJyVzJyBhdCByb3cgJWQgaXMgc3VwZXJmbHVvdXMgYW5kIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUuAENhbm5vdCBwZXJzaXN0IFNFTlNJVElWRSBzeXN0ZW0gdmFyaWFibGUgJyVzJyBiZWNhdXNlIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgaXMgdW5hdmFpbGFibGUuAFNFTlNJVElWRSBzeXN0ZW0gdmFyaWFibGUgJyVzJyB3YXMgcGVyc2lzdGVkIHdpdGhvdXQgZW5jcnlwdGlvbi4gQ29uc2lkZXIgcmVzdGFydGluZyBzZXJ2ZXIgd2l0aCBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IHRvIHBlcnNpc3QgU0VOU0lUSVZFIHZhcmlhYmxlcyBzZWN1cmVseS4AVHJpZ2dlciAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMgb24gdGhlIHRhYmxlICclLS4xOTJzJy4nJS0uMTkycycuAFRyaWdnZXIgJyUtLjE5MnMnLiclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cyBvbiBhIGRpZmZlcmVudCB0YWJsZS4gVGhlICdJRiBOT1QgRVhJU1RTJyBjbGF1c2UgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRyaWdnZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSB0YWJsZS4AVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24uIFRoZSAnSUYgTk9UIEVYSVNUUycgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2hpbGUgY3JlYXRpbmcgYSBsb2FkYWJsZSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24uAFNFVCBQQVNTV09SRCBoYXMgbm8gc2lnbmlmaWNhbmNlIGZvciB1c2VyICclcydAJyVzJyBhcyB0aGUgYXV0aGVudGljYXRpb24gbWV0aG9kIHVzZWQgZG9lc24ndCBzdG9yZSBhdXRoZW50aWNhdGlvbiBkYXRhIGluIHRoZSBNeVNRTCBzZXJ2ZXIuIFBsZWFzZSBjb25zaWRlciB1c2luZyBBTFRFUiBVU0VSIGluc3RlYWQgaWYgeW91IHdhbnQgdG8gY2hhbmdlIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMuAENhbm5vdCByZWNvdmVyIGZyb20gZGV0ZWN0X29ubHkgZG91Ymxld3JpdGUgYnVmZmVyIGFzIHBhZ2UgJXUgZnJvbSBiYXRjaCBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHRlZC4ARGF0YWJhc2UgcGFnZSBjb3JydXB0aW9uIG9mIHRhYmxlc3BhY2UgJXMgc3BhY2VfaWQ6ICV1IHBhZ2VfbnVtOiAldS4gQ2Fubm90IHJlY292ZXIgaXQgZnJvbSB0aGUgZG91Ymxld3JpdGUgYnVmZmVyIGJlY2F1c2UgaXQgd2FzIHdyaXR0ZW4gaW4gZGV0ZWN0X29ubHktZG91Ymxld3JpdGUgbW9kZS4ATGF0aXR1ZGUgb2Ygb3JpZ2luIG11c3QgYmUgd2l0aGluIFstOTAsIDkwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAExvbmdpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSB3aXRoaW4gKC0xODAsIDE4MF0gZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgY29udGFpbnMgdW51c2VkIHByb2plY3Rpb24gcGFyYW1ldGVyICIlcyIuAEZhaWxlZCB0byBnZW5lcmF0ZSBpbnZpc2libGUgcHJpbWFyeSBrZXkuIENvbHVtbiAnbXlfcm93X2lkJyBhbHJlYWR5IGV4aXN0cy4ARmFpbGVkIHRvIGdlbmVyYXRlIGludmlzaWJsZSBwcmltYXJ5IGtleS4gQXV0by1pbmNyZW1lbnQgY29sdW1uIGFscmVhZHkgZXhpc3RzLgBBbHRlcmluZyBnZW5lcmF0ZWQgaW52aXNpYmxlIHByaW1hcnkga2V5IGNvbHVtbiAnbXlfcm93X2lkJyBpcyBub3QgYWxsb3dlZC4AUGxlYXNlIGRyb3AgcHJpbWFyeSBrZXkgY29sdW1uIHRvIGJlIGFibGUgdG8gZHJvcCBnZW5lcmF0ZWQgaW52aXNpYmxlIHByaW1hcnkga2V5LgBHZW5lcmF0aW5nIGFuIGludmlzaWJsZSBwcmltYXJ5IGtleSBmb3IgYSB0YWJsZSBjcmVhdGVkIHVzaW5nIENSRUFURSBUQUJMRSAuLi4gU0VMRUNUIC4uLiBpcyBkaXNhbGxvd2VkIHdoZW4gYmlubG9nX2Zvcm1hdD1TVEFURU1FTlQuIEl0IGNhbm5vdCBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIFNFTEVDVCByZXRyaWV2ZXMgcm93cyBpbiB0aGUgc2FtZSBvcmRlciBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgdmFsdWUgZ2VuZXJhdGVkIGZvciB0aGUgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5IGNvbHVtbiB3aWxsIGJlIHRoZSBzYW1lIG9uIHNvdXJjZSBhbmQgcmVwbGljYSBmb3IgYWxsIHJvd3MuIFVzZSBiaW5sb2dfZm9ybWF0PVJPVyBvciBNSVhFRCB0byBleGVjdXRlIHRoaXMgc3RhdGVtZW50LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBvcHRpb24gYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMuIFRvIHNldCBvbmUsIGZpcnN0IHVuc2V0IHRoZSBvdGhlciBieSBzZXR0aW5nIGl0IHRvIDAuAFJlY3Vyc2l2ZSB0YWJsZSByZWZlcmVuY2UgaW4gRVhDRVBUIG9yIElOVEVSU0VDVCBvcGVyYW5kIGlzIG5vdCBhbGxvd2VkLgBFcnJvciB3aGVuIHRyeWluZyB0byBmZXRjaCBpbmZvcm1hdGlvbiBmcm9tIHNlY3VyaXR5IGNvbnRleHQgb2JqZWN0LCB3aGVuIHRyeWluZyB0byBjb25uZWN0IHRoZSBzZXJ2ZXIuAEVycm9yIGluIGNvbW1hbmQgc2VydmljZSBiYWNrZW5kIGludGVyZmFjZSwgYmVjYXVzZSBvZiA6ICIlcyIAVGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3b3VsZCBuZWVkIEZJTEUgcHJpdmlsZWdlIHRvIGV4ZWN1dGUgYSBMT0FEIERBVEEgSU5GSUxFIHN0YXRlbWVudCByZXBsaWNhdGVkIGluIHN0YXRlbWVudCBmb3JtYXQuIENvbnNpZGVyIHVzaW5nIGJpbmxvZ19mb3JtYXQ9Uk9XIG9uIHNvdXJjZS4gSWYgdGhlIHJlcGxpY2F0ZWQgZXZlbnRzIGFyZSB0cnVzdGVkLCByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUgYnkgdGVtcG9yYXJpbHkgZ3JhbnRpbmcgRklMRSB0byB0aGUgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBUaGUgJ1NFVCBHTE9CQUwgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycz0lcycgY29tbWFuZCBlbmNvdW50ZXJlZCBhIGZhaWx1cmUuICVzAFVzaW5nICVzIGFzIHVucXVvdGVkIGlkZW50aWZpZXIgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBxdW90ZXMgb3IgcmVuYW1lIHRoZSBpZGVudGlmaWVyLgBNYXggbnVtYmVyIG9mIGR1cGxpY2F0ZSByb3dzIGluIElOVEVSU0VDVCBBTEwgZXhjZWVkZWQuAFF1ZXJ5IHRocmVhZHMgY291bnQoJXUpIGV4Y2VlZHMgdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCgldSkgcGVyIGdyb3VwLiBQbGVhc2UgdXNlIHF1ZXJ5IHRocmVhZHMgY291bnQgcGVyIGdyb3VwIHNtYWxsZXIgb3IgZXF1YWwgdG8gbWF4IHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQgcGVyIGdyb3VwAEludmFsaWQgdGltZXN0YW1wIGZvcm1hdCBpbiAlcyB1ZGYAU0hBUEVfUFJFRElDVElPTiBVREYgJXMgZ290IGVycm9yIGJlY2F1c2Ugb2YgJXMuAEhlaWdodCBwYXJhbWV0ZXIgbXVzdCBiZSBub24gbmVnYXRpdmUuAFNjYWxpbmcgcGFyYW1ldGVyIG11c3QgYmUgbm9uIG5lZ2F0aXZlLgBab25lIHdpZHRoIHBhcmFtZXRlciBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxLTYwLgBMYXRpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSArLTkwIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdCwgaW4gUG9sYXIgU3RlcmVvZ3JhcGhpYyAodmFyaWFudCBBKSBwcm9qZWN0aW9uIG1ldGhvZCAoRVBTRzo5ODEwKS4AVGhlIGNsaWVudCBpcyB1c2luZyBhIGRlcHJlY2F0ZWQgQ0xJRU5UX05PX1NDSEVNQSBjbGllbnQgb3B0aW9uLiBDTElFTlRfTk9fU0NIRU1BIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBUYWJsZSAnJS0uMTkycycgaXMgbm90IGVtcHR5LgBUYWJsZSAnJS0uMTkycycgaGFzIG5vIHByaW1hcnkga2V5LgBUYWJsZSAnJS0uMTkycycgaXMgaW4gYSBzaGFyZWQgdGFibGVzcGFjZS4AVGFibGUgJyUtLjE5MnMnIGhhcyBpbmRleGVzIG90aGVyIHRoYW4gcHJpbWFyeSBrZXkuAFtJTiBQUklNQVJZIEtFWSBPUkRFUl0gc3BlY2lmaWVkIGJ1dCBkYXRhIG5vdCBzb3J0ZWQ6ICclLS42NHMnAEJ1bGsgZXhlY3V0b3IgZXJyb3I6ICVzAEJ1bGsgcmVhZGVyIGZhaWxlZCB0byBpbml0aWFsaXplIGxpYmN1cmwAQnVsayByZWFkZXIgZ290IGxpYmN1cmwgZXJyb3I6ICVzAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciByZXNwb25zZSBmcm9tIHNlcnZlcjogJWxkAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciBpbiBjb21tdW5pY2F0aW9uIHdpdGggc291cmNlIHNlcnZlciwgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBCdWxrIGxvYWRlciBmYWlsZWQgaW4gSW5ub2RiIHN0b3JhZ2UgZW5naW5lLCBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAENTViBjb2x1bW4gdG9vIGJpZyBmb3IgbGVmdG92ZXIgYnVmZmVyLgBCdWxrIGxvYWRlciBjb21wb25lbnQgZXJyb3I6ICVzAFRoZSBmaXJzdCBmaWxlIGJlaW5nIGxvYWRlZCBjb250YWluZWQgbGVzcyBsaW5lcyB0aGFuIHRoZSBpZ25vcmUgY2xhdXNlAE1pc3NpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBBZGQgT1BUSU9OQUxMWSB0byB0aGUgRU5DTE9TRUQgQlkgY2xhdXNlIHRvIGFsbG93IHRoaXMgaW5wdXQuAFRoZSBudW1iZXIgb2YgaW5wdXQgY29sdW1ucyB0aGF0IG5lZWQgdG8gYmUgYnVmZmVyZWQgZm9yIHBhcnNpbmcgZXhjZWVkZWQgcHJlZGVmaW5lZCBidWZmZXIgbWF4IHNpemUgZm9yIGZpbGUgJyVzJy4AVGhlIGNvbHVtbiBkYXRhIHRoYXQgbmVlZGVkIHRvIGJlIGNvcGllZCBkdWUgdG8gZXNjYXBlZCBjaGFyYWN0ZXJzIGV4Y2VlZGVkIHRoZSBzaXplIG9mIHRoZSBpbnRlcm5hbCBjb3B5IGJ1ZmZlciBmb3IgZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgcm93IHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgZW5kaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIE5VTEwgZXNjYXBlIChcTikgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBjb2x1bW4gdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycgcmVzdWx0aW5nIGluIGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLgBMT0FEIEJVTEsgREFUQSBpbnRvIHRhYmxlICclLS4xOTJzJyBmYWlsZWQ6ICVzAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLS4xOTJzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnAE5VTEwgc3VwcGxpZWQgdG8gTk9UIE5VTEwgY29sdW1uICclcycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwBPbiBhIEdyb3VwIFJlcGxpY2F0aW9uIGNoYW5uZWwsIHNldHRpbmcgUkVRVUlSRV9UQUJMRV9QUklNQVJZX0tFWV9DSEVDSyB0byAnR0VORVJBVEUnIGlzIG5vdCBhbGxvd2VkLgBDYW5ub3QgY2hhbmdlIHRoZSAnJXMnIHN5c3RlbSB2YXJpYWJsZSBpbiByZWFkLW9ubHkgbW9kZS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIG9yIGRyb3BwZWQgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhcyBlaXRoZXIgbWF4IHBvc3NpYmxlIHJvdyBzaXplIGFscmVhZHkgY3Jvc3NlcyBtYXggcGVybWlzc2libGUgcm93IHNpemUgb3IgbWF5IGNyb3NzIGl0IGFmdGVyIGFkZC4gVHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCB0byAnJXMnIHdpdGggQUxHT1JJVEhNPUlOU1RBTlQgYW55bW9yZS4gUGxlYXNlIHRyeSBBTEdPUklUSE09SU5QTEFDRS9DT1BZLgBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBUaGUgdmFsdWUgc3VwcGxpZWQgZm9yICVzIGluIHRoZSBTRVQgbGlzdCBjYW5ub3QgYmUgbnVsbABUaGUgYXNzaWdubWVudCBvZiAlcyBpbiBTRVQgZG9lc24ndCBtYXRjaCBhbnkgb2YgdGhlIHZhcmlhYmxlcyByZWdpc3RlcmVkIGJ5IHRoZSBjb21wb25lbnQocykAJyVzJyBpcyBhIHVzZXIgZGVmaW5lZCBjb2xsYXRpb24uIFVzZXIgZGVmaW5lZCBjb2xsYXRpb25zIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgYSBjb21waWxlZCBjb2xsYXRpb24gaW5zdGVhZC4AVXNlci1sZXZlbCBsb2NrIG5hbWUgJyUtLjE5MnMnIHNob3VsZCBub3QgZXhjZWVkICVkIGNoYXJhY3RlcnMuAEltbWVkaWF0ZWx5IHN0YXJ0aW5nIHRoZSB2ZXJzaW9uIGNvbW1lbnQgYWZ0ZXIgdGhlIHZlcnNpb24gbnVtYmVyIGlzIGRlcHJlY2F0ZWQgYW5kIG1heSBjaGFuZ2UgYmVoYXZpb3IgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGluc2VydCBhIHdoaXRlLXNwYWNlIGNoYXJhY3RlciBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIuAFRoZSBuZXcgcGFzc3dvcmQgbXVzdCBoYXZlIGF0IGxlYXN0ICcldScgY2hhcmFjdGVycyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIHBhc3N3b3JkLiBJdCBoYXMgb25seSAnJXUnIGNoYXJhY3RlcihzKSBkaWZmZXJlbnQuIEZvciB0aGlzIGNvbXBhcmlzb24sIHVwcGVyY2FzZSBsZXR0ZXJzIGFuZCBsb3dlcmNhc2UgbGV0dGVycyBhcmUgY29uc2lkZXJlZCB0byBiZSBlcXVhbC4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gJXMAUnVubmluZyByZWN1cnNpdmUgY2FsbHMgdG8gU1FMIGV4ZWN1dGlvbiBzZXJ2aWNlIGlzIG5vdCBzdXBwb3J0ZWQAJXMATGFuZ3VhZ2UgY29tcG9uZW50OiBOb3QgYXZhaWxhYmxlLgBMYW5ndWFnZSBjb21wb25lbnQ6IFVuc3VwcG9ydGVkIGxhbmd1YWdlICclcycATGFuZ3VhZ2UgY29tcG9uZW50OiBDYW5ub3QgdW5pbnN0YWxsIGR1ZSB0byBjb25uZWN0ZWQgc2Vzc2lvbnMuIFBsZWFzZSBkaXNjb25uZWN0IGFsbCBzZXNzaW9ucyBhbmQgdHJ5IGFnYWluLgBBbHRlcmluZyB0aGUgbGFuZ3VhZ2Ugb2YgYW4gZXhpc3Rpbmcgcm91dGluZSBpcyBub3QgcG9zc2libGUuAEVYUExBSU4gQU5BTFlaRSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBJTlRPIGNsYXVzZS4ARVhQTEFJTiBJTlRPIGRvZXMgbm90IHN1cHBvcnQgaW1wbGljaXQgRk9STUFULgBFWFBMQUlOIElOVE8gZG9lcyBub3Qgc3VwcG9ydCBGT1JNQVQ9JXMuAFRyeWluZyB0byBwZXJzaXN0IGEgTlVMTCBpbnRvIGEgdmFyaWFibGUgJyUtLjE5MnMnIHRoYXQncyBzZXR0YWJsZSBvbmx5IG9uIGNvbW1hbmQgbGluZSBpcyBub3Qgc3VwcG9ydGVkAEVYUExBSU4gRk9SIENPTk5FQ1RJT04gZG9lcyBub3Qgc3VwcG9ydCB0aGUgSU5UTyBjbGF1c2UuAEVudW0gZWxlbWVudCBuYW1lIGxlbmd0aCAlbHUsIGlzIGludmFsaWQgZm9yIGNvbHVtbiAlcwBOdW1iZXIgb2YgaW5kZXhlcyBpbiBtZXRhLWRhdGEgZmlsZSBpcyAwAE51bWJlciBvZiBpbmRleGVzIGluIG1ldGEtZGF0YSBmaWxlIGlzIHRvbyBoaWdoOiAlbGx1AEREIG1ldGFkYXRhIGZvciBJTlNUQU5UIERST1AgY29sdW1uICVzIGluIHRhcmdldCB0YWJsZSBkb2Vzbid0IG1hdGNoIHdpdGggQ0ZHLgBFbnVtL1NldCBlbGVtZW50IG5hbWUgbWlzc2luZyBudWxsIHRlcm1pbmF0b3IgZm9yIGNvbHVtbiAnJXMnACVzICVzICV6dS4AVGhlIHByaXZpbGVnZSAnJXMnIGlzIGRlcHJlY2F0ZWQuAEJ1bGsgTXVsdGkgUmVhZGVyOiBGYWlsZWQgdG8gb3BlbiBmaWxlAEJ1bGsgTXVsdGkgUmVhZGVyOiBGYWlsZWQgdG8gcmVhZCBmaWxlAEJ1bGsgTWVyZ2UgTG9hZGVyOiBJbnZhbGlkIENodW5rAEJ1bGsgTWVyZ2UgTG9hZGVyOiBOb3QgYWxsIGNodW5rcyBjb25zdW1lZABCdWxrIHdyaXRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgd3JpdGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIFNvcnRpbmcgTG9hZGVyOiBGYWlsZWQgdG8gd3JpdGUgZGF0YSB0byB0ZW1wb3JhcnkgZmlsZQBCdWxrIFNvcnRpbmcgTG9hZGVyOiBJbnRlcnJ1cHRlZCB3aGlsZSB3YWl0aW5nAEJ1bGsgUmVhZGVyOiBGYWlsZWQgdG8gYWNjZXNzIGZpbGUgJXMAQnVsayBMb2FkZXI6IFRhYmxlICclLS4xOTJzJyBoYXMgaW5zdGFudGx5IGFkZGVkL2Ryb3BwZWQgY29sdW1ucy4gUGxlYXNlIFRSVU5DQVRFIFRBQkxFIGFuZCByZXRyeS4AQnVsayBMb2FkZXI6IE5vdCBlbm91Z2ggbWVtb3J5IGF2YWlsYWJsZS4gTWVtb3J5IG5lZWRlZCBmb3IgbG9hZGluZyAlcyBkYXRhOiAlcyBmb3IgJXUgdGhyZWFkcywgJXMgd2l0aCBtaW5pbWFsIGNvbmZpZ3VyYXRpb24uIFRvdGFsIGNvbmZpZ3VyZWQgbWVtb3J5IGlzICVzLCBBdmFpbGFibGUgbWVtb3J5IGlzICVzLgBMT0FEIERBVEEgd2l0aCBCVUxLIEFsZ29yaXRobSBpcyBub3Qgc3VwcG9ydGVkIG9uIGEgdGFibGUgd2l0aCBzZWNvbmRhcnkgZW5naW5lLgBCdWxrIHJlYWRlciBlcnJvcjogJXMARmlsZSBub3QgZm91bmQsIGNoZWNrIHdoZXRoZXIgaXQgZXhpc3RzOiAlcwBDb3VsZG4ndCByZXNvbHZlIGhvc3Q6ICVzAENhbm5vdCBzdGFydCByZXBsaWNhdGlvbiBjaGFubmVsICclcycgYmVjYXVzZSAlcy4AJyVzJyBpcyBub3Qgc3VwcG9ydGVkACclcycgaXMgc3VwcG9ydGVkIHdpdGggbWF4aW11bSAlZCBlbGVtZW50cyBpbiB0aGUgR1JPVVAgQlkgbGlzdAAnJXMnIGZvciAnJXMnIHN0b3JhZ2UgZW5naW5lIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBRVUFMSUZZIGNsYXVzZSBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGEgd2luZG93IGZ1bmN0aW9uLgAnJXMnIGNhbiBiZSB1c2VkIG9ubHkgaWYgdGhlIGh5cGVyZ3JhcGggb3B0aW1pemVyIGlzIGVuYWJsZWQuAEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkICUtLjI1NnMgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlvbgBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gQVVUT01BVElDOjxUQUc+IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGIG9yIE9GRl9QRVJNSVNTSVZFAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIHNldCB0byBVVUlEOlRBRzpOVU1CRVIgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAENvbHVtbiAlZCBvZiAlcyA6IENvbHVtbiBjb250YWlucyBudWxsIGJ1dCBpdCBpcyBub3QgbnVsbGFibGUuAENvbHVtbiAlZCBvZiAlcyA6IENvbHVtbiBpcyBtaXNzaW5nLCBidXQgaXQgaXMgbm90IG51bGxhYmxlIGFuZCBubyBleHBsaWNpdCBkZWZhdWx0IHZhbHVlIGlzIHByb3ZpZGVkLgBDb2x1bW4gJWQgb2YgJXMgOiBDb2x1bW4gaXMgZW1wdHkuAENvbHVtbiAlZCBvZiAlcyA6IENvbHVtbiBpcyBlbXB0eSwgc2V0dGluZyBkZWZhdWx0IHZhbHVlLgBDb2x1bW4gJWQgb2YgJXMgOiBJbnZhbGlkICVzIHZhbHVlLgBDb2x1bW4gJWQgb2YgJXMgOiBVbmtub3duIGVycm9yIHdoaWxlIHBhcnNpbmcgZGVjaW1hbC4AQ29sdW1uICVkIG9mICVzIDogT3V0IG9mIG1lbW9yeSBsb2FkaW5nIGRlY2ltYWwuAENvbHVtbiAlZCBvZiAlcyA6IEZyYWN0aW9uIGV4Y2VlZHMgc2NoZW1hLCByb3VuZGluZyB2YWx1ZS4AQ29sdW1uICVkIG9mICVzIDogZGVjaW1hbCBwcmVjaXNpb24gZXhjZWVkcyBzY2hlbWEuAENvbHVtbiAlZCBvZiAlcyA6ICVzIGV4Y2VlZHMgbWluLgBDb2x1bW4gJWQgb2YgJXMgOiAlcyBleGNlZWRzIG1heC4AQ29sdW1uICVkIG9mICVzIDogJXMgZXhjZWVkcyBtaW4sIHNldHRpbmcgdG8gbWluIHZhbHVlIHBvc3NpYmxlLgBDb2x1bW4gJWQgb2YgJXMgOiAlcyBleGNlZWRzIG1heCwgc2V0dGluZyB0byBtYXggdmFsdWUgcG9zc2libGUuAENvbHVtbiAlZCBvZiAlcyA6IFJlYWwgdmFsdWUgaXMgTmFOLgBDb2x1bW4gJWQgb2YgJXMgOiAlcyB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2UuAENvbHVtbiAlZCBvZiAlcyA6IEVycm9yIHdoaWxlIGFwcGx5aW5nICVzIGZvcm1hdC4AQ29sdW1uICVkIG9mICVzIDogJXMgdmFsdWUgd2FzIHRydW5jYXRlZC4AQ29sdW1uICVkIG9mICVzIDogQ2Fubm90IGNvbnZlcnQgc3RyaW5nICVzLgBSZXNvdXJjZSBwcmluY2lwYWwgZXJyb3IuAEFXUyBhdXRoZW50aWNhdGlvbiBlcnJvci4AJXM6JWx1OiBQYXJzaW5nIGVycm9yIGZvdW5kLiAlcy4AJXM6IE1pc21hdGNoIGluIHRoZSBudW1iZXIgb2YgY29sdW1ucy4gRXhwZWN0ZWQgJXUsIGZvdW5kICV1LgAlczogTW9yZSB0aGFuICV1IGNvbHVtbihzKSBmb3VuZC4AQ29sdW1uICVkIGluICVzOiBDaGFyc2V0IGlzIG5vdCBzdXBwb3J0ZWQuAENvbHVtbiAlZCBpbiAlczogRGVjaW1hbCBjb252ZXJzaW9uIGVycm9yLgBDb2x1bW4gJWQgaW4gJXM6IFN0cmluZyBpcyB0b28gbG9uZy4AUmVzb3VyY2UgUHJpbmNpcGFsIGVuZHBvaW50IGlzIG5vdCBjb25maWd1cmVkLiBDYW5ub3QgYWNjZXNzIGZvbGxvd2luZyBidWNrZXRzOiAlcy4ATm8gZmlsZXMgZm91bmQgY29ycmVzcG9uZGluZyB0byB0aGUgZm9sbG93aW5nIGRhdGEgbG9jYXRpb25zOiAlcy4ARmlsZSAlcyBpcyBlbXB0eS4ARmlsZSAlcyB3YXMgbm90IHByb2Nlc3NlZCAoZHVwbGljYXRlKS4ARmlsZSAlczogQXZybyBzY2hlbWEgZGVwdGggZXhjZWVkcyBtYXggYWxsb3dlZCBkZXB0aC4ARmlsZSAlczogSGVhZGVyIGRvZXMgbm90IG1hdGNoIG90aGVyIGZpbGVzLgBGaWxlICVzOiBFbnVtIHN5bWJvbCBjYW4ndCBjb252ZXJ0IHRvIGNvbHVtbiBjaGFyc2V0LgBGaWxlICVzOiBFbnVtIHN5bWJvbHMgYXJlIG5vdCB0aGUgc2FtZSwgb3IgYXJlIG5vdCBpbiB0aGUgc2FtZSBvcmRlci4AQ29sdW1uICVkIGluICVzOiBBdnJvIHZhbHVlIG9mIHBoeXNpY2FsIHR5cGUgJS4qcyBsb2dpY2FsIHR5cGUgJS4qcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIG15c3FsIHR5cGUgJXMuAEZpbGUgJS4qczogRW5kcyB1bmV4cGVjdGVkbHkuAEZpbGUgJS4qczogRmlsZSBkYXRhIG1pZ2h0IGJlIGNvcnJ1cHQuAENvbHVtbiAlZCBpbiAlczogSW52YWxpZCB1bmlvbiBlbmNvdW50ZXJlZC4gVW5pb25zIGFyZSBvbmx5IHN1cHBvcnRlZCB0byByZXByZXNlbnQgbnVsbGFibGUgY29sdW1ucy4gT25lIG9mIHRoZSB0d28gdHlwZXMgb2YgdGhlIHVuaW9uIG11c3QgYmUgbnVsbC4ARmlsZSAlLipzOiBJbnZhbGlkIGF2cm8gYmxvY2sgc2l6ZS4ARmlsZSAlLipzOiBJbnZhbGlkIEF2cm8gYmxvY2sgcmVjb3JkIGNvdW50LgBGaWxlICUuKnM6IENhbm5vdCBsb2NhdGUgJXMgc3BlY2lmaWMgbWV0YWRhdGEuIEVpdGhlciB0aGUgZmlsZSBpcyBjb3JydXB0ZWQgb3IgdGhpcyBpcyBub3QgYW4gJXMgZmlsZS4ARmlsZSAlLipzOiBDb3VsZCBub3QgcHJvY2VzcyBBdnJvIGhlYWRlciBtZXRhZGF0YS4gVGhlIG1ldGFkYXRhIGlzIGNvcnJ1cHRlZCBvciBpbnZhbGlkLgBGaWxlICUuKnM6IE5vIHNjaGVtYSBpbiBBdnJvIGhlYWRlciBtZXRhZGF0YS4ARmlsZSAlLipzOiBObyBjb2RlYyBpbiBBdnJvIGhlYWRlciBtZXRhZGF0YS4ARmlsZSAlLipzOiBJbnZhbGlkIG5hbWUgaW4gQXZybyBzY2hlbWEuAEZpbGUgJS4qczogRXJyb3IgZGVjb2RpbmcgQXZybyAlLipzLiAlcwBDb2x1bW4gJWQgaW4gJXM6IFN0cmluZyB3aXRoIG5vbi11dGY4IGZpbGUgZW5jb2RpbmcuAERpZmZlcmVuY2UgaW4gc2NoZW1hIGFtb25nIFBhcnF1ZXQgZmlsZXMuAEZpbGUgJXM6IFNpemUgb2Ygcm93IGdyb3VwICVsZCBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgc2l6ZSAoJWQpLgBGaWxlICVzOiBDYW5ub3QgbG9jYXRlIG9mZnNldCBvZiByb3cgZ3JvdXAgJWxkIGluIG1ldGFkYXRhLgBDb2x1bW4gJWQgaW4gcGFycXVldCB0YWJsZSBjYW5ub3QgYmUgY29udmVydGVkIHRvIG15c3FsIGZvcm1hdC4AQ2Fubm90IGxvY2F0ZSBzY2hlbWEgaW4gJXMuAEZvdW5kIGZpbGVzIHdpdGggbWlzbWF0Y2hlZCBzY2hlbWFzLgBJbnN1ZmZpY2llbnQgbWVtb3J5LgBTa2lwcGVkICVsdSBsaW5lKHMpIGR1ZSB0byBtaXNtYXRjaGVkIG51bSBvZiBjb2xzLgBTa2lwcGVkICVsdSBmaWxlKHMpIGR1ZSB0byBtaXNtYXRjaGVkIG51bSBvZiBjb2xzLgBGaWxlICVzIGlzIHNraXBwZWQgYmVjYXVzZSBpdCBoYXMgbm8gdmFsaWQgZGF0YS4gRmlsZSBpcyBlaXRoZXIgZW1wdHkgb3IgYWxsIHJvd3MgYXJlIHNraXBwZWQuAE5vIHZhbGlkIGRhdGEgZm91bmQgZm9yIHByb2Nlc3NpbmcuAE5vIHZhbGlkIGZpbGVzIGZvdW5kIGZvciBwcm9jZXNzaW5nLgBVc2VkIGRlZmF1bHQgY29sdW1uIG5hbWVzIGZvciBjb2x1bW4gaW5kZXgocykgJXMgYXMgdGhleSBhcmUgJXMuAEZpbGUgJXM6IFVuYWJsZSB0byByZWFkIFBhcnF1ZXQgaGVhZGVyLgBHb3QgYW4gZXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBwcm9jZXNzIGZpbGUgdGFzay4ARmlsZSAlLipzOiBDb3VsZCBub3QgcGFyc2UgYXZybyBoZWFkZXIuIFByb2JhYmx5IGNvcnJ1cHRlZCBhdnJvIGZpbGUuAFBhcnF1ZXQgcmVhZGVyIGNhbm5vdCBvcGVuICVzLiAlcwBGaWxlICUuKnM6ICVzAEZpbGUgJS4qczogJXMAVGFibGVzYW1wbGUgcGVyY2VudGFnZSBzaG91bGQgcmFuZ2UgYmV0d2VlbiAwIGFuZCAxMDAuAFRhYmxlc2FtcGxlIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gYmFzZSB0YWJsZXMuAFBhcmFtZXRlciBpbmRleCAlbGx1IGlzIG91dCBvZiByYW5nZQBSZXN1bHQgc2l6ZSBsaW1pdCBleGNlZWRlZC4ATGFuZ3VhZ2UgY29tcG9uZW50OiBJbnRlcm5hbCBlcnJvci4ATGFuZ3VhZ2UgY29tcG9uZW50OiBDb25jdXJyZW5jeSBsaW1pdCAoJXMpIGhhcyBiZWVuIHJlYWNoZWQuACVzPiAlcwAlcz4gVGltZSB6b25lICVzIGlzIG5vdCBzdXBwb3J0ZWQuACVzPiBUaGUgaWRlbnRpZmllciAnJXMnIGlzIGEgcmVzZXJ2ZWQgd29yZC4ATGFuZ3VhZ2UgY29tcG9uZW50OiBTeXN0ZW0gdmFyaWFibGUgJyVzJyBjYW5ub3QgYmUgY29uZmlndXJlZCB3aGVuIGNvbXBvbmVudCBpcyBhY3RpdmUuACVzPiAlcwAlcz4gJXMAU3RvcmVkIHByb2dyYW0gc3RhdGVtZW50IGlzIHBhcnRpYWxseSBjb21wbGV0ZWQuIFJlc3VsdCBzZXQgbWlnaHQgbm90IGNvbnRhaW4gYWxsIHRoZSByb3dzLgBFeGVjdXRpbmcgU1FMIHN0YXRlbWVudCB1c2luZyAlcyBTdGF0ZW1lbnQgSGFuZGxlIEludGVyZmFjZSBpcyBub3QgYWxsb3dlZCB3aXRoaW4gc3RvcmVkIGZ1bmN0aW9uLCB0cmlnZ2VyIG9yIGxvYWRhYmxlIGZ1bmN0aW9uIChVREYpLgBDb2x1bW4gJWQgb2YgJXMgOiAlcwBFbmdpbmUgJXMgY2Fubm90IGJlIHNldCBhcyBkZWZhdWx0X3N0b3JhZ2VfZW5naW5lLgBDb2x1bW4gJyUuNjRzLiUuNjRzLiUuNjRzJyBoYXZpbmcgcHJlZml4IGtleSBwYXJ0ICclLjY0cygldSknIGluIHRoZSBQQVJUSVRJT04gQlkgS0VZKCkgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQuAEZvcmVpZ24ga2V5ICclLjY0cycgcmVmZXJzIHRvIG5vbi11bmlxdWUga2V5IG9yIHBhcnRpYWwga2V5LiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIHVuaXF1ZSBrZXkgZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycsIG1pc3NpbmcgcHJveHkgcHJpdmlsZWdlLgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLCBwcm94aWVkIHVzZXIgZG9lc24ndCBleGlzdC4AVW5hYmxlIHRvIGFjY2VzcyB0aGUgZm9sbG93aW5nIGRhdGEgbG9jYXRpb25zOiAlcwBaU1REIGRlY29tcHJlc3Npb24gZmFpbGVkOiAlcwAlcwBJbnZhbGlkIGpzb24gZmlsZSBmb3JtYXQgc2NoZW1hOiAlcwBJbmZlcnJlZCBpbnZhbGlkIHNjaGVtYS4gQSBzaW5nbGUgY29sdW1uIHdpdGggSlNPTiB0eXBlIGlzIHRoZSBvbmx5IHZhbGlkIHNjaGVtYSBmb3IgSlNPTiBmaWxlIGZvcm1hdC4AQWx0ZXJlZCB0aGUgaW5mZXJyZWQgc2NoZW1hIHRvIGEgc2luZ2xlIEpTT04gY29sdW1uLgBOb24tc2NhbGFyIChlLmcuLCB2ZWN0b3IpIGNvbHVtbiAnJS42NHMnIGNhbm5vdCBiZSB1c2VkIGFzIGtleS4AQ29sdW1ucyBhZ2dyZWdhdGVkIHdpdGggaW5jb21wYXRpYmxlIHR5cGVzOiAnJS42NHMnLCAnJS42NHMnLgBWYWx1ZSBvZiB0eXBlICclLjE2cywgc2l6ZTogJXp1JyBjYW5ub3QgYmUgY29udmVydGVkIHRvICd2ZWN0b3InIHR5cGUuAERhdGEgc2l6ZSAoJXp1IEJ5dGVzLCAldSBkaW1lbnNpb25zKSBleGNlZWRzIFZFQ1RPUiBtYXggKCV6dSBCeXRlcywgJXUgZGltZW5zaW9ucykgZm9yIGNvbHVtbjogJyUuNjRzJwBEYXRhIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSB2YWxpZCB2ZWN0b3I6ICclLipzJwBUaGlzIHN0b3JhZ2UgZW5naW5lIGlnbm9yZXMgdGhlICVzIGluZGV4IGFsZ29yaXRobS4AVGhlIHZhcmlhYmxlIHRocmVhZF9wb29sX21heF90cmFuc2FjdGlvbnNfbGltaXQgY2Fubm90IGJlIHNldCB0byAwIHdoZW4gdGhyZWFkX3Bvb2xfZGVkaWNhdGVkX2xpc3Rlcm5lcyBpcyBPTi4AQ2FuJ3QgZXhlY3V0ZSB0aGUgcXVlcnkgYmVjYXVzZSB5b3UgaGF2ZSBhIGNvbmZsaWN0aW5nIGJhY2t1cCBsb2NrAENvbXByZXNzZWQgY29sdW1uICclLS4xOTJzJyBpcyBub3QgYWxsb3dlZCBpbiB0aGUga2V5IGxpc3QAQ2FuIG5vdCBkZWZpbmUgY29sdW1uICclLS4xOTJzJyBpbiBjb21wcmVzc2VkIGZvcm1hdABDb21wcmVzc2lvbiBkaWN0aW9uYXJ5ICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cwBDb21wcmVzc2lvbiBkaWN0aW9uYXJ5ICclLS4xOTJzJyBkb2VzIG5vdCBleGlzdABDb21wcmVzc2lvbiBkaWN0aW9uYXJ5IG5hbWUgJyUtLjE5MnMnIGlzIHRvbyBsb25nIChtYXggbGVuZ3RoID0gJWx1KQBEYXRhIGZvciBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5ICclLS4xOTJzJyBpcyB0b28gbG9uZyAobWF4IGxlbmd0aCA9ICVsdSkAQ29tcHJlc3Npb24gZGljdGlvbmFyeSAnJS0uMTkycycgaXMgaW4gdXNlAFJlZG8gbG9nIGVuY3J5cHRpb24gbW9kZSBjYW4ndCBiZSBzd2l0Y2hlZCB3aXRob3V0IHN0b3BwaW5nIHRoZSBzZXJ2ZXIgYW5kIHJlY3JlYXRpbmcgdGhlIHJlZG8gbG9ncy4gQ3VycmVudCBtb2RlIGlzICVzLCByZXF1ZXN0ZWQgJXMuAFJlZG8gbG9nIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIGxvYWQgcmVkbyBrZXkgdmVyc2lvbiAldQBDb3VsZG4ndCBmZXRjaCBuZXdseSBnZW5lcmF0ZWQgcmVkbyBrZXkuAENvdWxkbid0IHBhcnNlIHN5c3RlbSBrZXk6ICVzAFJlZG8gbG9nIGNhbm5vdCBiZSBlbmNyeXB0ZWQgaWYgdGhlIGtleXJpbmcgaXMgbm90IGxvYWRlZC4AVW5kbyBsb2cgY2FuJ3QgYmUgZW5jcnlwdGVkIGlmIHRoZSBrZXlyaW5nIGlzIG5vdCBsb2FkZWQuAFRhYmxlICVzIGlzIGVuY3J5cHRlZCBidXQgZGVjcnlwdGlvbiBmYWlsZWQuIFNlZW1zIHRoYXQgdGhlIGVuY3J5cHRpb24ga2V5IGZldGNoZWQgZnJvbSBrZXlyaW5nIGlzIG5vdCB0aGUgY29ycmVjdCBvbmUuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3Qga2V5cmluZz8AVGFibGVzcGFjZSAlcyBpcyBmdWxseSBvciBwYXJ0aWFsbHkgZW5jcnlwdGVkIGJ5IGVuY3J5cHRpb24gdGhyZWFkcyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhjbHVkZWQgZnJvbSBlbmNyeXB0aW9uIHRocmVhZHMuIFBsZWFzZSBmaXJzdCBmaW5pc2ggb2ZmIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBhbmQgdHJ5IGFnYWluLgBUYWJsZXNwYWNlICVzIGlzIGVuY3J5cHRlZCBieSBlbmNyeXB0aW9uIHRocmVhZHMgYW5kIGNhbm5vdCBiZSBleHBsaWNpdGx5IGRlY3J5cHRlZC4gUGxlYXNlIHVzZSBkZWZhdWx0LXRhYmxlLWVuY3J5cHRpb249T05MSU5FX0ZST01fS0VZUklOR19UT19VTkVOQ1JZUFRFRCB0byBkZWN5cHQgdGhlIHRhYmxlc3BhY2UuAFRhYmxlc3BhY2UgJXMgaXMgZW5jcnlwdGVkIGJ5IGVuY3J5cHRpb24gdGhyZWFkcyBhbmQgY2Fubm90IGJlIEFMVEVSZWQgdG8gTWFzdGVyIEtleSBlbmNyeXB0aW9uLiBJbiBvcmRlciB0byBlbmNyeXB0IHRoaXMgdGFibGVzcGFjZSB3aXRoIE1hc3RlciBLZXkgZW5jcnlwdGlvbiwgZmlyc3QgZGVjcnlwdCB0aGlzIHRhYmxlc3BhY2Ugd2l0aCBlbmNyeXB0aW9uIHRocmVhZHMuAERhdGFiYXNlIGRlZmF1bHQgZW5jcnlwdGlvbiBjYW5ub3QgYmUgc2V0IHRvIFkgKE1hc3RlciBLZXkgZW5jcnlwdGlvbikgd2hpbGUgZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uIGlzIHNldCB0byBPTkxJTkVfVE9fS0VZUklORy4gSXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjcmVhdGUgbmV3IE1hc3RlciBLZXkgZW5jcnlwdGVkIHRhYmxlcyBpZiB0aGUgaW50ZW50aW9uIGlzIHRvIHJlLWVuY3J5cHQgdGhlbSB0byBLRVlSSU5HIGVuY3J5cHRpb24uAERhdGFiYXNlIGRlZmF1bHQgZW5jcnlwdGlvbiBjYW5ub3QgYmUgc2V0IHRvIE4gKGV4cGxpY2l0bHkgcmVxdWVzdCBmb3IgdGFibGVzIGluIGRhdGFiYXNlIHRvIGJlIHVuZW5jcnlwdGVkKSB3aGlsZSBkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24gaXMgc2V0IHRvIE9OTElORV9UT19LRVlSSU5HLiBJZiB5b3Ugd2FudCB0byBleGNsdWRlIHRhYmxlIGZyb20gYmVpbmcgZW5jcnlwdGVkIGJ5IGVuY3J5cHRpb24gdGhyZWFkcyB5b3UgY2FuIHN0aWxsIGRvIGl0IHdoaWxlIGNyZWF0aW5nIHRhYmxlLiBGb3IgdGhhdCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNwZWNpZnkgRU5DUllQVElPTj0nTicgd2hpbGUgY3JlYXRpbmcgYSB0YWJsZS4AVGFibGVzcGFjZSAlcyBjYW5ub3QgaGF2ZSBpdHMgRU5DUllQVElPTiBhbHRlcmVkIGFzIGl0IGlzIGJlaW5nIGN1cnJlbnRseSBlbmNyeXB0ZWQvZGVjcnlwdGVkIGJ5IGVuY3J5cHRpb24gdGhyZWFkcy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4ARW5jcnlwdGlvbiBvcHRpb24gaXMgbm90IGFsbG93ZWQuICVzAFRoZSBudW1iZXIgb2YgcmVjb3JkcyBnZW5lcmF0ZWQgYnkgUEVSQ09OQV9TRVFVRU5DRV9UQUJMRSgpIGNhbm5vdCBleGNlZWQgJWxsdSAoJWxsdSByZXF1ZXN0ZWQpLiBUcnkgaW5jcmVhc2luZyBAQHRmX3NlcXVlbmNlX3RhYmxlX21heF91cHBlcl9ib3VuZCB0byBhIGxhcmdlciB2YWx1ZS4ASW5ub0RCIHN5c3RlbSBrZXkgJWx1IGNhbm5vdCBiZSByb3RhdGVkLCBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0LgBJbm5vREIgc3lzdGVtIGtleSBjYW5ub3QgaGF2ZSB2YWx1ZSBncmVhdGVyIHRoYW4gNDI5NDk2NzI5NC4AQ2Fubm90IGdlbmVyYXRlIG5ldyB2ZXJzaW9uIG9mIHN5c3RlbSBrZXkgJWx1LiBLZXlyaW5nIHJlcG9ydGVkIGFuIGVycm9yLiBQbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBhdmFpbGFibGUuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJWx1IGZvciB0aGUgZW5jcnlwdGlvbl9rZXlfaWQgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICVsdQBXcmFwcGVkIFVERiBleGNlcHRpb24gaW4gZnVuY3Rpb24gJyUtLjE5MnMnOyAlLS44MHMATXVsdGkgdGFibGUgZHJvcCBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gJyVzJyBvcHRpb24gaXMgZW5hYmxlZABUaGUgbnVtYmVyIG9mIHByb3ZpZGVkIGVycm9yIGNvZGVzIGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZCAlbHUAUHJvdmlkZWQgZXJyb3IgY29kZSBpcyBiaWdnZXIgdGhhbiBtYXhpbXVtIGFsbG93ZWQgJWx1AFRoZSByb2xlICVzIGlzIGEgZHluYW1pYyByb2xlIGFuZCBjYW4ndCBiZSByZXZva2VkIG9yIGRyb3BwZWQuIEl0IHNob3VsZCBiZSBtYW5hZ2VkIGJ5IHRoZSBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaW5zdGVhZC4AVGhlIC0tc2VjdXJlLWZpbGUtcGF0aCBpcyBjb25maWd1cmVkLCAlcyBtdXN0IGJlIHNldCBhY2NvcmRpbmdseS4AS2V5cyBhcmUgb3V0IG9yZGVyIGR1cmluZyBidWxrIGxvYWQAQnVsayBsb2FkIHJvd3Mgb3ZlcmxhcCBleGlzdGluZyByb3dzAENhbid0IGV4ZWN1dGUgdXBkYXRlcyBvbiBtYXN0ZXIgd2l0aCBiaW5sb2dfZm9ybWF0ICE9IFJPVy4ATXlSb2NrcyBzdXBwb3J0cyBvbmx5IFJFQUQgQ09NTUlUVEVEIGFuZCBSRVBFQVRBQkxFIFJFQUQgaXNvbGF0aW9uIGxldmVscy4gUGxlYXNlIGNoYW5nZSBmcm9tIGN1cnJlbnQgaXNvbGF0aW9uIGxldmVsICVzAFdoZW4gdW5pcXVlIGNoZWNraW5nIGlzIGRpc2FibGVkIGluIE15Um9ja3MsIElOU0VSVCxVUERBVEUsTE9BRCBzdGF0ZW1lbnRzIHdpdGggY2xhdXNlcyB0aGF0IHVwZGF0ZSBvciByZXBsYWNlIHRoZSBrZXkgKGkuZS4gSU5TRVJUIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFLCBSRVBMQUNFKSBhcmUgbm90IGFsbG93ZWQuIFF1ZXJ5OiAlcwBDYW4ndCBleGVjdXRlIHVwZGF0ZXMgd2hlbiB5b3Ugc3RhcnRlZCBhIHRyYW5zYWN0aW9uIHdpdGggU1RBUlQgVFJBTlNBQ1RJT04gV0lUSCBDT05TSVNURU5UIFtST0NLU0RCXSBTTkFQU0hPVC4AVGhpcyB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJhY2sgYW5kIGNhbm5vdCBiZSBjb21taXR0ZWQuIE9ubHkgc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyB0byByb2xsIGl0IGJhY2ssIHNvIGFsbCBwZW5kaW5nIGNoYW5nZXMgd2lsbCBiZSBkaXNjYXJkZWQuIFBsZWFzZSByZXN0YXJ0IGFub3RoZXIgdHJhbnNhY3Rpb24uAE15Um9ja3MgY3VycmVudGx5IGRvZXMgbm90IHN1cHBvcnQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGlmIG1vZGlmeWluZyByb3dzLgBPbmx5IFJFUEVBVEFCTEUgUkVBRCBpc29sYXRpb24gbGV2ZWwgaXMgc3VwcG9ydGVkIGZvciBTVEFSVCBUUkFOU0FDVElPTiBXSVRIIENPTlNJU1RFTlQgU05BUFNIT1QgaW4gUm9ja3NEQiBTdG9yYWdlIEVuZ2luZS4AVW5zdXBwb3J0ZWQgY29sbGF0aW9uIG9uIHN0cmluZyBpbmRleGVkIGNvbHVtbiAlcy4lcyBVc2UgYmluYXJ5IGNvbGxhdGlvbiAoJXMpLgBUYWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0LCBidXQgbWV0YWRhdGEgaW5mb3JtYXRpb24gZXhpc3RzIGluc2lkZSBNeVJvY2tzLiBUaGlzIGlzIGEgc2lnbiBvZiBkYXRhIGluY29uc2lzdGVuY3kuAE15Um9ja3MgZmFpbGVkIGNyZWF0aW5nIG5ldyBrZXkgZGVmaW5pdGlvbnMgZHVyaW5nIGFsdGVyLgBNeVJvY2tzIGZhaWxlZCBwb3B1bGF0aW5nIHNlY29uZGFyeSBrZXkgZHVyaW5nIGFsdGVyLgBDb2x1bW4gZmFtaWx5ICgnJS4qcycpIGZsYWcgKCVkKSBpcyBkaWZmZXJlbnQgZnJvbSBhbiBleGlzdGluZyBmbGFnICglZCkuIEFzc2lnbiBhIG5ldyBDRiBmbGFnLCBvciBkbyBub3QgY2hhbmdlIGV4aXN0aW5nIENGIGZsYWcuAFRUTCBzdXBwb3J0IGlzIGN1cnJlbnRseSBkaXNhYmxlZCB3aGVuIHRhYmxlIGhhcyBhIGhpZGRlbiBQSy4AVFRMIGNvbHVtbiAoJXMpIGluIE15Um9ja3MgbXVzdCBiZSBhbiB1bnNpZ25lZCBub24tbnVsbCA2NC1iaXQgaW50ZWdlciBvciBub24tbnVsbCB0aW1lc3RhbXAsIGV4aXN0IGluc2lkZSB0aGUgdGFibGUsIGFuZCBoYXZlIGFuIGFjY29tcGFueWluZyB0dGwgZHVyYXRpb24uAFRUTCBkdXJhdGlvbiAoJXMpIGluIE15Um9ja3MgbXVzdCBiZSBhbiB1bnNpZ25lZCBub24tbnVsbCA2NC1iaXQgaW50ZWdlci4AVGhlIHBlci1pbmRleCBjb2x1bW4gZmFtaWx5IG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkLgBDb2x1bW4gZmFtaWx5ICgnJXMnKSBpcyBiZWluZyBkcm9wcGVkLgBDYW5ub3QgZHJvcCBDb2x1bW4gZmFtaWx5ICgnJXMnKSBiZWNhdXNlIGl0IGlzIGluIHVzZSBvciBkb2VzIG5vdCBleGlzdC4AUGFyc2VyIHNhdzogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgYm9vdHN0cmFwIChlcnJubzogJWQpAFRyaWdnZXIgZm9yIHRhYmxlICclcycuJyVzJzogaW52YWxpZCAlcyB2YWx1ZSAoJXMpLgBXcm9uZyB0cmVlOiAlcwBFcnJvcjogSW52YWxpZCAlcwBTa2lwIHJlLXBvcHVsYXRpbmcgY29sbGF0aW9ucyBhbmQgY2hhcmFjdGVyIHNldHMgdGFibGVzIGluICVzJXNyZWFkLW9ubHkgbW9kZS4AVXNpbmcgZGF0YSBkaWN0aW9uYXJ5IHdpdGggdmVyc2lvbiAnJWQnLgBJbnN0YWxsZWQgZGF0YSBkaWN0aW9uYXJ5IHdpdGggdmVyc2lvbiAlZABEYXRhIERpY3Rpb25hcnkgdmVyc2lvbiAnJWQnIG5vdCBzdXBwb3J0ZWQuAEZhaWxlZCB0byBzZXQgc3lzbG9nIGZhY2lsaXR5IHRvICIlcyIsIHNldHRpbmcgdG8gIiVzIiAoJWQpIGluc3RlYWQuAENhbm5vdCBvcGVuICVzOyBjaGVjayBwcml2aWxlZ2VzLCBvciByZW1vdmUgc3lzZXZlbnRsb2cgZnJvbSAtLWxvZy1lcnJvci1zZXJ2aWNlcyEAIGVpdGhlciByZXN0YXJ0IHRoZSBxdWVyeSBsb2dnaW5nIGJ5IHVzaW5nICJTRVQgR0xPQkFMIFNMT1dfUVVFUllfTE9HPU9OIiBvcgAgZWl0aGVyIHJlc3RhcnQgdGhlIHF1ZXJ5IGxvZ2dpbmcgYnkgdXNpbmcgIlNFVCBHTE9CQUwgR0VORVJBTF9MT0c9T04iIG9yAEZhaWxlZCB0byB3cml0ZSB0byAlczogJXMAV2hpbGUgaW5pdGlhbGl6aW5nIGR1bXAgdGhyZWFkIGZvciByZXBsaWNhIHdpdGggJXMgPCVzPiwgZm91bmQgYSB6b21iaWUgZHVtcCB0aHJlYWQgd2l0aCB0aGUgc2FtZSAlcy4gU291cmNlIGlzIGtpbGxpbmcgdGhlIHpvbWJpZSBkdW1wIHRocmVhZCgldSkuAEd0aWQgdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIG9wZW5lZC4AU3lzdGVtIHNjaGVtYSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuAEVycm9yIGluIGluaXRpYWxpemluZyBkaWN0aW9uYXJ5LCB1cGdyYWRlIHdpbGwgZG8gYSBjbGVhbnVwIGFuZCBleGl0AFZpZXcgJyVzJy4nJXMnOiB1bmtub3duIGNoYXJzZXQgbmFtZSBhbmQvb3IgY29sbGF0aW9uIG5hbWUgKGNsaWVudDogJyVzJzsgY29ubmVjdGlvbjogJyVzJykuAEVycm9yIGluIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBjaGFyYWN0ZXIgc2V0IG5hbWUgZm9yIHZpZXcgJXMuJXMuAERhdGEgRGljdGlvbmFyeSBpbml0aWFsaXphdGlvbiBmYWlsZWQuAEZhaWxlZCB0byB1cGRhdGUgcGx1Z2luIG1ldGFkYXRhIGluIGRpY3Rpb25hcnkgdGFibGVzLgBGYWlsZWQgdG8gUG9wdWxhdGUgREQgdGFibGVzLgBFcnJvciBpbiBDcmVhdGluZyBWaWV3ICVzLiVzAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIENhbm5vdCBmaW5kIHRoZSBtZXRhIGRhdGEgZm9yIGRhdGEgZGljdGlvbmFyeSB0YWJsZSAnJXMnLgBEaWN0aW9uYXJ5IGNhY2hlIG5vdCBlbXB0eSBhdCBzaHV0ZG93bi4ARGljdGlvbmFyeSBvYmplY3RzIHVzZWQgYnV0IG5vdCByZWxlYXNlZC4ARGljdGlvbmFyeSBvYmplY3RzIGxlZnQgaW4gZGVmYXVsdCByZWxlYXNlci4ARGljdGlvbmFyeSBvYmplY3QgYXV0byByZWxlYXNlciBub3QgZGVsZXRlZABFcnJvcjogVW5hYmxlIHRvIGNyZWF0ZSBwcmltYXJ5IG9iamVjdCBrZXkARXJyb3I6IFVuYWJsZSB0byBjcmVhdGUgb2JqZWN0IGtleQBDYW4ndCBjcmVhdGUgaGFuZGxlX21hbmFnZXIgdGhyZWFkIChlcnJubz0gJWQpAEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHJlbGF5IGxvZydzIHJlcG9zaXRvcnkgYmVjYXVzZSB0aGVyZSBhcmUgd29ya2VycycgcmVwb3NpdG9yaWVzIHdpdGggZ2Fwcy4gUGxlYXNlLCBmaXggdGhlIGdhcHMgZmlyc3QgYmVmb3JlIGRvaW5nIHN1Y2ggY2hhbmdlLgBvcHRpb24gJ2VuZm9yY2UtZ3RpZC1jb25zaXN0ZW5jeSc6IHZhbHVlICclcycgd2FzIG5vdCByZWNvZ25pemVkLiBTZXR0aW5nIGVuZm9yY2UtZ3RpZC1jb25zaXN0ZW5jeSB0byBPRkYuAENoYW5nZWQgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZIGZyb20gJXMgdG8gJXMuAENoYW5nZWQgR1RJRF9NT0RFIGZyb20gJXMgdG8gJXMuACVzIGlzIHNldCB0byBhIGRpc2FibGVkIHN0b3JhZ2UgZW5naW5lICVzLgBEZWJ1ZyBzeW5jIHBvaW50cyBoaXQ6ICAgICAgICAgICAgICAgICAgICUyMnMARGVidWcgc3luYyBwb2ludHMgZXhlY3V0ZWQ6ICAgICAgICAgICAgICAlMjJzAERlYnVnIHN5bmMgcG9pbnRzIG1heCBhY3RpdmUgcGVyIHRocmVhZDogJTIycwBEZWJ1ZyBTeW5jIEZhY2lsaXR5IGRpc2FibGVkIGR1ZSB0byBsYWNrIG9mIG1lbW9yeS4AQ2FuJ3QgaW5pdCB0YyBsb2cARXZlbnQgU2NoZWR1bGVyOiBDYW4ndCBpbml0aWFsaXplIHRoZSBleGVjdXRpb24gcXVldWUARXZlbnQgU2NoZWR1bGVyOiBQdXJnaW5nIHRoZSBxdWV1ZS4gJXUgZXZlbnRzAEV2ZW50IFNjaGVkdWxlcjogTGFzdCBleGVjdXRpb24gb2YgJXMuJXMuICVzACUqcwBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBldmVudCBleGVjdXRpb24gZmFpbGVkLgBFdmVudCBTY2hlZHVsZXI6IENhbm5vdCBpbml0aWFsaXplIHRoZSBzY2hlZHVsZXIgdGhyZWFkAEV2ZW50IFNjaGVkdWxlcjogU3RvcHBlZABFdmVudCBzY2hlZHVsZXI6IEZhaWxlZCB0byBzdGFydCBzY2hlZHVsZXIsIENhbiBub3QgY3JlYXRlIHRocmVhZCBmb3IgZXZlbnQgc2NoZWR1bGVyIChlcnJubz0lZCkARXZlbnQgU2NoZWR1bGVyOiBXYWl0aW5nIGZvciB0aGUgc2NoZWR1bGVyIHRocmVhZCB0byByZXBseQBFdmVudCBTY2hlZHVsZXI6IHNjaGVkdWxlciB0aHJlYWQgc3RhcnRlZCB3aXRoIGlkICV1AEV2ZW50IFNjaGVkdWxlcjogU2VyaW91cyBlcnJvciBkdXJpbmcgZ2V0dGluZyBuZXh0IGV2ZW50IHRvIGV4ZWN1dGUuIFN0b3BwaW5nAEV2ZW50X3NjaGVkdWxlcjo6ZXhlY3V0ZV90b3A6IENhbiBub3QgY3JlYXRlIGV2ZW50IHdvcmtlciB0aHJlYWQgKGVycm5vPSVkKS4gU3RvcHBpbmcgZXZlbnQgc2NoZWR1bGVyAEV2ZW50IFNjaGVkdWxlcjogS2lsbGluZyB0aGUgc2NoZWR1bGVyIHRocmVhZCwgdGhyZWFkIGlkICV1AElQIGFkZHJlc3MgJyVzJyBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICVzAEhvc3QgbmFtZSAnJXMnIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJXMASVAgYWRkcmVzcyAnJXMnIGhhcyBiZWVuIHJlc29sdmVkIHRvIHRoZSBob3N0IG5hbWUgJyVzJywgd2hpY2ggcmVzZW1ibGVzIElQdjQtYWRkcmVzcyBpdHNlbGYuAEhvc3RuYW1lICclcycgZG9lcyBub3QgcmVzb2x2ZSB0byAnJXMnLgBIb3N0bmFtZSAnJXMnIGhhcyB0aGUgZm9sbG93aW5nIElQIGFkZHJlc3NlczoAIC0gJXMARGVmaW5lciBjbGF1c2UgaXMgbWlzc2luZyBpbiBUcmlnZ2VyIG9mIFRhYmxlICVzLiBSZWJ1aWxkIFRyaWdnZXIgdG8gZml4IGRlZmluZXIuAENsaWVudCBjaGFyYWN0ZXIgc2V0IGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4ARXJyb3IgaW4gcGFyc2luZyB2aWV3ICVzLiVzAEZhaWxlZCB0byBib290c3RyYXAgY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIHNodXRkb3duIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAEZhaWxlZCB0byBib290c3RyYXAgcGVyc2lzdGVudCBjb21wb25lbnRzIGxvYWRlci4AR2l2aW5nICVkIGNsaWVudCB0aHJlYWRzIGEgY2hhbmNlIHRvIGRpZSBncmFjZWZ1bGx5AENBIGNlcnRpZmljYXRlICVzIGlzIHNlbGYgc2lnbmVkLgBGYWlsZWQgdG8gc2V0IHVwIFNTTCBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgU1NMIGxpYnJhcnkgZXJyb3I6ICVzAEZhaWxlZCB0byBnZW5lcmF0ZSBhIHNlcnZlciBVVUlEIGJlY2F1c2UgaXQgaXMgZmFpbGVkIHRvIGFsbG9jYXRlIHRoZSBUSEQuAFNhbHRpbmcgdXVpZCBnZW5lcmF0b3IgdmFyaWFibGVzLCBjdXJyZW50X3BpZDogJWx1LCBzZXJ2ZXJfc3RhcnRfdGltZTogJWx1LCBieXRlc19zZW50OiAlbGx1LCAAR2VuZXJhdGVkIHV1aWQ6ICclcycsIHNlcnZlcl9zdGFydF90aW1lOiAlbHUsIGJ5dGVzX3NlbnQ6ICVsbHUAVGhlIHNlcnZlcl91dWlkIHN0b3JlZCBpbiBhdXRvLmNuZiBmaWxlIGlzIG5vdCBhIHZhbGlkIFVVSUQuAEdhcmJhZ2UgY2hhcmFjdGVycyBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBzZXJ2ZXJfdXVpZCB2YWx1ZSBpbiBhdXRvLmNuZiBmaWxlLiBJdCBzaG91bGQgYmUgb2YgbGVuZ3RoICclZCcgKFVVSURfTEVOR1RIKS4gQ2xlYXIgaXQgYW5kIHJlc3RhcnQgdGhlIHNlcnZlci4gAE5vIGV4aXN0aW5nIFVVSUQgaGFzIGJlZW4gZm91bmQsIHNvIHdlIGFzc3VtZSB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhhdCB0aGlzIHNlcnZlciBoYXMgYmVlbiBzdGFydGVkLiBHZW5lcmF0aW5nIGEgbmV3IFVVSUQ6ICVzLgBJbml0aWFsaXphdGlvbiBvZiB0aGUgc2VydmVyJ3MgVVVJRCBmYWlsZWQgYmVjYXVzZSBpdCBjb3VsZCBub3QgYmUgcmVhZCBmcm9tIHRoZSBhdXRvLmNuZiBmaWxlLiBJZiB0aGlzIGlzIGEgbmV3IHNlcnZlciwgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZCBiZWNhdXNlIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZ2VuZXJhdGUgYSBuZXcgVVVJRC4AVW5rbm93bi91bnN1cHBvcnRlZCBzdG9yYWdlIGVuZ2luZTogJXMAVW5zdXBwb3J0ZWQgdmFsdWUgMCBmb3Igc2VjdXJlLWF1dGgASW52YWxpZCBpbnN0cnVtZW50IG5hbWUgb3IgdmFsdWUgZm9yIHBlcmZvcm1hbmNlX3NjaGVtYV9pbnN0cnVtZW50ICclcycuAFRoZSB1c2Ugb2YgSW5ub0RCIGlzIG1hbmRhdG9yeSBzaW5jZSBNeVNRTCA1LjcuIFRoZSBmb3JtZXIgb3B0aW9ucyBsaWtlICctLWlubm9kYj0wLzEvT0ZGL09OJyBvciAnLS1za2lwLWlubm9kYicgYXJlIGlnbm9yZWQuAGlnbm9yZS1idWlsdGluLWlubm9kYiBpcyBpZ25vcmVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLgBJbnZhbGlkIG9sZF9wYXNzd29yZHMgbW9kZTogMS4gVmFsaWQgdmFsdWVzIGFyZSAyIGFuZCAwAC0tdmVyYm9zZSBpcyBmb3IgdXNlIHdpdGggLS1oZWxwOyBkaWQgeW91IG1lYW4gLS1sb2ctZXJyb3ItdmVyYm9zaXR5PwBvcHRpb25zIC0tbG9nLXNsb3ctYWRtaW4tc3RhdGVtZW50cywgLS1sb2ctcXVlcmllcy1ub3QtdXNpbmctaW5kZXhlcywgLS1sb2ctc2xvdy1yZXBsaWNhLXN0YXRlbWVudHMgYW5kIC0tbG9nLXF1ZXJ5LWVycm9ycyBoYXZlIG5vIGVmZmVjdCBpZiAtLXNsb3ctcXVlcnktbG9nIGlzIG5vdCBzZXQAbmV0X2J1ZmZlcl9sZW5ndGggKCVsdSkgaXMgc2V0IHRvIGJlIGxhcmdlciB0aGFuIG1heF9hbGxvd2VkX3BhY2tldCAoJWx1KS4gUGxlYXNlIHJlY3RpZnkuAFRJTUVTVEFNUCB3aXRoIGltcGxpY2l0IERFRkFVTFQgdmFsdWUgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAtLWV4cGxpY2l0X2RlZmF1bHRzX2Zvcl90aW1lc3RhbXAgc2VydmVyIG9wdGlvbiAoc2VlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscykuAEludmFsaWQgZnQtYm9vbGVhbi1zeW50YXggc3RyaW5nOiAlcwAnTk9fQVVUT19DUkVBVEVfVVNFUicgc3FsIG1vZGUgd2FzIG5vdCBzZXQuAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbm5lY3Rpb24gaGFuZGxpbmcAQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhyZWFkIGhhbmRsaW5nAENhbid0IGNyZWF0ZSB0ZXN0IGZpbGUgJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW4ndCBjcmVhdGUgUElEIGZpbGU6ICVzAFVuYWJsZSB0byBkZWxldGUgcGlkIGZpbGU6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIHNodXRkb3duIHJlcXVlc3RzIChlcnJubz0gJWQpAEZhaWxlZCB0byBhY2Nlc3MgZGlyZWN0b3J5IGZvciAtLSVzLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgYWNjZXNzaWJsZSBieSBNeVNRTCBTZXJ2ZXIuIFN1cHBsaWVkIHZhbHVlIDogJXMASWdub3JpbmcgLS0lcyB2YWx1ZSBhcyBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIC0taW5pdGlhbGl6ZSgtaW5zZWN1cmUpLgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLSVzOiBDdXJyZW50IHZhbHVlIGRvZXMgbm90IHJlc3RyaWN0IGxvY2F0aW9uIG9mIGdlbmVyYXRlZCBmaWxlcy4gQ29uc2lkZXIgc2V0dGluZyBpdCB0byBhIHZhbGlkLCBub24tZW1wdHkgcGF0aC4ALS0lcyBpcyBzZXQgdG8gTlVMTC4gT3BlcmF0aW9ucyByZWxhdGVkIHRvIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIGRhdGEgYXJlIGRpc2FibGVkAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tJXM6ICVzIGlzIGFjY2Vzc2libGUgdGhyb3VnaCAtLSVzLiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAEZhaWxlZCB0byBnZXQgc3RhdCBmb3IgZGlyZWN0b3J5IHBvaW50ZWQgb3V0IGJ5IC0tJXMASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS0lczogTG9jYXRpb24gaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4AVmFsdWUgZm9yIC0tJXMgaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBsaW1pdCBvZiAlZABDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBuYW1lZCBwaXBlcyAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBUQ1AvSVAgKGVycm5vPSAlZCkAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgc2hhcmVkIG1lbW9yeSAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgaW50ZXJydXB0LXRocmVhZCAoZXJyb3IgJWQsIGVycm5vOiAlZCkAV29ybGQtd3JpdGFibGUgY29uZmlnIGZpbGUgJyVzJyBoYXMgYmVlbiByZW1vdmVkLgBzZXRybGltaXQgY291bGQgbm90IGNoYW5nZSB0aGUgc2l6ZSBvZiBjb3JlIGZpbGVzIHRvICdpbmZpbml0eSc7ICBXZSBtYXkgbm90IGJlIGFibGUgdG8gZ2VuZXJhdGUgYSBjb3JlIGZpbGUgb24gc2lnbmFscwBXcm9uZyBkYXRlL3RpbWUgZm9ybWF0IHNwZWNpZmllcjogJXMAQ291bGQgbm90IGFsbG9jYXRlIHJlcGxpY2F0aW9uIGFuZCBiaW5sb2cgZmlsdGVyczogJXMAQ2Fubm90IGFsbG9jYXRlIHRoZSBrZXljYWNoZQBDdXJyZW50IHRpbWUgaGFzIGdvdCBwYXN0IHllYXIgMjAzOC4gVmFsaWRhdGluZyBjdXJyZW50IHRpbWUgd2l0aCAlZCBpdGVyYXRpb25zIGJlZm9yZSBpbml0aWF0aW5nIHRoZSBub3JtYWwgc2VydmVyIHNodXRkb3duIHByb2Nlc3MuAEl0ZXJhdGlvbiAlZDogT2J0YWluZWQgdmFsaWQgY3VycmVudCB0aW1lIGZyb20gc3lzdGVtAEl0ZXJhdGlvbiAlZDogQ3VycmVudCB0aW1lIG9idGFpbmVkIGZyb20gc3lzdGVtIGlzIGdyZWF0ZXIgdGhhbiAyMDM4AFRoaXMgTXlTUUwgc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCBkYXRlcyBsYXRlciB0aGVuIDIwMzgAJXMgKG15c3FsZCAlcykgc3RhcnRpbmcgYXMgcHJvY2VzcyAlbHUAU2h1dHRpbmcgZG93biByZXBsaWNhIHRocmVhZHMARm9yY2VmdWxseSBkaXNjb25uZWN0aW5nICVkIHJlbWFpbmluZyBjbGllbnRzAEFib3J0aW5nAEJpbmxvZyBlbmQAZ2V0aG9zdG5hbWUgZmFpbGVkLCB1c2luZyAnJXMnIGFzIGhvc3RuYW1lAE9uZSBjYW4gb25seSB1c2UgdGhlIC0tdXNlciBzd2l0Y2ggaWYgcnVubmluZyBhcyByb290AEZhdGFsIGVycm9yOiBQbGVhc2UgcmVhZCAiU2VjdXJpdHkiIHNlY3Rpb24gb2YgdGhlIG1hbnVhbCB0byBmaW5kIG91dCBob3cgdG8gcnVuIG15c3FsZCBhcyByb290IQBGYXRhbCBlcnJvcjogQ2FuJ3QgY2hhbmdlIHRvIHJ1biBhcyB1c2VyICclcycgOyAgUGxlYXNlIGNoZWNrIHRoYXQgdGhlIHVzZXIgZXhpc3RzIQBTZXJ2ZXIgaXMgc3RhcnRlZCB3aXRoIC0tcmVxdWlyZS1zZWN1cmUtdHJhbnNwb3J0PU9OIGJ1dCBubyBzZWN1cmUgdHJhbnNwb3J0cyAoU1NMIG9yIFNoYXJlZCBNZW1vcnkpIGFyZSBjb25maWd1cmVkLgBzZXRnaWQ6ICVzAHNldHVpZDogJXMAc2V0cmVnaWQ6ICVzAHNldHJldWlkOiAlcwBjaHJvb3Q6ICVzAFRDUC9JUCwgLS1zaGFyZWQtbWVtb3J5LCBvciAtLW5hbWVkLXBpcGUgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgb24gTlQgT1MAQ1RSTC1DIGlnbm9yZWQgZHVyaW5nIHN0YXJ0dXAAJyVzJyBjYW4gbm90IGJlIHVzZWQgYXMgY2xpZW50IGNoYXJhY3RlciBzZXQuICclcycgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgY2xpZW50IGNoYXJhY3RlciBzZXQuAE91dCBvZiBtZW1vcnkARmFpbGVkIHRvIGxvY2sgbWVtb3J5LiBFcnJubzogJWQAbXlfaW5pdCgpIGZhaWxlZC4ARXhlY3V0aW9uIG9mIGluaXRfZmlsZSAnJXMnIHN0YXJ0ZWQuAEV4ZWN1dGlvbiBvZiBpbml0X2ZpbGUgJyVzJyBlbmRlZC4AQ2hhbmdlZCBsaW1pdHM6IG1heF9vcGVuX2ZpbGVzOiAlbHUgKHJlcXVlc3RlZCAlbHUpAENvdWxkIG5vdCBpbmNyZWFzZSBudW1iZXIgb2YgbWF4X29wZW5fZmlsZXMgdG8gbW9yZSB0aGFuICVsdSAocmVxdWVzdDogJWx1KQBDaGFuZ2VkIGxpbWl0czogbWF4X2Nvbm5lY3Rpb25zOiAlbHUgKHJlcXVlc3RlZCAlbHUpAENoYW5nZWQgbGltaXRzOiB0YWJsZV9vcGVuX2NhY2hlOiAlbHUgKHJlcXVlc3RlZCAlbHUpAElnbm9yaW5nIHVzZXIgY2hhbmdlIHRvICclcycgYmVjYXVzZSB0aGUgdXNlciB3YXMgc2V0IHRvICclcycgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lAENvdWxkIG5vdCBhZGQgZG8gdGFibGUgcnVsZSAnJXMnIQBDb3VsZCBub3QgYWRkIGlnbm9yZSB0YWJsZSBydWxlICclcychAFRoZSB2YXJpYWJsZSBzZXNzaW9uX3RyYWNrX3N5c3RlbV92YXJpYWJsZXMgZWl0aGVyIGhhcyBkdXBsaWNhdGUgdmFsdWVzIG9yIGludmFsaWQgdmFsdWVzLgBUb28gbWFueSBhcmd1bWVudHMgKGZpcnN0IGV4dHJhIGlzICclcycpLgBVc2UgLS12ZXJib3NlIC0taGVscCB0byBnZXQgYSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zIQBVbmFibGUgdG8gcmVhZCBlcnJtc2cuc3lzIGZpbGUAQ2FuJ3QgaW5pdCBkYXRhYmFzZXMAVGhlcmUgd2VyZSBvdGhlciB2YWx1ZXMgc3BlY2lmaWVkIHRvIGxvZy1vdXRwdXQgYmVzaWRlcyBOT05FLiBEaXNhYmxpbmcgc2xvdyBhbmQgZ2VuZXJhbCBsb2dzIGFueXdheS4AQ1NWIGVuZ2luZSBpcyBub3QgcHJlc2VudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBsb2cgZmlsZXMAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIG1pc3NpbmcgJy0+JyEAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIGVtcHR5IEZST00gZGIhAEJhZCBzeW50YXggaW4gcmVwbGljYXRlLXJld3JpdGUtZGIgLSBlbXB0eSBUTyBkYiEAQWx0aG91Z2ggYSBwYXRoIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSAlcywgbG9nIHRhYmxlcyBhcmUgdXNlZC4gVG8gZW5hYmxlIGxvZ2dpbmcgdG8gZmlsZXMgdXNlIHRoZSAtLWxvZy1vdXRwdXQ9ZmlsZSBvcHRpb24uAEludmFsaWQgdmFsdWUgZm9yICVzOiAlcwBUaGUgc2VydmVyIG9wdGlvbiAnbG93ZXJfY2FzZV90YWJsZV9uYW1lcycgaXMgY29uZmlndXJlZCB0byB1c2UgY2FzZSBzZW5zaXRpdmUgdGFibGUgbmFtZXMgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBpcyBvbiBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0gd2hpY2ggaXMgYW4gdW5zdXBwb3J0ZWQgY29tYmluYXRpb24uIFBsZWFzZSBjb25zaWRlciBlaXRoZXIgdXNpbmcgYSBjYXNlIHNlbnNpdGl2ZSBmaWxlIHN5c3RlbSBmb3IgeW91ciBkYXRhIGRpcmVjdG9yeSBvciBzd2l0Y2hpbmcgdG8gYSBjYXNlLWluc2Vuc2l0aXZlIHRhYmxlIG5hbWUgbW9kZS4AU2V0dGluZyBsb3dlcl9jYXNlX3RhYmxlX25hbWVzPTIgYmVjYXVzZSBmaWxlIHN5c3RlbSBmb3IgJXMgaXMgY2FzZSBpbnNlbnNpdGl2ZQBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHdhcyBzZXQgdG8gMiwgZXZlbiB0aG91Z2ggeW91ciB0aGUgZmlsZSBzeXN0ZW0gJyVzJyBpcyBjYXNlIHNlbnNpdGl2ZS4gIE5vdyBzZXR0aW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgdG8gMCB0byBhdm9pZCBmdXR1cmUgcHJvYmxlbXMuAFlvdSBuZWVkIHRvIHVzZSAtLWxvZy1iaW4gdG8gbWFrZSAlcyB3b3JrLgBQYXRoICclcycgaXMgYSBkaXJlY3RvcnkgbmFtZSwgcGxlYXNlIHNwZWNpZnkgYSBmaWxlIG5hbWUgZm9yICVzIG9wdGlvbgBObyBhcmd1bWVudCB3YXMgcHJvdmlkZWQgdG8gLS1sb2ctYmluLCBhbmQgLS1sb2ctYmluLWluZGV4IHdhcyBub3QgdXNlZDsgc28gcmVwbGljYXRpb24gbWF5IGJyZWFrIHdoZW4gdGhpcyBNeVNRTCBzZXJ2ZXIgYWN0cyBhcyBhIHNvdXJjZSBhbmQgaGFzIGhpcyBob3N0bmFtZSBjaGFuZ2VkISEgUGxlYXNlIHVzZSAnLS1sb2ctYmluPSVzJyB0byBhdm9pZCB0aGlzIHByb2JsZW0uAFlvdSBoYXZlIGVuYWJsZWQgdGhlIGJpbmFyeSBsb2csIGJ1dCB5b3UgaGF2ZW4ndCBwcm92aWRlZCB0aGUgbWFuZGF0b3J5IHNlcnZlci1pZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBwcm9wZXIgc2VydmVyIHN0YXJ0LXVwIHBhcmFtZXRlcnMgZG9jdW1lbnRhdGlvbgBVbmFibGUgdG8gY3JlYXRlIHJlcGxpY2F0aW9uIHBhdGggbmFtZXM6IG91dCBvZiBtZW1vcnkgb3IgcGF0aCBuYW1lcyB0b28gbG9uZyAocGF0aCBuYW1lIGV4Y2VlZHMgJWQgb3IgZmlsZSBuYW1lIGV4Y2VlZHMgJWQpLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBHVElEIHN0cnVjdHVyZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIGVhcmx5IHBsdWdpbnMuAEZhaWxlZCB0byBpbml0aWFsaXplIGJ1aWx0aW4gcGx1Z2lucy4ARmFpbGVkIHRvIGluaXRpYWxpemUgZHluYW1pYyBwbHVnaW5zLgBQZXJmb3JtYW5jZSBzY2hlbWEgZGlzYWJsZWQgKHJlYXNvbjogaW5pdCBmYWlsZWQpLgBBc2tlZCBmb3IgJWx1IHRocmVhZCBzdGFjaywgYnV0IGdvdCAlbGQAZmFpbGVkIHRvIHNldCBkYXRhZGlyIHRvICVzAENhbid0IHJlYWQgZGF0YSBkaXJlY3RvcnkncyBzdGF0cyAoJWQpOiAlcy4gQXNzdW1pbmcgdGhhdCBpdCdzIG5vdCBvd25lZCBieSB0aGUgc2FtZSB1c2VyL2dyb3VwAENhbid0IGNoYW5nZSBkYXRhIGRpcmVjdG9yeSBvd25lciB0byAlcwBTZXR0aW5nIHBlcnNpc3RlbnQgb3B0aW9ucyBmYWlsZWQuAEZhaWxlZCB0byBzYXZlIHRoZSBzZXQgb2YgR2xvYmFsIFRyYW5zYWN0aW9uIElkZW50aWZpZXJzIG9mIHRoZSBsYXN0IGJpbmFyeSBsb2cgaW50byB0aGUgbXlzcWwuZ3RpZF9leGVjdXRlZCB0YWJsZSB3aGlsZSB0aGUgc2VydmVyIHdhcyBzaHV0dGluZyBkb3duLiBUaGUgbmV4dCBzZXJ2ZXIgcmVzdGFydCB3aWxsIG1ha2UgYW5vdGhlciBhdHRlbXB0IHRvIHNhdmUgR2xvYmFsIFRyYW5zYWN0aW9uIElkZW50aWZpZXJzIGludG8gdGhlIHRhYmxlLgBDYW4ndCBzdGFydCBzZXJ2ZXI6IEludmFsaWQgdmFsdWUgZm9yIC0tZGVmYXVsdC1hdXRoZW50aWNhdGlvbi1wbHVnaW4AQ291bGQgbm90IGpvaW4gJXN0aHJlYWQuIGVycm9yOiVkAEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGJ1aWxkaW5nIGRvX3RhYmxlIGFuZCBpZ25vcmVfdGFibGUgcnVsZXMgdG8gaGFzaGVzIGZvciBnbG9iYWwgcmVwbGljYXRpb24gZmlsdGVyLgBFcnJvciBvcGVuaW5nIENBIGNlcnRpZmljYXRlIGZpbGUARXJyb3IgYWNjZXNzaW5nIGRpcmVjdG9yeSBwb2ludGVkIGJ5IC0tc3NsLWNhcGF0aABGb3VuZCAlcywgJXMgYW5kICVzIGluIGRhdGEgZGlyZWN0b3J5LiBUcnlpbmcgdG8gZW5hYmxlIFNTTCBzdXBwb3J0IHVzaW5nIHRoZW0uAEZhaWxlZCB0byBjcmVhdGUgJXMoZmlsZTogJyVzJywgZXJybm8gJWQpAEZhaWxlZCB0byBpbml0aWFsaXplIHRpbWVyIGNvbXBvbmVudCAoZXJybm8gJWQpLgBzZXJ2ZXItaWQgY29uZmlndXJlZCBpcyB0b28gbGFyZ2UgdG8gcmVwcmVzZW50IHdpdGggc2VydmVyLWlkLWJpdHMgY29uZmlndXJlZC4ARGVmYXVsdCVzIHN0b3JhZ2UgZW5naW5lICglcykgaXMgbm90IGF2YWlsYWJsZQBDb3VsZCBub3Qgb3BlbiBmaWxlICclcycgZm9yIGVycm9yIGxvZ2dpbmclcyVzAEludmFsaWQgbG9nIGZpbGUgbmFtZSBhZnRlciBleHBhbmRpbmcgc3ltbGlua3M6ICclcycAdXNpbmcgLS1yZXBsaWNhdGUtc2FtZS1zZXJ2ZXItaWQgaW4gY29uanVuY3Rpb24gd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgaXMgaW1wb3NzaWJsZSwgaXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSBsb29wcyBpbiB0aGlzIHNlcnZlci4AdXNpbmcgLS1yZXBsaWNhdGUtc2FtZS1zZXJ2ZXItaWQgaW4gY29uanVuY3Rpb24gd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgd291bGQgbGVhZCB0byBpbmZpbml0ZSBsb29wcyBpbiB0aGlzIHNlcnZlci4gSG93ZXZlciB0aGlzIHdpbGwgYmUgaWdub3JlZCBhcyB0aGUgLS1sb2ctYmluIG9wdGlvbiBpcyBub3QgZGVmaW5lZCBvciB5b3VyIHNlcnZlciBpcyBydW5uaW5nIHdpdGggZ2xvYmFsIHRyYW5zYWN0aW9uIGlkZW50aWVycyBlbmFibGVkLgBOREIgOiBUYWJsZXMgbm90IGF2YWlsYWJsZSBhZnRlciAlbHUgc2Vjb25kcy4gQ29uc2lkZXIgaW5jcmVhc2luZyAtLW5kYi13YWl0LXNldHVwIHZhbHVlACVzAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGVzcGFjZSAnJXMnIGRvZXMgbm90IGV4aXN0LgBDb25uZWN0aW9uIGNvbGxhdGlvbiBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBkZWZhdWx0IGNvbm5lY3Rpb24gY29sbGF0aW9uLgBEYXRhYmFzZSBjb2xsYXRpb24gaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgRGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBFcnJvciBpbiBNZW1vcnkgYWxsb2NhdGlvbiBmb3IgRGVmaW5lciAlcyBmb3IgVHJpZ2dlci4ARXJyb3IgaW4gcmVhZGluZyAlcy5UUkcgZmlsZS4ARXJyb3IgaW4gcGFyc2luZyBUcmlnZ2VycyBmcm9tICVzLlRSRyBmaWxlLgBFcnJvciBpbiBjcmVhdGluZyBERCBlbnRyeSBmb3IgVHJpZ2dlciAlcy4lcwBSZXNvbHZpbmcgZGVwZW5kZW5jeSBmb3IgdGhlIHZpZXcgJyVzLiVzJyBmYWlsZWQuIFZpZXcgaXMgbm8gbW9yZSB2YWxpZCB0byB1c2UAJXMuJXMgaGFzIG5vIGRlZmluZXIgKGFzIHBlciBhbiBvbGQgdmlldyBmb3JtYXQpLiBDdXJyZW50IHVzZXIgaXMgdXNlZCBhcyBkZWZpbmVyLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHZpZXcuAFBsdWdpbiAnJXMnIGluaXQgZnVuY3Rpb24gcmV0dXJuZWQgZXJyb3IuAEluaXRpYWxpemF0aW9uIG9mIHRyYW5zYWN0aW9uIGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIGJpbmxvZyBzdG9yYWdlIGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIG9mIGJpbmxvZyB0cmFuc21pdCBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBJbml0aWFsaXphdGlvbiBiaW5sb2cgcmVsYXkgSU8gZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4AUnVuIGZ1bmN0aW9uICcuLi4nIGluIHBsdWdpbiAnJXMnIGZhaWxlZABteXNxbF9oYV9yZWFkOiBHb3QgZXJyb3IgJWQgd2hlbiByZWFkaW5nIHRhYmxlICclcycAU3RvcmVkIHJvdXRpbmUgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiAlcy4ASW52YWxpZCBjcmVhdGlvbiBjb250ZXh0ICclcy4lcycuAEdvdCBlcnJvciAlZCB3aGVuIHJlYWRpbmcgdGFibGUgJyVzJwBsb2FkX2Rlc19maWxlOiAgRm91bmQgd3Jvbmcga2V5X251bWJlcjogJWMARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AUGVyc2lzdGVkIGNvbmZpZyBmaWxlIGlzIGNvcnJ1cHQuIFBsZWFzZSBlbnN1cmUgbXlzcWxkLWF1dG8uY25mIGZpbGUgaXMgdmFsaWQgSlNPTi4ARm91bmQgb3B0aW9uIHdpdGhvdXQgcHJlY2VkaW5nIGdyb3VwIGluIGNvbmZpZyBmaWxlAFZBTEdSSU5EX0RPX1FVSUNLX0xFQUtfQ0hFQ0sAVkFMR1JJTkRfQ09VTlRfTEVBS1MgcmVwb3J0cyAlbHUgbGVha2VkIGJ5dGVzIGZvciBxdWVyeSAnJS4qcycATE9BRCBEQVRBIElORklMRSBpbiB0aGUgcmVwbGljYSBTUUwgVGhyZWFkIGNhbiBvbmx5IHJlYWQgZnJvbSAtLXJlcGxpY2EtbG9hZC10bXBkaXIuIFBsZWFzZSwgcmVwb3J0IGEgYnVnLgBHb3QgdW5rbm93biBlcnJvcjogJWQAQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB1ZGYgc3RydWN0dXJlcwBDYW4ndCBhbGxvYyBtZW1vcnkgZm9yIHVkZiBmdW5jdGlvbjogJyUuNjRzJwBJbnZhbGlkIHJvdyBpbiBteXNxbC5mdW5jIHRhYmxlIGZvciBmdW5jdGlvbiAnJS42NHMnAENvdWxkIG5vdCBvcGVuIHRoZSBteXNxbC5mdW5jIHRhYmxlLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEZvdW5kICVkIHByZXBhcmVkIHRyYW5zYWN0aW9uKHMpIGluICVzAEZvdW5kICVkIHByZXBhcmVkIFhBIHRyYW5zYWN0aW9ucwBpZ25vcmUgeGlkICVzAGNvbW1pdCB4aWQgJXMAcm9sbGJhY2sgeGlkICVzAFN0YXJ0aW5nIFhBIGNyYXNoIHJlY292ZXJ5Li4uAC0tdGMtaGV1cmlzdGljLXJlY292ZXIgcm9sbGJhY2sgc3RyYXRlZ3kgaXMgbm90IHNhZmUgb24gc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiBvbmUgMi1waGFzZS1jb21taXQtY2FwYWJsZSBzdG9yYWdlIGVuZ2luZS4gQWJvcnRpbmcgY3Jhc2ggcmVjb3ZlcnkuAEZvdW5kICVkIHByZXBhcmVkIHRyYW5zYWN0aW9ucyEgSXQgbWVhbnMgdGhhdCBteXNxbGQgd2FzIG5vdCBzaHV0IGRvd24gcHJvcGVybHkgbGFzdCB0aW1lIGFuZCBjcml0aWNhbCByZWNvdmVyeSBpbmZvcm1hdGlvbiAobGFzdCBiaW5sb2cgb3IgJXMgZmlsZSkgd2FzIG1hbnVhbGx5IGRlbGV0ZWQgYWZ0ZXIgYSBjcmFzaC4gWW91IGhhdmUgdG8gc3RhcnQgbXlzcWxkIHdpdGggLS10Yy1oZXVyaXN0aWMtcmVjb3ZlciBzd2l0Y2ggdG8gY29tbWl0IG9yIHJvbGxiYWNrIHBlbmRpbmcgdHJhbnNhY3Rpb25zLgBYQSBjcmFzaCByZWNvdmVyeSBmaW5pc2hlZC4ARmFpbGVkIHRvIGNvbGxlY3QgR1RJRCB0byBzZW5kIGluIHRoZSByZXNwb25zZSBwYWNrZXQhAE1ZU1FMLkRFRkFVTFRfUk9MRVMgY291bGRuJ3QgYmUgdXBkYXRlZCBmb3IgYXV0aG9yaXphdGlvbiBpZGVudGlmaWVyICVzAEZvbGxvd2luZyB1c2VycyB3ZXJlIHNwZWNpZmllZCBpbiBDUkVBVEUgVVNFUiBJRiBOT1QgRVhJU1RTIGJ1dCB0aGV5IGFscmVhZHkgZXhpc3QuIENvcnJlc3BvbmRpbmcgZW50cnkgaW4gYmluYXJ5IGxvZyB1c2VkIGRlZmF1bHQgYXV0aGVudGljYXRpb24gcGx1Z2luICclcycgdG8gcmV3cml0ZSBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiAoaWYgYW55KSBmb3IgdGhlbTogJXMARm9sbG93aW5nIHVzZXJzIHdlcmUgc3BlY2lmaWVkIGluIEFMVEVSIFVTRVIgSUYgRVhJU1RTIGJ1dCB0aGV5IGRvIG5vdCBleGlzdC4gQ29ycmVzcG9uZGluZyBlbnRyeSBpbiBiaW5hcnkgbG9nIHVzZWQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJyVzJyB0byByZXdyaXRlIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIChpZiBhbnkpIGZvciB0aGVtOiAlcwBUYWJsZSAnJS0xOTJzJyBjb3JydXB0ZWQ6IHJvdyBpbiB3cm9uZyBwYXJ0aXRpb246ICVzIC0tIFBsZWFzZSBSRVBBSVIgdGhlIHRhYmxlIQBHb3QgYW4gZXJyb3IgZnJvbSB0aHJlYWRfaWQ9JXUsICVzOiVkAEdvdCBhbiBlcnJvciBmcm9tIHVua25vd24gdGhyZWFkLCAlczolZABUb28gbWFueSBzdG9yYWdlIGVuZ2luZXMhAFN0b3JhZ2UgZW5naW5lICclcycgaGFzIGNvbmZsaWN0aW5nIHR5cGVjb2RlLiBBc3NpZ25pbmcgdmFsdWUgJWQuAE91dCBvZiBtZW1vcnkgb24gdHJhbnNhY3Rpb24gd3JpdGUgc2V0IGV4dHJhY3Rpb24AVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcGx1Z2luICclcycgaGFuZGxlcnRvbi4AU2hhcmVkIG1lbW9yeSBzZXR0aW5nIHVwIGxpc3RlbmVyAENhbid0IGNyZWF0ZSBzaGFyZWQgbWVtb3J5IHNlcnZpY2U6ICVzLiA6ICVzAENhbid0IGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGNvbm5lY3Rpb246ICVzLiA6ICVzAENhbid0IGNyZWF0ZSBldmVudCwgbGFzdCBlcnJvcj0ldQBDYW4ndCBjcmVhdGUgbmV3IG5hbWVkIHBpcGUhOiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBuZXcgY29ubmVjdGlvbihlcnJubz0gJWQpAEZhaWxlZCB0byBjcmVhdGUgYSBzb2NrZXQgZm9yICVzICclcyc6IGVycm5vOiAlZC4AU2VydmVyIHNvY2tldCBjcmVhdGVkIG9uIElQOiAnJXMnLgBTZXJ2ZXIgaG9zdG5hbWUgKGJpbmQtYWRkcmVzcyk6ICclcyc7IHBvcnQ6ICVkAElQdjYgaXMgYXZhaWxhYmxlLgBJUHY2IGlzIG5vdCBhdmFpbGFibGUuAENhbid0IGNyZWF0ZSBJUCBzb2NrZXQ6ICVzAENhbid0IHN0YXJ0IHNlcnZlcjogY2Fubm90IHJlc29sdmUgaG9zdG5hbWUhAERvIHlvdSBhbHJlYWR5IGhhdmUgYW5vdGhlciBteXNxbGQgc2VydmVyIHJ1bm5pbmcgb24gcG9ydDogJWQgPwBEbyB5b3UgYWxyZWFkeSBoYXZlIGFub3RoZXIgbXlzcWxkIHNlcnZlciBydW5uaW5nIG9uIHNvY2tldDogJXMgPwBBbm90aGVyIHByb2Nlc3Mgd2l0aCBwaWQgJWQgaXMgdXNpbmcgdW5peCBzb2NrZXQgZmlsZS4ARmFpbGVkIHRvIHJlc2V0IElQVjZfVjZPTkxZIGZsYWcgKGVycm9yOiAlZCkuIFRoZSBzZXJ2ZXIgd2lsbCBsaXN0ZW4gdG8gSVB2NiBhZGRyZXNzZXMgb25seS4AUmV0cnlpbmcgYmluZCBvbiBUQ1AvSVAgcG9ydCAldQBDYW4ndCBzdGFydCBzZXJ2ZXI6IEJpbmQgb24gVENQL0lQIHBvcnQ6ICVzAEZhaWxzIHRvIHByaW50IG91dCBJUC1hZGRyZXNzLgAgIC0gJyVzJyByZXNvbHZlcyB0byAnJXMnOwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGxpc3RlbigpIG9uIFRDUC9JUCBwb3J0OiAlcwBsaXN0ZW4oKSBvbiBUQ1AvSVAgZmFpbGVkIHdpdGggZXJyb3IgJWQAVGhlIHNvY2tldCBmaWxlIHBhdGggaXMgdG9vIGxvbmcgKD4gJXUpOiAlcwBVbmFibGUgdG8gc2V0dXAgdW5peCBzb2NrZXQgbG9jayBmaWxlLgBDYW4ndCBzdGFydCBzZXJ2ZXI6IFVOSVggU29ja2V0IDogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogQmluZCBvbiB1bml4IHNvY2tldDogJXMAbGlzdGVuKCkgb24gVW5peCBzb2NrZXQgZmFpbGVkIHdpdGggZXJyb3IgJWQAVW5hYmxlIHRvIGNyZWF0ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgYWZ0ZXIgcmV0cmllcy4AQ291bGQgbm90IGNyZWF0ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAENvdWxkIG5vdCBvcGVuIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IHJlYWQgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBVbml4IHNvY2tldCBsb2NrIGZpbGUgaXMgZW1wdHkgJXMuAEludmFsaWQgcGlkIGluIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IHdyaXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IHJlbW92ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAENvdWxkIG5vdCBzeW5jIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IGNsb3NlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AbXlzcWxkOiBHb3QgZXJyb3IgJWQgZnJvbSBzZWxlY3QARXJyb3IgaW4gYWNjZXB0OiAlcwBSU0EgJXMga2V5IGZpbGUgbm90IGZvdW5kOiAlcy4gU29tZSBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIHdpbGwgbm90IHdvcmsuAEZhaWx1cmUgdG8gcGFyc2UgUlNBICVzIGtleSAoZmlsZSBleGlzdHMpOiAlczogJXMARmFpbHVyZSB0byByZWFkIGtleSBmaWxlOiAlcwBSU0Ega2V5IGZpbGVzIG5vdCBmb3VuZC4gU29tZSBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIHdpbGwgbm90IHdvcmsuAENvbm5lY3Rpb24gYXR0cmlidXRlcyBvZiBsZW5ndGggJWx1IHdlcmUgdHJ1bmNhdGVkICglZCBieXRlcyBsb3N0KSBmb3IgY29ubmVjdGlvbiAlbGx1LCB1c2VyICVzQCVzIChhcyAlcyksIGF1dGg6ICVzAFguNTA5IGNpcGhlcnMgbWlzbWF0Y2g6IHNob3VsZCBiZSAnJXMnIGJ1dCBpcyAnJXMnAFguNTA5IGlzc3VlciBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycAWC41MDkgc3ViamVjdCBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycARmFpbGVkIHRvIGFjdGl2YXRlIGRlZmF1bHQgcm9sZSAlcyBmb3IgJXMAQ291bGQgbm90IGdlbmVyYXRlIFJTQSBwcml2YXRlIGtleSByZXF1aXJlZCBmb3IgWC41MDkgY2VydGlmaWNhdGUuAENvdWxkIG5vdCB3cml0ZSBrZXkgZmlsZTogJXMAQ291bGQgbm90IHNldCBmaWxlIHBlcm1pc3Npb24gZm9yICVzAENvdWxkIG5vdCByZWFkIENBIGtleSBmaWxlOiAlcwBDb3VsZCBub3QgcmVhZCBDQSBjZXJ0aWZpY2F0ZSBmaWxlOiAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgWC41MDkgY2VydGlmaWNhdGUuAENvdWxkIG5vdCB3cml0ZSBjZXJ0aWZpY2F0ZSBmaWxlOiAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgUlNBIFByaXZhdGUvUHVibGljIGtleSBwYWlyAENvdWxkIG5vdCB3cml0ZSBwcml2YXRlIGtleSBmaWxlOiAlcwBDb3VsZCBub3Qgd3JpdGUgcHVibGljIGtleSBmaWxlOiAlcwBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgb3B0aW9ucyByZWxhdGVkIHRvIFNTTCBhcmUgc3BlY2lmaWVkLgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgY2VydGlmaWNhdGUgZmlsZXMgYXJlIHByZXNlbnQgaW4gZGF0YSBkaXJlY3RvcnkuAEF1dG8gZ2VuZXJhdGVkIFNTTCBjZXJ0aWZpY2F0ZXMgYXJlIHBsYWNlZCBpbiBkYXRhIGRpcmVjdG9yeS4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBTU0wgY2VydGlmaWNhdGVzIGFzIC0tYXV0b19nZW5lcmF0ZV9jZXJ0cyBpcyBzZXQgdG8gT0ZGLgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFJTQSBrZXkgcGFpciB0aHJvdWdoICVzIGFzIG9wdGlvbnMgcmVsYXRlZCB0byBSU0Ega2V5cyBhcmUgc3BlY2lmaWVkLgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFJTQSBrZXkgcGFpciB0aHJvdWdoICVzIGFzIGtleSBmaWxlcyBhcmUgcHJlc2VudCBpbiBkYXRhIGRpcmVjdG9yeS4AQXV0byBnZW5lcmF0ZWQgUlNBIGtleSBmaWxlcyB0aHJvdWdoICVzIGFyZSBwbGFjZWQgaW4gZGF0YSBkaXJlY3RvcnkuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIGFzICVzIGlzIHNldCB0byBPRkYuACdwcm94aWVzX3ByaXYnIGVudHJ5ICclc0AlcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuAFRoZSBwbHVnaW4gJyUuKnMnIHVzZWQgdG8gYXV0aGVudGljYXRlIHVzZXIgJyVzJ0AnJS4qcycgaXMgbm90IGxvYWRlZC4gTm9ib2R5IGNhbiBjdXJyZW50bHkgbG9naW4gdXNpbmcgdGhpcyBhY2NvdW50LgBUaGUgcGx1Z2luICclcycgaXMgdXNlZCB0byBhdXRoZW50aWNhdGUgdXNlciAnJXMnQCclLipzJywgJXMgY29uZmlndXJlZC4gTm9ib2R5IGNhbiBjdXJyZW50bHkgbG9naW4gdXNpbmcgdGhpcyBhY2NvdW50LgBDb3VsZCBub3QgbG9hZCBteXNxbC5yb2xlX2VkZ2VzIGFuZCBteXNxbC5kZWZhdWx0X3JvbGVzIHRhYmxlcy4gQUNMIERETHMgd2lsbCBub3Qgd29yayB1bmxlc3MgdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlIGlzIHBlcmZvcm1lZC4AJ3VzZXInIGVudHJ5ICclc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuAEZhdGFsIGVycm9yOiBDb3VsZCBub3QgcmVhZCB0aGUgY29sdW1uICdhdXRoZW50aWNhdGlvbl9zdHJpbmcnIGZyb20gdGFibGUgJ215c3FsLnVzZXInLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFVzZXIgZW50cnkgJyVzJ0AnJXMnIGhhcyBhIGRlcHJlY2F0ZWQgcHJlLTQuMSBwYXNzd29yZC4gVGhlIHVzZXIgd2lsbCBiZSBpZ25vcmVkIGFuZCBubyBvbmUgY2FuIGxvZ2luIHdpdGggdGhpcyB1c2VyIGFueW1vcmUuAFVzZXIgZW50cnkgJyVzJ0AnJXMnIGhhcyBhbiBlbXB0eSBwbHVnaW4gdmFsdWUuIFRoZSB1c2VyIHdpbGwgYmUgaWdub3JlZCBhbmQgbm8gb25lIGNhbiBsb2dpbiB3aXRoIHRoaXMgdXNlciBhbnltb3JlLgBGb3VuZCBpbnZhbGlkIHBhc3N3b3JkIGZvciB1c2VyOiAnJXNAJXMnOyBJZ25vcmluZyB1c2VyACd1c2VyJyBlbnRyeSAnJXNAJXMnIGhhcyB0aGUgcGFzc3dvcmQgaWdub3JlIGZsYWcgcmFpc2VkLCBidXQgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiBkb2Vzbid0IHN1cHBvcnQgcGFzc3dvcmQgZXhwaXJhdGlvbi4gVGhlIHVzZXIgaWQgd2lsbCBiZSBpZ25vcmVkLgBTb21lIG9mIHRoZSB1c2VyIGFjY291bnRzIHdpdGggU1VQRVIgcHJpdmlsZWdlcyB3ZXJlIGRpc2FibGVkIGJlY2F1c2Ugb2YgZW1wdHkgbXlzcWwudXNlci5wbHVnaW4gdmFsdWUuIElmIHlvdSBhcmUgdXBncmFkaW5nIGZyb20gTXlTUUwgNS42IHRvIE15U1FMIDUuNyBpdCBtZWFucyB0aGF0IHN1YnN0aXR1dGlvbiBmb3IgdGhlIGVtcHR5IHBsdWdpbiBjb2x1bW4gd2FzIG5vdCBwb3NzaWJsZS4gUHJvYmFibHkgYmVjYXVzZSBvZiBwcmUgNC4xIHBhc3N3b3JkIGhhc2guIElmIHlvdXIgYWNjb3VudCBpcyBkaXNhYmxlZCB5b3Ugd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLiBGb3IgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1cGdyYWRlIE15U1FMIHRvIGEgbmV3IHZlcnNpb24gcGxlYXNlIHNlZSB0aGUgJ1VwZ3JhZGluZyBNeVNRTCcgc2VjdGlvbiBmcm9tIHRoZSBNeVNRTCBtYW51YWwuAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAnZGInIHRhYmxlIHdpdGggZW1wdHkgZGF0YWJhc2UgbmFtZTsgU2tpcHBlZAAnZGInIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuACdkYicgZW50cnkgJyVzICVzQCVzJyBoYWQgZGF0YWJhc2UgaW4gbWl4ZWQgY2FzZSB0aGF0IGhhcyBiZWVuIGZvcmNlZCB0byBsb3dlcmNhc2UgYmVjYXVzZSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIGlzIHNldC4gSXQgd2lsbCBub3QgYmUgcG9zc2libGUgdG8gcmVtb3ZlIHRoaXMgcHJpdmlsZWdlIHVzaW5nIFJFVk9LRS4AVGhlIHN5c3RlbSB0YWJsZSBteXNxbC5wcm94aWVzX3ByaXYgaXMgbWlzc2luZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBGYXRhbCBlcnJvcjogQ2FuJ3Qgb3BlbiBhbmQgbG9jayBwcml2aWxlZ2UgdGFibGVzOiAlcwBGYXRhbDogY2FuJ3QgaW5pdGlhbGl6ZSBncmFudCBzdWJzeXN0ZW0gLSAnJXMnACdwcm9jc19wcml2JyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgAncHJvY3NfcHJpdicgZW50cnkgJyVzJyBpZ25vcmVkLCBiYWQgcm91dGluZSB0eXBlACd0YWJsZXNfcHJpdicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4ARmFpbGVkIHRvIGFkZCAlcyBpbiBleHRyYV91c2Vycy4gQmluYXJ5IGxvZyBlbnRyeSBtYXkgbWlzcyBzb21lIG9mIHRoZSB1c2Vycy4AVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSBzY2hlbWEgJyVzJyBkb2VzIG5vdCBleGlzdC4AVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBERCBTdG9yYWdlIEVuZ2luZQBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIEFib3J0aW5nIHVwZ3JhZGUgYW5kIGRlbGV0aW5nIGFsbCBERCB0YWJsZXMuIFN0YXJ0IHRoZSB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAEZvdW5kIC5mcm0gZmlsZSB3aXRoIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIERpY3Rpb25hcnkgVGFibGVzLgBDcmVhdGVkIERhdGEgRGljdGlvbmFyeSBmb3IgdXBncmFkZQBDYW4ndCBmaW5kIGVycm9yLW1lc3NhZ2UgZmlsZSAnJXMnLiBDaGVjayBlcnJvci1tZXNzYWdlIGZpbGUgbG9jYXRpb24gYW5kICdsYy1tZXNzYWdlcy1kaXInIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlLgBVc2luZyBwcmUgNS41IHNlbWFudGljcyB0byBsb2FkIGVycm9yIG1lc3NhZ2VzIGZyb20gJXMuIElmIHRoaXMgaXMgbm90IGludGVuZGVkLCByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdmFsaWQgdXNhZ2Ugb2YgLS1sYy1tZXNzYWdlcy1kaXIgYW5kIC0tbGFuZ3VhZ2UgcGFyYW1ldGVycy4ARXJyb3IgbWVzc2FnZSBmaWxlICclcycgaGFkIG9ubHkgJWQgZXJyb3IgbWVzc2FnZXMsIGJ1dCBpdCBzaG91bGQgY29udGFpbiBhdCBsZWFzdCAlZCBlcnJvciBtZXNzYWdlcy4gQ2hlY2sgdGhhdCB0aGUgYWJvdmUgZmlsZSBpcyB0aGUgcmlnaHQgdmVyc2lvbiBmb3IgdGhpcyBwcm9ncmFtIQBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgbWVzc2FnZWZpbGUgJyVzJwBDYW4ndCByZWFkIGZyb20gbWVzc2FnZWZpbGUgJyVzJwBGb3VuZCBpbmNvbXBhdGlibGUgREVDSU1BTCBmaWVsZCAnJXMnIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UiIHRvIGZpeCBpdCEARm91bmQgaW5jb21wYXRpYmxlIFlFQVIoeCkgZmllbGQgJyVzJyBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFIiB0byBmaXggaXQhACclcycgaGFkIG5vIG9yIGludmFsaWQgY2hhcmFjdGVyIHNldCwgYW5kIGRlZmF1bHQgY2hhcmFjdGVyIHNldCBpcyBtdWx0aS1ieXRlLCBzbyBjaGFyYWN0ZXIgY29sdW1uIHNpemVzIG1heSBoYXZlIGNoYW5nZWQARm91bmQgd3Jvbmcga2V5IGRlZmluaXRpb24gaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSAiIHRvIGZpeCBpdCEAVW5hYmxlIHRvIG9wZW4gZmlsZSAlcwBFcnJvciBpbiByZWFkaW5nIGZpbGUgJXMAVGFibGUgJyVzJyB3YXMgY3JlYXRlZCB3aXRoIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgTXlTUUwgYW5kIGNhbm5vdCBiZSByZWFkAFVuYWJsZSB0byByZWFkIHZpZXcgJXMARmlsZSAlcyBoYXMgdW5rbm93biB0eXBlIGluIGl0cyBoZWFkZXIuAEluY29ycmVjdCBpbmZvcm1hdGlvbiBpbiBmaWxlICVzAENhbid0IG9wZW4gYW5kIGxvY2sgcHJpdmlsZWdlIHRhYmxlczogJXMAUGx1Z2luICclcycgY2Fubm90IHN1YnNjcmliZSB0byBNWVNRTF9BVURJVF9BVVRIT1JJWkFUSU9OIGV2ZW50cy4gQ3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuAFBsdWdpbiAnJXMnIGhhcyBpbnZhbGlkIGRhdGEuAEZhdGFsIGVycm9yOiBPT00gd2hpbGUgaW5pdGlhbGl6aW5nIHRpbWUgem9uZXMAQ2FuJ3Qgb3BlbiBhbmQgbG9jayB0aW1lIHpvbmUgdGFibGU6ICVzIHRyeWluZyB0byBsaXZlIHdpdGhvdXQgdGhlbQBGYXRhbCBlcnJvcjogT3V0IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZQBGYXRhbCBlcnJvcjogV2hpbGUgbG9hZGluZyBteXNxbC50aW1lX3pvbmVfbGVhcF9zZWNvbmQgdGFibGU6IHRvbyBtdWNoIGxlYXBzAEZhdGFsIGVycm9yOiBFcnJvciB3aGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZQBGYXRhbCBlcnJvcjogSWxsZWdhbCBvciB1bmtub3duIGRlZmF1bHQgdGltZSB6b25lICclcycAQ2FuJ3QgZmluZCBkZXNjcmlwdGlvbiBvZiB0aW1lIHpvbmUgJyUuKnMnAENhbid0IGZpbmQgZGVzY3JpcHRpb24gb2YgdGltZSB6b25lICcldScARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbl90eXBlIHRhYmxlOiB0b28gYmlnIHRyYW5zaXRpb24gdHlwZSBpZABFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGU6IG5vdCBlbm91Z2ggcm9vbSBmb3IgYWJicmV2aWF0aW9ucwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGUARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbiB0YWJsZTogdG9vIG11Y2ggdHJhbnNpdGlvbnMARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbiB0YWJsZTogYmFkIHRyYW5zaXRpb24gdHlwZSBpZABFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlAGxvYWRpbmcgdGltZSB6b25lIHdpdGhvdXQgdHJhbnNpdGlvbiB0eXBlcwBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uAFVuYWJsZSB0byBidWlsZCBta3RpbWUgbWFwIGZvciB0aW1lIHpvbmUAT3V0IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZQBGYXRhbCBlcnJvcjogT3V0IG9mIG1lbW9yeSB3aGlsZSBzZXR0aW5nIG5ldyB0aW1lIHpvbmUAUmVwbGljYSBTUUwgdGhyZWFkIGlzIHN0b3BwZWQgYmVjYXVzZSBVTlRJTCBjb25kaXRpb24gaXMgYmFkKCVzOiVsbHUpLgBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgaXRzIFVOVElMIHBvc2l0aW9uICVsbHUAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBVTlRJTCBTUUxfQkVGT1JFX0dUSURTICVzIGlzIGFscmVhZHkgYXBwbGllZABSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgVU5USUwgU1FMX0JFRk9SRV9HVElEUyAlcwBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgVU5USUwgU1FMX0FGVEVSX0dUSURTICVzAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGFjY29yZGluZyB0byBVTlRJTCBTUUxfQUZURVJfTVRTX0dBUFMgYXMgaXQgaGFzIHByb2Nlc3NlZCBhbGwgZ2FwIHRyYW5zYWN0aW9ucyBsZWZ0IGZyb20gdGhlIHByZXZpb3VzIHJlcGxpY2Egc2Vzc2lvbi4AR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGlzIG5vdCBpbnN0YWxsZWQuAFRoZSB0cmFuc2FjdGlvbiBvd25lZCBHVElEIGlzIGFscmVhZHkgaW4gdGhlICVzIHRhYmxlLCB3aGljaCBpcyBjYXVzZWQgYnkgYW4gZXhwbGljaXQgbW9kaWZ5aW5nIGZyb20gdXNlciBjbGllbnQuAEZhaWxlZCB0byBkZWxldGUgdGhlIHJvdzogJyVzJyBmcm9tIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLgBGYWlsZWQgdG8gY29tcHJlc3MgdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUuAEZhaWxlZCB0byBjb21wcmVzcyB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZSwgYmVjYXVzZSBpdCBpcyBmYWlsZWQgdG8gYWxsb2NhdGUgdGhlIFRIRC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhyZWFkIGF0dHJpYnV0ZSB3aGVuIGNyZWF0aW5nIGNvbXByZXNzaW9uIHRocmVhZC4AQ2FuIG5vdCBjcmVhdGUgdGhyZWFkIHRvIGNvbXByZXNzIGd0aWRfZXhlY3V0ZWQgdGFibGUgKGVycm5vPSAlZCkAQ291bGQgbm90IGpvaW4gZ3RpZF9leGVjdXRlZCB0YWJsZSBjb21wcmVzc2lvbiB0aHJlYWQuIGVycm9yOiVkAENhbid0IHN0YXJ0IHNlcnZlciA6IEluaXRpYWxpemUgc2VjdXJpdHkgZGVzY3JpcHRvcjogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogU2V0IHNlY3VyaXR5IGRlc2NyaXB0b3I6ICVzAENhbid0IHN0YXJ0IHNlcnZlciA6IE5hbWVkIFBpcGUgIiVzIiBhbHJlYWR5IGluIHVzZS4ATkRCIFJlcGxpY2EgOiBBdCBTUUwgdGhyZWFkIHN0YXJ0IGFwcGx5aW5nIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgZnJvbSBTb3VyY2UgU2VydmVySWQgJXUgd2hpY2ggaXMgbG93ZXIgdGhhbiBwcmV2aW91c2x5IGFwcGxpZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1LiAgQ2hlY2sgcmVwbGljYSBwb3NpdGlvbmluZy4ATkRCIFJlcGxpY2EgOiBTUUwgdGhyZWFkIHN0b3BwZWQgYXMgYXBwbHlpbmcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIFNvdXJjZSBTZXJ2ZXJJZCAldSB3aGljaCBpcyBsb3dlciB0aGFuIHByZXZpb3VzbHkgYXBwbGllZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpLiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUATkRCIFJlcGxpY2EgOiBTUUwgdGhyZWFkIHN0b3BwZWQgYXMgYXR0ZW1wdGVkIHRvIHJlYXBwbHkgYWxyZWFkeSBjb21taXR0ZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIHNlcnZlciBpZCAldS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1LgBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhdHRlbXB0aW5nIHRvIGFwcGx5IG5ldyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIHdoaWxlIGxvd2VyIHJlY2VpdmVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgaGFzIG5vdCBiZWVuIGNvbW1pdHRlZC4gIFNvdXJjZSBzZXJ2ZXIgaWQgOiAldS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1LgBOREIgUmVwbGljYTogbWlzc2luZyBkYXRhIGZvciAlcyB0aW1lc3RhbXAgY29sdW1uICV1LgBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgbG9nZ2luZyBleGNlcHRpb25zIHRvICVzLiVzAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyA6ICVzLCBsb3cgZXBvY2ggcmVzb2x1dGlvbgBGb3VuZCB1bmV4cGVjdGVkIGZpZWxkIHR5cGUgJXUARmFpbGVkIHRvIGNyZWF0ZSBOZGJJbmZvAEZhaWxlZCB0byBpbml0IE5kYkluZm8AbmRiX3NlcmlhbGl6ZV9jb25kOiBVbmV4cGVjdGVkIG1pc21hdGNoIG9mIGZvdW5kIGFuZCBleHBlY3RlZCBudW1iZXIgb2YgZnVuY3Rpb24gYXJndW1lbnRzICV1ACVzIC0gJXMuJXMAJXMASW5mbyB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBJbmZvIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBzY2FubmVkLgBDb3JydXB0ZWQgdGFibGUgJXMuJXMuIENoZWNrIG91dCB0YWJsZSBkZWZpbml0aW9uLgBJbmZvIHRhYmxlIGhhcyBhIHByb2JsZW0gd2l0aCBpdHMga2V5IGZpZWxkKHMpLiBUYWJsZSAnJXMuJXMnIGV4cGVjdGVkIGZpZWxkICMldSB0byBiZSAnJXMnIGJ1dCBmb3VuZCAnJXMnIGluc3RlYWQuAENob29zaW5nIHdvcmtlciBpZCAlbHUsIHRoZSBmb2xsb3dpbmcgaXMgZ29pbmcgdG8gYmUgJWx1AFRyYW5zYWN0aW9uIGlzIHRhZ2dlZCB3aXRoIGluY29uc2lzdGVudCBsb2dpY2FsIHRpbWVzdGFtcHM6IHNlcXVlbmNlX251bWJlciAoJWxsZCkgPD0gbGFzdF9jb21taXR0ZWQgKCVsbGQpAFRyYW5zYWN0aW9uJ3Mgc2VxdWVuY2UgbnVtYmVyIGlzIGluY29uc2lzdGVudCB3aXRoIHRoYXQgb2YgYSBwcmVjZWRpbmcgb25lOiBzZXF1ZW5jZV9udW1iZXIgKCVsbGQpIDw9IHByZXZpb3VzIHNlcXVlbmNlX251bWJlciAoJWxsZCkARm9yIHRoZSBjcmVhdGlvbiBvZiByZXBsaWNhdGlvbiBjaGFubmVscyB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBhbmQgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3JpZXMgbXVzdCBiZSBzZXQgdG8gVEFCTEUARm9yIHRoZSBjcmVhdGlvbiBvZiByZXBsaWNhdGlvbiBjaGFubmVscyB0aGUgc2VydmVyIGlkIG11c3QgYmUgZGlmZmVyZW50IGZyb20gMABSZXBsaWNhOiBXcm9uZyByZXBvc2l0b3J5LiBSZXBvc2l0b3J5IHNob3VsZCBiZSBUQUJMRQBFcnJvciBjcmVhdGluZyBjb25uZWN0aW9uIG1ldGFkYXRhOiAlcy4ARXJyb3IgY2hhbmdpbmcgdGhlIHR5cGUgb2YgY29ubmVjdGlvbiBtZXRhZGF0YSdzIHJlcG9zaXRvcnk6ICVzLgBJdCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSByZWxheSBsb2cgcmVwb3NpdG9yeSBiZWNhdXNlIHRoZXJlIGFyZSB3b3JrZXJzIHJlcG9zaXRvcmllcyB3aXRoIHBvc3NpYmxlIGV4ZWN1dGlvbiBnYXBzLiBUaGUgdmFsdWUgb2YgLS1yZWxheV9sb2dfaW5mb19yZXBvc2l0b3J5IGlzIGFsdGVyZWQgdG8gb25lIG9mIHRoZSBmb3VuZCBXb3JrZXIgcmVwb3NpdG9yaWVzLiBUaGUgZ2FwcyBoYXZlIHRvIGJlIHNvcnRlZCBvdXQgYmVmb3JlIHJlc3VtaW5nIHdpdGggdGhlIHR5cGUgY2hhbmdlLgBFcnJvciBjcmVhdGluZyBhcHBsaWVyIG1ldGFkYXRhOiAlcy4ARXJyb3IgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYXBwbGllciBtZXRhZGF0YSdzIHJlcG9zaXRvcnk6ICVzLgBDb3VsZCBub3QgZGVsZXRlIGZyb20gUmVwbGljYSBXb3JrZXJzIGluZm8gcmVwb3NpdG9yeS4AQ291bGQgbm90IHN0b3JlIHRoZSByZXNldCBSZXBsaWNhIFdvcmtlciBzdGF0ZSBpbnRvIHRoZSByZXBsaWNhIGluZm8gcmVwb3NpdG9yeS4ARXJyb3IgaW4gY2hlY2tpbmcgJXMgcmVwb3NpdG9yeS4AUmVwbGljYTogJXMAUmVwbGljYTogQ291bGQgbm90IGNyZWF0ZSBjaGFubmVsIGxpc3QAUmVwbGljYTogVGhpcyByZXBsaWNhIHdhcyBhIG11bHRpc291cmNlZCByZXBsaWNhIHByZXZpb3VzbHkgd2hpY2ggaXMgc3VwcG9ydGVkIG9ubHkgYnkgYm90aCBUQUJMRSBiYXNlZCBjb25uZWN0aW9uIG1ldGFkYXRhIGFuZCBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcmllcy4gRm91bmQgb25lIG9yIGJvdGggb2YgdGhlIGluZm8gcmVwb3MgdG8gYmUgdHlwZSBGSUxFLiBTZXQgYm90aCByZXBvcyB0byB0eXBlIFRBQkxFLgBSZXBsaWNhOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZm9yIGNoYW5uZWwgJyVzJzsgaXRzIHJlY29yZCBtYXkgc3RpbGwgYmUgcHJlc2VudCBpbiB0aGUgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3J5LCBjb25zaWRlciBkZWxldGluZyBpdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlJXMAUmVwbGljYTogRmFpbGVkIHRvIGNyZWF0ZSBhIGNoYW5uZWwgZnJvbSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkuAEZhaWxlZCB0byBjcmVhdGUgYSBuZXcgaW5mbyBmaWxlIChmaWxlICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgY2FjaGUgb24gaW5mbyBmaWxlIChmaWxlICclcycpAEZhaWxlZCB0byBvcGVuIHRoZSBleGlzdGluZyBpbmZvIGZpbGUgKGZpbGUgJyVzJywgZXJybm8gJWQpAFNlcnZlciBvdmVyY29tZXMgdGhlIHRlbXBvcmFyeSAnb3V0IG9mIG1lbW9yeScgaW4gJyVkJyB0cmllcyB3aGlsZSBhbGxvY2F0aW5nIGEgbmV3IGNodW5rIG9mIGludGVydmFscyBmb3Igc3RvcmluZyBHVElEcy4AVW5rbm93biBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGUASW52YWxpZCB2YWx1ZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlOiAlLjFmAFVua25vd24gY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAFVua25vd24gc3RvcmFnZSBlbmdpbmUgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBJbnZhbGlkIGRldmljZSB0eXBlICVkIGZvciAiJXMiIHN0b3JhZ2UgZW5naW5lIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUASW52YWxpZCB2YWx1ZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGZvciAiJXMiIHN0b3JhZ2UgZW5naW5lIGFuZCBkZXZpY2UgdHlwZSAlZCBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZTogJS4xZgBFcnJvciB3aGlsZSByZWFkaW5nIGZyb20gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGUuAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBteXNxbC5lbmdpbmVfY29zdCB0YWJsZS4ARmFpbGVkIHRvIG9wZW4gb3B0aW1pemVyIGNvc3QgY29uc3RhbnQgdGFibGVzAFVuc3VwcG9ydGVkIG5vbi1pZ25vcmFibGUgZXZlbnQgZmVkIGludG8gdGhlIGV2ZW50IHN0cmVhbS4AR1RJRF9MT0dfRVZFTlQsIEdUSURfVEFHR0VEX0xPR19FVkVOVCBvciBBTk9OWU1PVVNfR1RJRF9MT0dfRVZFTlQgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSAlcy4AUVVFUlkoQkVHSU4pIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gaW4gdGhlIG1pZGRsZSBvZiBhICVzLgBRVUVSWShDT01NSVQgb3IgUk9MTEJBQ0spIG9yIFhJRF9MT0dfRVZFTlQgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSAlcy4AUVVFUlkoWEEgUk9MTEJBQ0spIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV4ZWN1dGlvbiBmYWlsZWQsIGZhaWxlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV4ZWN1dGlvbiBmYWlsZWQsIHVzZXIgbm8gbG9uZ2VyIGhhcyBFVkVOVCBwcml2aWxlZ2UuAEV2ZW50IFNjaGVkdWxlcjogJXNlcnJvciBkdXJpbmcgY29tcGlsYXRpb24gb2YgJXMuJXMARXZlbnQgU2NoZWR1bGVyOiBEcm9wcGluZyAlcy4lcwBOZGIgc2NoZW1hWyVzLiVzXTogJXMASW4gUkJSIG1vZGUsIFJlcGxpY2EgcmVjZWl2ZWQgaW5jb21wYXRpYmxlIERFQ0lNQUwgZmllbGQgKG9sZC1zdHlsZSBkZWNpbWFsIGZpZWxkKSBmcm9tIFNvdXJjZSB3aGlsZSBjcmVhdGluZyBjb252ZXJzaW9uIHRhYmxlLiBQbGVhc2UgY29uc2lkZXIgY2hhbmdpbmcgZGF0YXR5cGUgb24gU291cmNlIHRvIG5ldyBzdHlsZSBkZWNpbWFsIGJ5IGV4ZWN1dGluZyBBTFRFUiBjb21tYW5kIGZvciBjb2x1bW4gTmFtZTogJXMuJXMuJXMuAHJvb3RAbG9jYWxob3N0IGlzIGNyZWF0ZWQgd2l0aCBhbiBlbXB0eSBwYXNzd29yZCAhIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgb2ZmIHRoZSAtLWluaXRpYWxpemUtaW5zZWN1cmUgb3B0aW9uLgBBIHRlbXBvcmFyeSBwYXNzd29yZCBpcyBnZW5lcmF0ZWQgZm9yIHJvb3RAbG9jYWxob3N0OiAlcwBGYWlsZWQgdG8gb3BlbiB0aGUgYm9vdHN0cmFwIGZpbGUgJXMAQm9vdHN0cmFwcGluZyBjb21wbGV0ZQAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgaGFzIGZpbGVzIGluIGl0LiBBYm9ydGluZy4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBvbiBhbiBleGlzdGluZyBkYXRhIGRpcmVjdG9yeS4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGV4aXN0cyBhbmQgdGhlIHBhdGggaXMgdG9vIGxvbmcuIEFib3J0aW5nLgAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBub3Qgd3JpdGFibGUuIEFib3J0aW5nLgBDcmVhdGluZyB0aGUgZGF0YSBkaXJlY3RvcnkgJXMAU3RhcnQgYmlubG9nX2R1bXAgdG8gc291cmNlX3RocmVhZF9pZCgldSkgcmVwbGljYV9zZXJ2ZXIoJXUpLCBwb3MoJXMsICVsbHUpAHNvdXJjZSBzZW5kcyBoZWFydGJlYXQgbWVzc2FnZQB0aGUgcmVzdCBvZiBoZWFydGJlYXQgaW5mbyBza2lwcGVkIC4uLgBTb3VyY2UgaXMgY29uZmlndXJlZCB0byBsb2cgcmVwbGljYXRpb24gZXZlbnRzIHdpdGggY2hlY2tzdW0sIGJ1dCB3aWxsIG5vdCBzZW5kIHN1Y2ggZXZlbnRzIHRvIHJlcGxpY2FzIHRoYXQgY2Fubm90IHByb2Nlc3MgdGhlbQBOREI6IFF1ZXJ5ICclcycgZmFpbGVkLCBlcnJvcjogJWQ6ICVzAEtpbGxpbmcgdGhyZWFkICVsdQBQbHVnaW4gJXMgaXMgZGVpbml0aWFsaXppbmcgYSB0aHJlYWQgYnV0IGxlZnQgYSBzZXNzaW9uIGF0dGFjaGVkLiBEZXRhY2hpbmcgaXQgZm9yY2VmdWxseS4ARmFpbGVkIHRvIGRldGFjaCB0aGUgc2Vzc2lvbi4AQ2xvc2VkIGZvcmNlZnVsbHkgJXUgc2Vzc2lvbiVzIGxlZnQgb3BlbmVkIGJ5IHBsdWdpbiAlcwBGYWlsZWQgdG8gZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgdGhyZWFkcwBQbHVnaW4gJXMgZGlkIG5vdCBkZWluaXRpYWxpemUgJXUgdGhyZWFkcwBLaWxsZWQgJXUgdGhyZWFkcyBvZiBwbHVnaW4gJXMATkRCIFJlcGxpY2EgOiBDb3VsZCBub3QgZGV0ZXJtaW5lIG1heGltdW0gcmVwbGljYXRlZCBlcG9jaCBmcm9tICVzLiVzIGF0IFJlcGxpY2Egc3RhcnQsIGVycm9yICV1ICVzAE5EQiBSZXBsaWNhIDogTWF4UmVwbGljYXRlZEVwb2NoIHNldCB0byAlbGx1ICgldS8ldSkgYXQgUmVwbGljYSBzdGFydABOREI6IE5vZGVJRCBpcyAlbHUsIG1hbmFnZW1lbnQgc2VydmVyICclczolbHUnAHRpZCAldTogbm9kZVsldV0gdHJhbnNhY3Rpb25faGludD0ldSwgdHJhbnNhY3Rpb25fbm9faGludD0ldQBOREIgSW50ZXJuYWwgZXJyb3I6IERlZmF1bHQgdmFsdWVzIGRpZmZlciBmb3IgY29sdW1uICV1LCBuZGJfZGVmYXVsdDogJWQATkRCIEludGVybmFsIGVycm9yOiBDb2x1bW4gJXUgaGFzIG5hdGl2ZSBkZWZhdWx0LCBidXQgc2hvdWxkbid0LiBGbGFncz0ldSwgdHlwZT0ldQBmaWVsZFsgbmFtZTogJyVzJywgdHlwZTogJXUsIHJlYWxfdHlwZTogJXUsIGZsYWdzOiAweCV4LCBpc19udWxsOiAlZF0AbmRiQ29sW25hbWU6ICclcycsIHR5cGU6ICV1LCBjb2x1bW5fbm86ICVkLCBudWxsYWJsZTogJWRdAGZpeF91bmlxdWVfaW5kZXhfYXR0cl9vcmRlcjogbXlfbWFsbG9jKCV1KSBmYWlsdXJlAE5EQiBSZXBsaWNhIDogTWFsZm9ybWVkIGV2ZW50IHJlY2VpdmVkIG9uIHRhYmxlICVzIGNhbm5vdCBwYXJzZS4gIFN0b3BwaW5nIFJlcGxpY2EuAE5EQiBSZXBsaWNhIDogQ29uZmxpY3QgZnVuY3Rpb24gJXMgZGVmaW5lZCBvbiB0YWJsZSAlcyByZXF1aXJlcyBuZGJfcmVwbGljYV9jb25mbGljdF9yb2xlIHZhcmlhYmxlIHRvIGJlIHNldC4gIFN0b3BwaW5nIHJlcGxpY2EuAE5EQiBSZXBsaWNhIDogVHJhbnNhY3Rpb25hbCBjb25mbGljdCBkZXRlY3Rpb24gZGVmaW5lZCBvbiB0YWJsZSAlcywgYnV0IGV2ZW50cyByZWNlaXZlZCB3aXRob3V0IHRyYW5zYWN0aW9uIGlkcy4gIENoZWNrIC0tbmRiLWxvZy10cmFuc2FjdGlvbi1pZCBzZXR0aW5nIG9uIHVwc3RyZWFtIENsdXN0ZXIuAE5EQiBSZXBsaWNhIDogQmlubG9nIGV2ZW50IG9uIHRhYmxlICVzIG1pc3NpbmcgaW5mbyBuZWNlc3NhcnkgZm9yIGNvbmZsaWN0IGRldGVjdGlvbi4gIENoZWNrIGJpbmxvZyBmb3JtYXQgb3B0aW9ucyBvbiB1cHN0cmVhbSBjbHVzdGVyLgBFcnJvciAlbHUgaW4gcmVhZEF1dG9JbmNyZW1lbnRWYWx1ZSgpOiAlcwBmb3VuZCB1bmNvbW1pdHRlZCBhdXRvY29tbWl0K3Jid3IgdHJhbnNhY3Rpb24sIGNvbW1pdCBzdGF0dXM6ICVkAE5kYiByZXBsaWNhIHJldHJpZWQgdHJhbnNhY3Rpb24gJXUgdGltZShzKSBpbiB2YWluLiAgR2l2aW5nIHVwLgBFcnJvciAlbHUgaW4gOjp1cGRhdGVfY3JlYXRlX2luZm8oKTogJXMATkRCOiBhbGxvY2F0aW5nIHRhYmxlIHNoYXJlIGZvciAlcyBmYWlsZWQATkRCIEJpbmxvZzogKCVkKSVzAE5EQiBCaW5sb2c6IENSRUFURSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogRkFJTEVEIENSRUFURSBUQUJMRSBldmVudCBvcGVyYXRpb25zLiBFdmVudDogJXMATkRCIEJpbmxvZzogUkVOQU1FIEV2ZW50OiAlcwBOREIgQmlubG9nOiBGQUlMRUQgY3JlYXRlIGV2ZW50IG9wZXJhdGlvbnMgZHVyaW5nIFJFTkFNRS4gRXZlbnQgJXMAVW5leHBlY3RlZCByZW5hbWUgY2FzZSBkZXRlY3RlZCwgc3FsX2NvbW1hbmQ6ICVkAEVycm9yICVsdSBpbiA6OmdldF9hdXRvX2luY3JlbWVudCgpOiAlcwBDYWxsaW5nIG5kYmNsdXN0ZXJfY3JlYXRlX2JpbmxvZ19zZXR1cCglcykgaW4gOjpvcGVuAHRhYmxlICclcycgb3BlbmVkIHJlYWQgb25seQBOREI6ICctLWluaXRpYWxpemUnIC0+IG5kYmNsdXN0ZXIgcGx1Z2luIGRpc2FibGVkAE5EQjogQ2hhbmdlZCBnbG9iYWwgdmFsdWUgb2YgYmlubG9nX2Zvcm1hdCBmcm9tIFNUQVRFTUVOVCB0byBNSVhFRABOREJfU0hBUkU6IHRyYWlsaW5nIHNoYXJlICVzLCByZWxlYXNlZCBieSBjbG9zZV9jYWNoZWRfdGFibGVzAE5EQl9TSEFSRTogJXMgYWxyZWFkeSBleGlzdHMgdXNlX2NvdW50PSVkLiBNb3ZpbmcgYXdheSBmb3Igc2FmZXR5LCBidXQgcG9zc2libGUgbWVtbGVhay4AaGFuZGxlX3RyYWlsaW5nX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfZ2V0X3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfcmVhbF9mcmVlX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfcmVhbF9mcmVlX3NoYXJlOiAlcywgc3RpbGwgb3BlbiAtIGlnbm9yZWQgJ2ZyZWUnIChsZWFrZWQ/KQBuZGJjbHVzdGVyX2ZyZWVfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9tYXJrX3NoYXJlX2Ryb3BwZWQ6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9tYXJrX3NoYXJlX2Ryb3BwZWQ6IGRlc3Ryb3lzIHNoYXJlICVzAENvdWxkIG5vdCBhbGxvY2F0ZSBUaGRfbmRiIG9iamVjdABOREIgQmlubG9nOiBOZGIgdGFibGVzIGluaXRpYWxseSByZWFkIG9ubHkuAG5kYiB1dGlsIHRocmVhZDogbWFsbG9jIGZhaWx1cmUsIHF1ZXJ5IGNhY2hlIG5vdCBtYWludGFpbmVkIHByb3Blcmx5AFRyeWluZyB0byBzZXQgbmRiX3JlY3ZfdGhyZWFkX2NwdV9tYXNrIHRvIGlsbGVnYWwgdmFsdWUgPSAlcywgaWdub3JlZABUcnlpbmcgdG8gc2V0IHRvbyBtYW55IENQVSdzIGluIG5kYl9yZWN2X3RocmVhZF9jcHVfbWFzaywgaWdub3JlZCB0aGlzIHZhcmlhYmxlLCBlcnJvbmV1cyB2YWx1ZSA9ICVzAGRidWdfY2hlY2tfc2hhcmVzIG9wZW46ACAgJXMuJXM6IHN0YXRlOiAlcygldSkgdXNlX2NvdW50OiAldQBkYnVnX2NoZWNrX3NoYXJlcyBkcm9wcGVkOgBJbnZhbGlkIChvbGQ/KSB0YWJsZSBvciBkYXRhYmFzZSBuYW1lICclcycAUmVjb3ZlcmluZyBhZnRlciBhIGNyYXNoIHVzaW5nICVzAENhbm5vdCBwZXJmb3JtIGF1dG9tYXRpYyBjcmFzaCByZWNvdmVyeSB3aGVuIC0tdGMtaGV1cmlzdGljLXJlY292ZXIgaXMgdXNlZABCYWQgbWFnaWMgaGVhZGVyIGluIHRjIGxvZwBSZWNvdmVyeSBmYWlsZWQhIFlvdSBtdXN0IGVuYWJsZSBleGFjdGx5ICVkIHN0b3JhZ2UgZW5naW5lcyB0aGF0IHN1cHBvcnQgdHdvLXBoYXNlIGNvbW1pdCBwcm90b2NvbABDcmFzaCByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciBjb3JyZWN0IHRoZSBwcm9ibGVtIChpZiBpdCdzLCBmb3IgZXhhbXBsZSwgb3V0IG9mIG1lbW9yeSBlcnJvcikgYW5kIHJlc3RhcnQsIG9yIGRlbGV0ZSB0YyBsb2cgYW5kIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXI9e2NvbW1pdHxyb2xsYmFja30ASGV1cmlzdGljIGNyYXNoIHJlY292ZXJ5IG1vZGUASGV1cmlzdGljIGNyYXNoIHJlY292ZXJ5IGZhaWxlZABQbGVhc2UgcmVzdGFydCBteXNxbGQgd2l0aG91dCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyAEZhaWxlZCB0byBjcmVhdGUgb3IgcmVjb3ZlciByZXBsaWNhdGlvbiBpbmZvIHJlcG9zaXRvcmllcy4ARGV0ZWN0ZWQgbWlzY29uZmlndXJhdGlvbjogcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgY29uZmlndXJlZCB3aXRoIEFVVE9fUE9TSVRJT04gPSAxLCBidXQgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIC0tZ3RpZC1tb2RlPW9mZi4gRWl0aGVyIHJlY29uZmlndXJlIHJlcGxpY2F0aW9uIHVzaW5nIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0FVVE9fUE9TSVRJT04gPSAwIEZPUiBDSEFOTkVMICclLjE5MnMnLCBvciBjaGFuZ2UgR1RJRF9NT0RFIHRvIHNvbWUgdmFsdWUgb3RoZXIgdGhhbiBPRkYsIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYSByZWNlaXZlciB0aHJlYWQuAFJlcGxpY2E6IENvdWxkIG5vdCBzdGFydCByZXBsaWNhIGZvciBjaGFubmVsICclcycuIG9wZXJhdGlvbiBkaXNjb250aW51ZWQAUmVwbGljYTogQ291bGQgbm90IHN0b3AgcmVwbGljYSBmb3IgY2hhbm5lbCAnJXMnIG9wZXJhdGlvbiBkaXNjb250aW51ZWQARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBDb3VsZCBub3QgbG9jYXRlIHJvdGF0ZSBldmVudCBmcm9tIHRoZSBzb3VyY2UuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogRXJyb3IgcmVhZGluZyBldmVudHMgZnJvbSByZWxheSBsb2c6ICVkAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogRXJyb3Igd2hpbGUgZnJlZWluZyBJT19DQUNIRSBvYmplY3QAUmVsYXkgbG9nIHJlY292ZXJ5IHNraXBwZWQgZm9yIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogJXMARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBDb3VsZCBub3QgcmVhZCByZWxheSBsb2cgaW5kZXggZmlsZSBkdWUgdG8gYW4gSU8gZXJyb3IuAFJlY292ZXJ5IGZyb20gc291cmNlIHBvcyAlbGQgYW5kIGZpbGUgJXMlcy4gUHJldmlvdXMgcmVsYXkgbG9nIHBvcyBhbmQgcmVsYXkgbG9nIGZpbGUgaGFkIGJlZW4gc2V0IHRvICVsbGQsICVzIHJlc3BlY3RpdmVseS4ARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiByZXBsaWNhdGVfc2FtZV9zZXJ2ZXJfaWQgaXMgaW4gdXNlIGFuZCBzcWwgdGhyZWFkJ3MgcG9zaXRpb25zIGFyZSBub3QgaW5pdGlhbGl6ZWQsIGhlbmNlIHJlbGF5IGxvZyByZWNvdmVyeSBjYW5ub3QgaGFwcGVuLgBNVEEgcmVjb3Zlcnk6IHN0YXJ0aW5nIGNvb3JkaW5hdG9yIHRocmVhZCB0byBmaWxsIE1UQSBnYXBzLgBNVEEgcmVjb3Zlcnk6IGZhaWxlZCB0byBzdGFydCB0aGUgY29vcmRpbmF0b3IgdGhyZWFkLiBDaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAE1UQSByZWNvdmVyeTogYXV0b21hdGljIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIHRoZSByZXBsaWNhIHNlcnZlciBoYWQgc3RvcHBlZCBkdWUgdG8gYW4gZXJyb3IgZHVyaW5nIGFuIGVhcmxpZXIgc2Vzc2lvbiBvciByZWxheSBsb2dzIGFyZSBjb3JydXB0ZWQuRml4IHRoZSBjYXVzZSBvZiB0aGUgcmVwbGljYSBzaWRlIGVycm9yIGFuZCByZXN0YXJ0IHRoZSByZXBsaWNhIHNlcnZlciBvciBjb25zaWRlciB1c2luZyBSRVNFVCBSRVBMSUNBLgBGYWlsZWQgdG8gb3BlbiB0aGUgcmVsYXkgbG9nICclcycgKHJlbGF5X2xvZ19wb3MgJXMpLgBNVEEgcmVjb3Zlcnk6IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuAFNlcnZlciBpZCBub3Qgc2V0LCB3aWxsIG5vdCBzdGFydCByZXBsaWNhJXMAQ2FuJ3QgY3JlYXRlIHJlcGxpY2EgdGhyZWFkJXMuAFRoZSByZXBsaWNhIElPIHRocmVhZCVzIHdhcyBraWxsZWQgd2hpbGUgZXhlY3V0aW5nIGluaXRpYWxpemF0aW9uIHF1ZXJ5ICclcycAVGhlIHNvdXJjZSdzIFVVSUQgaGFzIGNoYW5nZWQsIGFsdGhvdWdoIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIHlvdSBoYXZlIGNoYW5nZWQgaXQgbWFudWFsbHkuIFRoZSBvbGQgVVVJRCB3YXMgJXMuAEZvdW5kIGEgc291cmNlIHdpdGggTXlTUUwgc2VydmVyIHZlcnNpb24gb2xkZXIgdGhhbiA1LjAuIFdpdGggY2hlY2tzdW1zIGVuYWJsZWQgb24gdGhlIHJlcGxpY2EsIHJlcGxpY2F0aW9uIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseS4gVG8gZW5zdXJlIGNvcnJlY3QgcmVwbGljYXRpb24sIHJlc3RhcnQgdGhlIHJlcGxpY2Egc2VydmVyIHdpdGggLS1yZXBsaWNhX3NxbF92ZXJpZnlfY2hlY2tzdW09MC4AIlNFTEVDVCBVTklYX1RJTUVTVEFNUCgpIiBmYWlsZWQgb24gc291cmNlLCBkbyBub3QgdHJ1c3QgY29sdW1uIFNlY29uZHNfQmVoaW5kX1NvdXJjZSBvZiBTSE9XIFJFUExJQ0EgU1RBVFVTLiBFcnJvcjogJXMgKCVkKQBGYWlsZWQgdG8gZmx1c2ggY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5LgBUaGUgbGVuZ3RoIG9mIHJlcG9ydF9ob3N0IGlzICV6dS4gSXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCBsZW5ndGgoJWQpLCBzbyB0aGlzIHJlcGxpY2EgY2Fubm90IGJlIHJlZ2lzdGVyZWQgdG8gdGhlIHNvdXJjZSVzLgBUaGUgbGVuZ3RoIG9mIHJlcG9ydF91c2VyIGlzICV6dS4gSXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCBsZW5ndGgoJWQpLCBzbyB0aGlzIHJlcGxpY2EgY2Fubm90IGJlIHJlZ2lzdGVyZWQgdG8gdGhlIHNvdXJjZSVzLgBUaGUgbGVuZ3RoIG9mIHJlcG9ydF9wYXNzd29yZCBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4ARXJyb3Igb24gJXM6ICVkICAlcywgd2lsbCByZXRyeSBpbiAlZCBzZWNzAEVycm9yIHJlYWRpbmcgcGFja2V0IGZyb20gc2VydmVyJXM6ICVzIChzZXJ2ZXJfZXJybm89JWQpAFJlcGxpY2ElczogcmVjZWl2ZWQgZW5kIHBhY2tldCBmcm9tIHNlcnZlciBkdWUgdG8gZHVtcCB0aHJlYWQgYmVpbmcga2lsbGVkIG9uIHNvdXJjZS4gRHVtcCB0aHJlYWRzIGFyZSBraWxsZWQgZm9yIGV4YW1wbGUgZHVyaW5nIHNvdXJjZSBzaHV0ZG93biwgZXhwbGljaXRseSBieSBhIHVzZXIsIG9yIHdoZW4gdGhlIHNvdXJjZSByZWNlaXZlcyBhIGJpbmxvZyBzZW5kIHJlcXVlc3QgZnJvbSBhIGR1cGxpY2F0ZSBzZXJ2ZXIgVVVJRCA8JXM+IDogRXJyb3IgJXMATXVsdGktdGhyZWFkZWQgcmVwbGljYSBzdGF0aXN0aWNzJXM6IHNlY29uZHMgZWxhcHNlZCA9ICVsdTsgZXZlbnRzIGFzc2lnbmVkID0gJWxsdTsgd29ya2VyIHF1ZXVlcyBmaWxsZWQgb3ZlciBvdmVycnVuIGxldmVsID0gJWx1OyB3YWl0ZWQgZHVlIGEgV29ya2VyIHF1ZXVlIGZ1bGwgPSAlbHU7IHdhaXRlZCBkdWUgdGhlIHRvdGFsIHNpemUgPSAlbHU7IHdhaXRlZCBhdCBjbG9jayBjb25mbGljdHMgPSAlbGx1IHdhaXRlZCAoY291bnQpIHdoZW4gV29ya2VycyBvY2N1cGllZCA9ICVsdSB3YWl0ZWQgd2hlbiBXb3JrZXJzIG9jY3VwaWVkID0gJWxsdQBSZXBsaWNhJXM6IE1UQSBSZWNvdmVyeSBoYXMgY29tcGxldGVkIGF0IHJlbGF5IGxvZyAlcywgcG9zaXRpb24gJWxsdSBzb3VyY2UgbG9nICVzLCBwb3NpdGlvbiAlbGx1LgBFcnJvciBpbml0aWFsaXppbmcgcmVsYXkgbG9nIHBvc2l0aW9uJXM6ICVzAFJlcGxpY2EgSS9PIHRocmVhZCVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcscmVwbGljYXRpb24gc3RhcnRlZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBSZXBsaWNhIEkvTyB0aHJlYWQlcyBraWxsZWQgd2hpbGUgY29ubmVjdGluZyB0byBzb3VyY2UAUmVwbGljYSBJL08gdGhyZWFkIGNvdWxkbid0IHJlZ2lzdGVyIG9uIHNvdXJjZQBGb3JjaW5nIHRvIHJlY29ubmVjdCByZXBsaWNhIEkvTyB0aHJlYWQlcwBGYWlsZWQgb24gcmVxdWVzdF9kdW1wKCklcwBMb2cgZW50cnkgb24gc291cmNlIGlzIGxvbmdlciB0aGFuIHJlcGxpY2FfbWF4X2FsbG93ZWRfcGFja2V0ICglbHUpIG9uIHJlcGxpY2EuIElmIHRoZSBlbnRyeSBpcyBjb3JyZWN0LCByZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBhIGhpZ2hlciB2YWx1ZSBvZiByZXBsaWNhX21heF9hbGxvd2VkX3BhY2tldABTdG9wcGluZyByZXBsaWNhIEkvTyB0aHJlYWQgZHVlIHRvIG91dC1vZi1tZW1vcnkgZXJyb3IgZnJvbSBzb3VyY2UAUmVwbGljYSBJL08gdGhyZWFkIGFib3J0ZWQgd2hpbGUgd2FpdGluZyBmb3IgcmVsYXkgbG9nIHNwYWNlAFJlcGxpY2EgSS9PIHRocmVhZCBleGl0aW5nJXMsIHJlYWQgdXAgdG8gbG9nICclcycsIHBvc2l0aW9uICVzAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgaW5pdGlhbGl6YXRpb24lcwBSZXBsaWNhOiBNVEEgZ3JvdXAgcmVjb3ZlcnkgYXBwbGllciBtZXRhZGF0YSBiYXNlZCBvbiBXb3JrZXItSWQgJWx1LCBncm91cF9yZWxheV9sb2dfbmFtZSAlcywgZ3JvdXBfcmVsYXlfbG9nX3BvcyAlbGx1IGdyb3VwX3NvdXJjZV9sb2dfbmFtZSAlcywgZ3JvdXBfc291cmNlX2xvZ19wb3MgJWxsdQBFcnJvciBsb29raW5nIGZvciAlcy4AUmVwbGljYTogTVRBIGdyb3VwIHJlY292ZXJ5IGFwcGxpZXIgbWV0YWRhdGEgZ3JvdXBfc291cmNlX2xvZ19uYW1lICVzLCBldmVudF9zb3VyY2VfbG9nX3BvcyAlbGx1LgBFcnJvciBsb29raW5nIGZvciBmaWxlIGFmdGVyICVzLgBUaGlzIGFuIGVycm9yIGNudCAhPSBtdGFfY2hlY2twb2ludF9wZXJpb2QARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciB0aHJlYWQgY3JlYXRpb24lcwBGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIHRocmVhZCBjcmVhdGlvbiVzIChlcnJubz0gJWQpAEZhaWxlZCB0byBpbml0IHBhcnRpdGlvbnMgaGFzaABSZXBsaWNhIFNRTCB0aHJlYWQgOiBOREIgOiBUYWJsZXMgbm90IGF2YWlsYWJsZSBhZnRlciAlbHUgc2Vjb25kcy4gQ29uc2lkZXIgaW5jcmVhc2luZyAtLW5kYi13YWl0LXNldHVwIHZhbHVlAFJlcGxpY2EgU1FMIHRocmVhZCVzIGluaXRpYWxpemVkLCBzdGFydGluZyByZXBsaWNhdGlvbiBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcywgcmVsYXkgbG9nICclcycgcG9zaXRpb246ICVzACdTUUxfUkVQTElDQV9TS0lQX0NPVU5URVI9JWxkJyBleGVjdXRlZCBhdCByZWxheV9sb2dfZmlsZT0nJXMnLCByZWxheV9sb2dfcG9zPSclbGQnLCBzb3VyY2VfbG9nX25hbWU9JyVzJywgc291cmNlX2xvZ19wb3M9JyVsZCcgYW5kIG5ldyBwb3NpdGlvbiBhdCByZWxheV9sb2dfZmlsZT0nJXMnLCByZWxheV9sb2dfcG9zPSclbGQnLCBzb3VyY2VfbG9nX25hbWU9JyVzJywgc291cmNlX2xvZ19wb3M9JyVsZCcgAFJlcGxpY2EgKGFkZGl0aW9uYWwgaW5mbyk6ICVzIEVycm9yX2NvZGU6IE1ZLSUwNmQAUmVwbGljYTogJXMgRXJyb3JfY29kZTogTVktJTA2ZABFcnJvciBsb2FkaW5nIHVzZXItZGVmaW5lZCBsaWJyYXJ5LCByZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gSW5zdGFsbCB0aGUgbWlzc2luZyBsaWJyYXJ5LCBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdpdGggIlNUQVJUIFJFUExJQ0EiLiBXZSBzdG9wcGVkIGF0IGxvZyAnJXMnIHBvc2l0aW9uICVzAEVycm9yIHJ1bm5pbmcgcXVlcnksIHJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBGaXggdGhlIHByb2JsZW0sIGFuZCByZXN0YXJ0IHRoZSByZXBsaWNhIFNRTCB0aHJlYWQgd2l0aCAiU1RBUlQgUkVQTElDQSIuIFdlIHN0b3BwZWQgYXQgbG9nICclcycgcG9zaXRpb24gJXMAUmVwbGljYSBTUUwgdGhyZWFkJXMgZXhpdGluZywgcmVwbGljYXRpb24gc3RvcHBlZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBSZWFkIGludmFsaWQgZXZlbnQgZnJvbSBzb3VyY2U6ICclcycsIHNvdXJjZSBjb3VsZCBiZSBjb3JydXB0IGJ1dCBhIG1vcmUgbGlrZWx5IGNhdXNlIG9mIHRoaXMgaXMgYSBidWcAVGhlIHF1ZXVlIGV2ZW50IGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGl0cyBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuAEFuIHVuZXhwZWN0ZWQgZXZlbnQgc2VxdWVuY2Ugd2FzIGRldGVjdGVkIGJ5IHRoZSBJTyB0aHJlYWQgd2hpbGUgcXVldWluZyB0aGUgZXZlbnQgcmVjZWl2ZWQgZnJvbSBzb3VyY2UgJyVzJyBiaW5hcnkgbG9nIGZpbGUsIGF0IHBvc2l0aW9uICVsbHUuACclcycgY2FuIG5vdCBiZSB1c2VkIGFzIGNsaWVudCBjaGFyYWN0ZXIgc2V0LiAnJXMnIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0IGNsaWVudCBjaGFyYWN0ZXIgc2V0IHdoaWxlIGNvbm5lY3RpbmcgdG8gc291cmNlLgBSZXBsaWNhJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyxyZXBsaWNhdGlvbiByZXN1bWVkIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzAG5leHQgbG9nICclcycgaXMgYWN0aXZlAG5leHQgbG9nICclcycgaXMgbm90IGFjdGl2ZQBSZXBsaWNhIFNRTCB0aHJlYWQlczogSS9PIGVycm9yIHJlYWRpbmcgZXZlbnQgKGVycm5vOiAlZCAgY3VyX2xvZy0+ZXJyb3I6ICVkKQBFcnJvciByZWFkaW5nIHJlbGF5IGxvZyBldmVudCVzOiAlcwAnQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyVzIGV4ZWN1dGVkJy4gUHJldmlvdXMgc3RhdGUgc291cmNlX2hvc3Q9JyVzJywgc291cmNlX3BvcnQ9ICV1LCBzb3VyY2VfbG9nX2ZpbGU9JyVzJywgc291cmNlX2xvZ19wb3M9ICVsZCwgc291cmNlX2JpbmQ9JyVzJy4gTmV3IHN0YXRlIHNvdXJjZV9ob3N0PSclcycsIHNvdXJjZV9wb3J0PSAldSwgc291cmNlX2xvZ19maWxlPSclcycsIHNvdXJjZV9sb2dfcG9zPSAlbGQsIHNvdXJjZV9iaW5kPSclcycuAFJlcGxpY2E6IENhbm5vdCBjcmVhdGUgbmV3IGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIHdoZW4gcmVwb3NpdG9yaWVzIGFyZSBvZiB0eXBlIEZJTEUuIENvbnZlcnQgcmVwbGljYSByZXBvc2l0b3JpZXMgdG8gVEFCTEUgdG8gcmVwbGljYXRlIGZyb20gbXVsdGlwbGUgc291cmNlcy4AbG9nICVzIGxpc3RlZCBpbiB0aGUgaW5kZXgsIGJ1dCBmYWlsZWQgdG8gc3RhdC4AQ291bGQgbm90IGZpbmQgZmlyc3QgbG9nIHdoaWxlIGNvdW50aW5nIHJlbGF5IGxvZyBzcGFjZS4AVW5hYmxlIHRvIHVzZSByZXBsaWNhJ3MgdGVtcG9yYXJ5IGRpcmVjdG9yeSAnJXMnLgBQYXRoICclcycgaXMgYSBkaXJlY3RvcnkgbmFtZSwgcGxlYXNlIHNwZWNpZnkgYSBmaWxlIG5hbWUgZm9yIC0tcmVsYXktbG9nIG9wdGlvbi4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAtLXJlbGF5LWxvZy1pbmRleCBvcHRpb24uAE5laXRoZXIgLS1yZWxheS1sb2cgbm9yIC0tcmVsYXktbG9nLWluZGV4IHdlcmUgdXNlZDsgc28gcmVwbGljYXRpb24gbWF5IGJyZWFrIHdoZW4gdGhpcyBNeVNRTCBzZXJ2ZXIgYWN0cyBhcyBhIHJlcGxpY2EgYW5kIGhhcyBoaXMgaG9zdG5hbWUgY2hhbmdlZCEhIFBsZWFzZSB1c2UgJy0tcmVsYXktbG9nPSVzJyB0byBhdm9pZCB0aGlzIHByb2JsZW0uAEZhaWxlZCBpbiBvcGVuX2luZGV4X2ZpbGUoKSBjYWxsZWQgZnJvbSBSZWxheV9sb2dfaW5mbzo6cmxpX2luaXRfaW5mbygpLgBGYWlsZWQgaW4gaW5pdF9ndGlkX3NldHMoKSBjYWxsZWQgZnJvbSBSZWxheV9sb2dfaW5mbzo6cmxpX2luaXRfaW5mbygpLgBGYWlsZWQgaW4gb3Blbl9sb2coKSBjYWxsZWQgZnJvbSBSZWxheV9sb2dfaW5mbzo6cmxpX2luaXRfaW5mbygpLgBFcnJvciB3cml0aW5nIHJlbGF5IGxvZyBjb25maWd1cmF0aW9uLgBnZXRfbmRiX2Jsb2JzX3ZhbHVlOiBteV9tYWxsb2MoJXUpIGZhaWxlZABOREI6IFRocmVhZCBpZCAldSB0aW1lZCBvdXQgKDMwcykgd2FpdGluZyBmb3IgZXBvY2ggJXUvJXUgdG8gYmUgaGFuZGxlZC4gIFByb2dyZXNzIDogJXUvJXUgLT4gJXUvJXUuAE5EQjogSW5jb25zaXN0ZW5jeSBkZXRlY3RlZCBpbiBkaXN0cmlidXRlZCBwcml2aWxlZ2UgdGFibGVzLiBUYWJsZSAnJXMuJXMnIGlzIG5vdCBkaXN0cmlidXRlZABOREI6IENyZWF0aW5nICVzLiVzAE5EQjogRmx1c2hpbmcgJXMuJXMATkRCOiBDbGVhbmluZyBzdHJheSB0YWJsZXMgZnJvbSBkYXRhYmFzZSAnJXMnAE5EQjogRGlzY292ZXJlZCBtaXNzaW5nIGRhdGFiYXNlICclcycATkRCOiBEaXNjb3ZlcmVkIHJlbWFpbmluZyBkYXRhYmFzZSAnJXMnAE5EQjogbmRiY2x1c3Rlcl9maW5kX2FsbF9kYXRhYmFzZXMgcmV0cnk6ICV1IC0gJXMATkRCOiBuZGJjbHVzdGVyX2ZpbmRfYWxsX2RhdGFiYXNlcyBmYWlsOiAldSAtICVzAE5EQjogc2tpcHBpbmcgc2V0dXAgdGFibGUgJXMuJXMsIGluIHN0YXRlICVkAE5EQjogZmFpbGVkIHRvIHNldHVwIHRhYmxlICVzLiVzLCBlcnJvcjogJWQsICVzAE5EQjogbWlzc2luZyBmcm0gZm9yICVzLiVzLCBkaXNjb3ZlcmluZy4uLgBOREI6IG1pc21hdGNoIGluIGZybSBmb3IgJXMuJXMsIGRpc2NvdmVyaW5nLi4uAG5kYl9iaW5sb2dfc2V0dXA6IENsZWFuIHVwIGxlZnRvdmVycwBOREIgJXM6IHdhaXRpbmcgbWF4ICV1IHNlYyBmb3IgJXMgJXMuICBlcG9jaHM6ICgldS8ldSwldS8ldSwldS8ldSkgIGluamVjdG9yIHByb2NfaW5mbzogJXMATkRCICVzOiB3YWl0aW5nIG1heCAldSBzZWMgZm9yICVzICVzLiAgZXBvY2hzOiAoJXUvJXUsJXUvJXUsJXUvJXUpICBpbmplY3RvciBwcm9jX2luZm86ICVzIG1hcDogJXglMDh4AE5EQiAlczogZGlzdHJpYnV0aW5nICVzIHRpbWVkIG91dC4gSWdub3JpbmcuLi4ATkRCICVzOiBub3Qgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nICVzAE5EQjogZGlzdHJpYnV0ZWQgJXMuJXMoJXUvJXUpIHR5cGU6ICVzKCV1KSBxdWVyeTogJyVzJyB0byAleCUwOHgATkRCOiBkaXN0cmlidXRpb24gb2YgJXMuJXMoJXUvJXUpIHR5cGU6ICVzKCV1KSBxdWVyeTogJyVzJyAtIGNvbXBsZXRlIQBOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgZmFpbGVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCByZXBvcnRzIHN1YnNjcmliZSBmcm9tIG5vZGUgJWQsIHN1YnNjcmliZXIgYml0bWFzayAleCUwOHgATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIHJlcG9ydHMgdW5zdWJzY3JpYmUgZnJvbSBub2RlICVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBCaW5sb2c6IENvdWxkIG5vdCBkaXNjb3ZlciB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gbXlfZXJybm86ICVkAE5EQjogdW5rbm93biB2YWx1ZSBmb3IgYmlubG9nIHNpZ25hbGxpbmcgMHglWCwgJXMgbm90IGxvZ2dlZABOREI6IHJlcGx5IHRvICVzLiVzKCV1LyV1KSBmcm9tICVzIHRvICV4JTA4eABOREI6IENvdWxkIG5vdCByZWxlYXNlIHNsb2NrIG9uICclcy4lcycsIEVycm9yIGNvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiBzY2hlbWE6IENvdWxkIG5vdCBmaW5kIHRhYmxlICclcy4lcycgaW4gTkRCAE5EQjogRGlzY2FyZGluZyBldmVudC4uLm5vIG9iajogJXMgKCV1LyV1KQBOREI6IERpc2NhcmRpbmcgZXZlbnQuLi5rZXk6ICVzIG5vbiBtYXRjaGluZyBpZC92ZXJzaW9uIFsldS8ldV0gIT0gWyV1LyV1XQBOREI6IENMRUFSX1NMT0NLIGtleTogJXMoJXUvJXUpICV4JTA4eCwgZnJvbSAlcyB0byAleCUwOHgATkRCIEJpbmxvZzogU2tpcHBpbmcgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLgBOREIgQmlubG9nOiBoYW5kbGluZyBvbmxpbmUgYWx0ZXIvcmVuYW1lAE5EQiBCaW5sb2c6IEZhaWxlZCB0byByZS1vcGVuIHNoYWRvdyB0YWJsZSAlcy4lcwBOREIgQmlubG9nOiBoYW5kbGluZyBvbmxpbmUgYWx0ZXIvcmVuYW1lIGRvbmUATkRCIEJpbmxvZzogU2tpcHBpbmcgZHJvcCBvZiBsb2NhbGx5IGRlZmluZWQgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIABOREIgQmlubG9nOiBTa2lwcGluZyByZW5hbWluZyBsb2NhbGx5IGRlZmluZWQgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIABOREIgQmlubG9nOiBTa2lwcGluZyBkcm9wIGRhdGFiYXNlICclcycgc2luY2UgaXQgY29udGFpbmVkIGxvY2FsIHRhYmxlcyBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAAR290IGRpc3RfcHJpdiBldmVudDogJXMsIGZsdXNoaW5nIHByaXZpbGVnZXMATkRCOiBnb3Qgc2NoZW1hIGV2ZW50IG9uICVzLiVzKCV1LyV1KSBxdWVyeTogJyVzJyB0eXBlOiAlcyglZCkgbm9kZTogJXUgc2xvY2s6ICV4JTA4eABOREIgc2NoZW1hOiBTa2lwcGluZyBvbGQgc2NoZW1hIG9wZXJhdGlvbihSRU5BTUVfVEFCTEVfTkVXKSBvbiAlcy4lcwBOREIgU2NoZW1hIGRpc3Q6IGNsdXN0ZXIgZmFpbHVyZSBhdCBlcG9jaCAldS8ldS4ATkRCIEJpbmxvZzogbmRiIHRhYmxlcyBpbml0aWFsbHkgcmVhZCBvbmx5IG9uIHJlY29ubmVjdC4ATkRCIFNjaGVtYSBkaXN0OiB1bmtub3duIGV2ZW50ICV1LCBpZ25vcmluZy4uLgBOREIgQmlubG9nOiBPcGVuaW5nIG5kYl9iaW5sb2dfaW5kZXg6ICVkLCAnJXMnAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBsb2NrIHRhYmxlIG5kYl9iaW5sb2dfaW5kZXgATkRCIEJpbmxvZzogSW5qZWN0aW5nIHJhbmRvbSB3cml0ZSBmYWlsdXJlAE5EQiBCaW5sb2c6IEZhaWxlZCB3cml0aW5nIHRvIG5kYl9iaW5sb2dfaW5kZXggZm9yIGVwb2NoICV1LyV1ICBvcmlnX3NlcnZlcl9pZCAldSBvcmlnX2Vwb2NoICV1LyV1IHdpdGggZXJyb3IgJWQuAE5EQiBCaW5sb2c6IFdyaXRpbmcgcm93ICglcykgdG8gbmRiX2JpbmxvZ19pbmRleCAtICVzAE5EQiBCaW5sb2c6IEZhaWxlZCBjb21taXR0aW5nIHRyYW5zYWN0aW9uIHRvIG5kYl9iaW5sb2dfaW5kZXggd2l0aCBlcnJvciAlZC4ATkRCIEJpbmxvZzogRmFpbGVkIHdyaXRpbmcgdG8gbmRiX2JpbmxvZ19pbmRleCB0YWJsZSB3aGlsZSByZXRyeWluZyBhZnRlciBraWxsIGR1cmluZyBzaHV0ZG93bgBOREI6IHNlcnZlciBpZCBzZXQgdG8gemVybyAtIGNoYW5nZXMgbG9nZ2VkIHRvIGJpbiBsb2cgd2l0aCBzZXJ2ZXIgaWQgemVybyB3aWxsIGJlIGxvZ2dlZCB3aXRoIGFub3RoZXIgc2VydmVyIGlkIGJ5IHJlcGxpY2EgbXlzcWxkcwBOREI6IHNlcnZlciBpZCBwcm92aWRlZCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50ZWQgaW4gb3B0X3NlcnZlcl9pZF9iaXRzIG9yIGlzIHJlc2VydmVkAE5EQjogLS1uZGItbG9nLXRyYW5zYWN0aW9uLWlkIHJlcXVpcmVzIHYyIEJpbmxvZyByb3cgZXZlbnRzIGJ1dCBzZXJ2ZXIgaXMgdXNpbmcgdjEuAE5EQjogbmRiLWxvZy1hcHBseS1zdGF0dXMgZm9yY2luZyAlcy4lcyB0byBGVUxMIFVTRV9XUklURQBOREIgQmlubG9nOiAlcwAlcwAlcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiBQYXJzZSBlcnJvciBvbiBjb25mbGljdCBmbiA6ICVzAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyA6ICVzAE5EQiBCaW5sb2c6IEZhaWxlZCB0byBnZXQgdGFibGUgJXMgZnJvbSBuZGI6ICVzLCAlZABOREIgQmlubG9nOiBOT1QgbG9nZ2luZyAlcwBOREIgQmlubG9nOiBGQUlMRUQgQ1JFQVRFIChESVNDT1ZFUikgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IENSRUFURSAoRElTQ09WRVIpIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBESVNDT1ZFUiBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogbG9nZ2luZyBvZiB0YWJsZSAlcyB3aXRoIEJMT0IgYXR0cmlidXRlIGFuZCBubyBQSyBpcyBub3Qgc3VwcG9ydGVkAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBjcmVhdGUgZXZlbnQgaW4gZGF0YWJhc2UuIEV2ZW50OiAlcyAgRXJyb3IgQ29kZTogJWQgIE1lc3NhZ2U6ICVzAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBjcmVhdGUgZXZlbnQgaW4gZGF0YWJhc2UuICBBdHRlbXB0IHRvIGNvcnJlY3Qgd2l0aCBkcm9wIGZhaWxlZC4gRXZlbnQ6ICVzIEVycm9yIENvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBjcmVhdGUgZXZlbnQgaW4gZGF0YWJhc2UuICBBdHRlbXB0IHRvIGNvcnJlY3Qgd2l0aCBkcm9wIG9rLCBidXQgY3JlYXRlIGZhaWxlZC4gRXZlbnQ6ICVzIEVycm9yIENvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiBCaW5sb2c6IGRpc2NvdmVyIHJldXNpbmcgb2xkIGV2IG9wAE5EQiBCaW5sb2c6IENyZWF0aW5nIE5kYkV2ZW50T3BlcmF0aW9uIGZhaWxlZCBmb3IgJXMATkRCIEJpbmxvZzogQ3JlYXRpbmcgTmRiRXZlbnRPcGVyYXRpb24gYmxvYiBmaWVsZCAldSBoYW5kbGVzIGZhaWxlZCAoY29kZT0lZCkgZm9yICVzAE5EQiBCaW5sb2c6IG5kYmV2ZW50LT5leGVjdXRlIGZhaWxlZCBmb3IgJXM7ICVkICVzAE5EQiBCaW5sb2c6IGxvZ2dpbmcgJXMgKCVzLCVzKQBOREIgQmlubG9nOiBVbmFibGUgdG8gZHJvcCBldmVudCBpbiBkYXRhYmFzZS4gRXZlbnQ6ICVzIEVycm9yIENvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiAlczogJXMgdGltZWQgb3V0LiBJZ25vcmluZy4uLgBOREIgQmlubG9nOiB1bmhhbmRsZWQgZXJyb3IgJWQgZm9yIHRhYmxlICVzAE5EQiBCaW5sb2c6IGNsdXN0ZXIgZmFpbHVyZSBmb3IgJXMgYXQgZXBvY2ggJXUvJXUuAE5EQiBCaW5sb2c6IHVua25vd24gbm9uIGRhdGEgZXZlbnQgJWQgZm9yICVzLiBJZ25vcmluZy4uLgBOREI6IEJpbmxvZyBJbmplY3RvciBkaXNjYXJkaW5nIHJvdyBldmVudCBtZXRhIGRhdGEgYXMgc2VydmVyIGlzIHVzaW5nIHYxIHJvdyBldmVudHMuICgldSAleCkAcmVtb3ZlX2FsbF9ldmVudF9vcGVyYXRpb25zOiBSZW1haW5pbmcgb3BlbiB0YWJsZXM6IAAgICVzLiVzLCB1c2VfY291bnQ6ICV1AE5EQjogQ291bGQgbm90IGdldCBhcHBseSBzdGF0dXMgc2hhcmUATkRCIEJpbmxvZzogU2VydmVyIHNodXRkb3duIGRldGVjdGVkIHdoaWxlIHdhaXRpbmcgZm9yIG5kYmNsdXN0ZXIgdG8gc3RhcnQuLi4ATkRCIEJpbmxvZzogY2x1c3RlciBoYXMgYmVlbiByZXN0YXJ0ZWQgLS1pbml0aWFsIG9yIHdpdGggb2xkZXIgZmlsZXN5c3RlbS4gbmRiX2xhdGVzdF9oYW5kbGVkX2JpbmxvZ19lcG9jaDogJXUvJXUsIHdoaWxlIGN1cnJlbnQgZXBvY2g6ICV1LyV1LiBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMgc2hvdWxkIGJlIGlzc3VlZC4gUmVzZXR0aW5nIG5kYl9sYXRlc3RfaGFuZGxlZF9iaW5sb2dfZXBvY2guAE5EQiBCaW5sb2c6IGNsdXN0ZXIgaGFzIHJlY29ubmVjdGVkLiBDaGFuZ2VzIHRvIHRoZSBkYXRhYmFzZSB0aGF0IG9jY3VycmVkIHdoaWxlIGRpc2Nvbm5lY3RlZCB3aWxsIG5vdCBiZSBpbiB0aGUgYmlubG9nAE5EQiBCaW5sb2c6IHN0YXJ0aW5nIGxvZyBhdCBlcG9jaCAldS8ldQBOREIgQmlubG9nOiBuZGIgdGFibGVzIHdyaXRhYmxlAE5EQiBCaW5sb2c6IFNlcnZlciBzaHV0ZG93biBkZXRlY3RlZC4uLgBOREIgQmlubG9nOiBKdXN0IGxvc3Qgc2NoZW1hIGNvbm5lY3Rpb24sIGhhbmdpbmcgYXJvdW5kAE5EQiBCaW5sb2c6IC4uLmFuZCBvbiBvdXIgd2F5AE5EQjogZXJyb3IgJWx1ICglcykgb24gaGFuZGxpbmcgYmlubG9nIHNjaGVtYSBldmVudABOREIgQmlubG9nOiBGYWlsZWQgdG8gaW5qZWN0IGFwcGx5IHN0YXR1cyB3cml0ZSByb3cATkRCIEJpbmxvZzogRXJyb3IgZHVyaW5nIFJPTExCQUNLIG9mIEdDSSAldS8ldS4gRXJyb3I6ICVkAE5EQiBCaW5sb2c6IEVycm9yIGR1cmluZyBDT01NSVQgb2YgR0NJLiBFcnJvcjogJWQATkRCIEJpbmxvZzogbGF0ZXN0IHRyYW5zYWN0aW9uIGluIGVwb2NoICV1LyV1IG5vdCBpbiBiaW5sb2cgYXMgbGF0ZXN0IGhhbmRsZWQgZXBvY2ggaXMgJXUvJXUATkRCIEJpbmxvZzogUmVsZWFzZSBleHRyYSBzaGFyZSByZWZlcmVuY2VzAE5EQiBCaW5sb2c6IHJlbWFpbmluZyBvcGVuIHRhYmxlczogACAgJXMuJXMgc3RhdGU6ICV1IHVzZV9jb3VudDogJXUAV3JvbmcgdHJlZTogUGFyZW50IGRvZXNuJ3QgcG9pbnQgYXQgcGFyZW50AFdyb25nIHRyZWU6IFJvb3Qgc2hvdWxkIGJlIGJsYWNrAFdyb25nIHRyZWU6IEZvdW5kIHR3byByZWQgaW4gYSByb3cAV3JvbmcgdHJlZTogRm91bmQgcmlnaHQgPT0gbGVmdABXcm9uZyB0cmVlOiBJbmNvcnJlY3QgYmxhY2stY291bnQ6ICVkIC0gJWQAVXNlX2NvdW50OiBXcm9uZyBjb3VudCAlbHUgZm9yIG9yaWdpbiAlcABVc2VfY291bnQ6IFdyb25nIGNvdW50IGZvciBrZXkgYXQgJXAsICVsdSBzaG91bGQgYmUgJWx1AFdyb25nIG51bWJlciBvZiBlbGVtZW50czogJXUgKHNob3VsZCBiZSAldSkgZm9yIHRyZWUgYXQgJXAARXJyb3IgcmVhZGluZyByZXBsaWNhIHdvcmtlciBjb25maWd1cmF0aW9uAEVycm9yIHdyaXRpbmcgcmVwbGljYSB3b3JrZXIgY29uZmlndXJhdGlvbgBGYWlsZWQgdG8gb3BlbiByZWxheSBsb2cgJXMsIGVycm9yOiAlcwBFcnJvciB3aGVuIHdvcmtlciByZWFkIHJlbGF5IGxvZyBldmVudHMscmVsYXkgbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVsbHUARmFpbGVkIHRvIGZpbmQgbmV4dCByZWxheSBsb2cgd2hlbiByZXRyeWluZyB0aGUgdHJhbnNhY3Rpb24sIGN1cnJlbnQgcmVsYXkgbG9nIGlzICVzAE11bHRpLXRocmVhZGVkIHJlcGxpY2E6IENvb3JkaW5hdG9yIGhhcyB3YWl0ZWQgJWx1IHRpbWVzIGhpdHRpbmcgcmVwbGljYV9wZW5kaW5nX2pvYnNfc2l6ZV9tYXg7IGN1cnJlbnQgZXZlbnQgc2l6ZSA9ICV6dS4ARmFpbGVkIHRvIHdyaXRlIHRoZSBEUk9QIHN0YXRlbWVudCBmb3IgdGVtcG9yYXJ5IHRhYmxlcyB0byBiaW5hcnkgbG9nAFdoZW4gb3BlbmluZyBIRUFQIHRhYmxlLCBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IHRvIHdyaXRlICdERUxFVEUgRlJPTSBgJXNgLmAlc2AnIHRvIHRoZSBiaW5hcnkgbG9nAENvdWxkbid0IHJlcGFpciB0YWJsZTogJXMuJXMAQ291bGQgbm90IHJlbW92ZSB0ZW1wb3JhcnkgdGFibGU6ICclcycsIGVycm9yOiAlZABTeXN0ZW0gdGFibGUgJyUuKnMnIGlzIGV4cGVjdGVkIHRvIGJlIHRyYW5zYWN0aW9uYWwuAEVycm9yIHdyaXRpbmcgc291cmNlIGNvbmZpZ3VyYXRpb24uAEVycm9yIHJlYWRpbmcgc291cmNlIGNvbmZpZ3VyYXRpb24uAFNTTCBpbmZvcm1hdGlvbiBpbiB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IGFyZSBpZ25vcmVkIGJlY2F1c2UgdGhpcyBNeVNRTCByZXBsaWNhIHdhcyBjb21waWxlZCB3aXRob3V0IFNTTCBzdXBwb3J0LgBQbHVnaW4gJyVzJyBvZiB0eXBlICVzIGZhaWxlZCBkZWluaXRpYWxpemF0aW9uAFBsdWdpbiAnJXMnIGhhcyByZWZfY291bnQ9JWQgYWZ0ZXIgZGVpbml0aWFsaXphdGlvbi4AU2h1dHRpbmcgZG93biBwbHVnaW4gJyVzJwBQbHVnaW4gJyVzJyByZWdpc3RyYXRpb24gYXMgYSAlcyBmYWlsZWQuAENvdWxkIG5vdCBvcGVuIHRoZSBteXNxbC5wbHVnaW4gdGFibGUuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ291bGRuJ3QgbG9hZCBwbHVnaW4gbmFtZWQgJyVzJyB3aXRoIHNvbmFtZSAnJXMnLgBwbHVnaW4tbG9hZCBwYXJhbWV0ZXIgdG9vIGxvbmcAUGx1Z2luICclcycgd2lsbCBiZSBmb3JjZWQgdG8gc2h1dGRvd24AUGx1Z2luICclcycgaGFzIHJlZl9jb3VudD0lZCBhZnRlciBzaHV0ZG93bi4AVW5rbm93biB2YXJpYWJsZSB0eXBlIGNvZGUgMHgleCBpbiBwbHVnaW4gJyVzJy4AU2VydmVyIHZhcmlhYmxlICVzIG9mIHBsdWdpbiAlcyB3YXMgZm9yY2VkIHRvIGJlIHJlYWQtb25seTogc3RyaW5nIHZhcmlhYmxlIHdpdGhvdXQgdXBkYXRlX2Z1bmMgYW5kIFBMVUdJTl9WQVJfTUVNQUxMT0MgZmxhZwBNaXNzaW5nIHZhcmlhYmxlIG5hbWUgaW4gcGx1Z2luICclcycuAFRocmVhZCBsb2NhbCB2YXJpYWJsZSAnJXMnIG5vdCBhbGxvY2F0ZWQgaW4gcGx1Z2luICclcycuAE91dCBvZiBtZW1vcnkgZm9yIHBsdWdpbiAnJXMnLgBCYWQgb3B0aW9ucyBmb3IgcGx1Z2luICclcycuAFBhcnNpbmcgb3B0aW9ucyBmb3IgcGx1Z2luICclcycgZmFpbGVkLgBQbHVnaW4gJyVzJyBpcyBkaXNhYmxlZC4AUGx1Z2luICclcycgaGFzIGNvbmZsaWN0aW5nIHN5c3RlbSB2YXJpYWJsZXMAU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnIGZhaWxlZC4ARmFpbGVkIG9uIG15X25ldF93cml0ZSwgd3JpdGluZyB0byBzdGRlcnIgaW5zdGVhZDogJXMAUmV0cnlpbmcgcmVwYWlyIG9mOiAnJXMnIHdpdGhvdXQgcXVpY2sAUmV0cnlpbmcgcmVwYWlyIG9mOiAnJXMnIHdpdGgga2V5Y2FjaGUARm91bmQgJXMgb2YgJXMgcm93cyB3aGVuIHJlcGFpcmluZyAnJXMnAFdhcm5pbmc6IE9wdGltaXplIHRhYmxlIGdvdCBlcnJubyAlZCBvbiAlcy4lcywgcmV0cnlpbmcAV2FybmluZzogRW5hYmxpbmcga2V5cyBnb3QgZXJybm8gJWQgb24gJXMuJXMsIHJldHJ5aW5nAENoZWNraW5nIHRhYmxlOiAgICclcycAUmVjb3ZlcmluZyB0YWJsZTogJyVzJwBFcnJvciBpbiBjcmVhdGluZyBUQUJMRV9TSEFSRSBmcm9tICVzLmZybSBmaWxlLgBVbmFibGUgdG8gYWNxdWlyZSBsb2NrIG9uICVzLiVzAEVycm9yIGluIGFsbG9jYXRpb24gbWVtb3J5IGZvciBUQUJMRSBvYmplY3QuAEVycm9yIGluIGNyZWF0aW5nIGhhbmRsZXIgb2JqZWN0IGZvciB0YWJsZSAlcy4lcwBFcnJvciBpbiBzZXR0aW5nIGhhbmRsZXIgcmVmZXJlbmNlIGZvciB0YWJsZSAlcy4lcwBVbmFibGUgdG8gYWNxdWlyZSBsb2NrIG9uIHRhYmxlc3BhY2UgbmFtZSAlcwBFcnJvciBpbiBwcm9jZXNzaW5nIGdlbmVyYXRlZCBjb2x1bW5zIGZvciB0YWJsZSAlcy4lcwBFcnJvciBpbiBDcmVhdGluZyBERCBlbnRyeSBmb3IgJXMuJXMARXJyb3IgaW4gZmV0Y2hpbmcgJXMuJXMgdGFibGUgZGF0YSBmcm9tIGRpY3Rpb25hcnkARXJyb3IgaW4gZml4aW5nIFNFIGRhdGEgZm9yICVzLiVzAEVycm9yIGluIGNyZWF0aW5nIHN0b3JlZCBwcm9ncmFtICclcy4lcycAVW5hYmxlIHRvIG9wZW4gZGIub3B0IGZpbGUgJXMuIFVzaW5nIGRlZmF1bHQgQ2hhcmFjdGVyIHNldC4AVW5hYmxlIHRvIGludGlhbGl6ZSBJTyBjYWNoZSB0byBvcGVuIGRiLm9wdCBmaWxlICVzLiAAVW5hYmxlIHRvIGlkZW50aWZ5IHRoZSBjaGFyc2V0IGluICVzLiBVc2luZyBkZWZhdWx0IGNoYXJhY3RlciBzZXQuAGRiLm9wdCBmaWxlIG5vdCBmb3VuZCBmb3IgJXMgZGF0YWJhc2UuIFVzaW5nIGRlZmF1bHQgQ2hhcmFjdGVyIHNldC4ARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC50aW1lX3pvbmUuAEV2ZW50ICclcycuJyVzJzogaGFzIGludmFsaWQgdGltZSB6b25lIHZhbHVlIABFdmVudCAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uIG15c3FsLmV2ZW50LmNoYXJhY3Rlcl9zZXRfY2xpZW50LgBFdmVudCAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uIG15c3FsLmV2ZW50LmNvbGxhdGlvbl9jb25uZWN0aW9uLgBGYWlsZWQgdG8gb3BlbiBteXNxbC5ldmVudCBUYWJsZS4AUGFyc2luZyAnJXMuJXMnIHJvdXRpbmUgYm9keSBmYWlsZWQuJXMARmFpbGVkIHRvIG9wZW4gbXlzcWwucHJvYyBUYWJsZS4ARmFpbGVkIHRvIHJlYWQgbXlzcWwucHJvYyB0YWJsZS4ARm91bmQgJXMgZmlsZSBpbiBteXNxbCBzY2hlbWEuIEREIHdpbGwgY3JlYXRlIC5pYmQgZmlsZSB3aXRoIHNhbWUgbmFtZS4gUGxlYXNlIHJlbmFtZSB0YWJsZSBhbmQgc3RhcnQgdXBncmFkZSBwcm9jZXNzIGFnYWluLgBVbmFibGUgdG8gb3BlbiB0aGUgZGF0YSBkaXJlY3RvcnkgJXMgZHVyaW5nIGNsZWFuIHVwIGFmdGVyIHVwZ3JhZGUgZmFpbGVkAEZhaWxlZCB0byBzZXQgcGF0aCAlcwBGYWlsZWQgdG8gb3BlbiBkaXIgJXMATkRCOiBGb3VuZCBlbXB0eSBub2RlaWQgc3BlY2lmaWVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBDb3VsZCBub3QgcGFyc2UgJyVzJyBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogSW52YWxpZCBub2RlaWQgJWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IEZvdW5kIGR1cGxpY2F0ZSBub2RlaWQgJWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IFRoZSBzaXplIG9mIHRoZSBjbHVzdGVyIGNvbm5lY3Rpb24gcG9vbCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2Ygbm9kZWlkcyBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogVGhlIG5vZGVpZCBzcGVjaWZpZWQgYnkgLS1uZGItbm9kZWlkIG11c3QgYmUgZXF1YWwgdG8gdGhlIGZpcnN0IG5vZGVpZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogdXNpbmcgbm9kZWlkICV1AE5EQjogZmFpbGVkIHRvIGFsbG9jYXRlIGdsb2JhbCBuZGIgY2x1c3RlciBjb25uZWN0aW9uAE5EQjogZmFpbGVkIHRvIGFsbG9jYXRlIGdsb2JhbCBuZGIgb2JqZWN0AE5EQlsldV06IHVzaW5nIG5vZGVpZCAldQBOREJbJXVdOiBmYWlsZWQgdG8gYWxsb2NhdGUgY2x1c3RlciBjb25uZWN0IG9iamVjdABOREJbJXVdOiBzdGFydGluZyBjb25uZWN0IHRocmVhZABOREJbJXVdOiBOb2RlSUQ6ICVkLCAlcwBOREJbJXVdOiBmYWlsZWQgdG8gc3RhcnQgY29ubmVjdCB0aHJlYWQATkRCOiBlcnJvciAoJXUpICVzAElnbm9yZWQgcmVjZWl2ZSB0aHJlYWQgQ1BVIG1hc2ssIG1hc2sgdG9vIHNob3J0LCAldSBDUFVzIG5lZWRlZCBpbiBtYXNrLCBvbmx5ICV1IENQVXMgcHJvdmlkZWQARXZlbnQgRXJyb3I6IEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNyZWF0aW5nIHF1ZXJ5IHN0cmluZywgYmVmb3JlIHdyaXRpbmcgaXQgaW50byBiaW5hcnkgbG9nLgBFdmVudCBTY2hlZHVsZXI6IEVycm9yIHdoaWxlIGxvYWRpbmcgZnJvbSBkaXNrLgBFdmVudCBTY2hlZHVsZXI6IEVycm9yIGdldHRpbmcgZXZlbnQgb2JqZWN0LgBFdmVudCBTY2hlZHVsZXI6IEVycm9yIHdoaWxlIGxvYWRpbmcgZXZlbnRzIGZyb20gbXlzcWwuZXZlbnRzLlRoZSB0YWJsZSBwcm9iYWJseSBjb250YWlucyBiYWQgZGF0YSBvciBpcyBjb3JydXB0ZWQAVW5hYmxlIHRvIG9idGFpbiBsb2NrIGZvciBkcm9wcGluZyBldmVudCAlcyBmcm9tIHNjaGVtYSAlcwBVbmFibGUgdG8gZHJvcCBldmVudCAlcyBmcm9tIHNjaGVtYSAlcwBTZXJ2ZXIgb3ZlcmNvbWVzIHRoZSB0ZW1wb3JhcnkgJ291dCBvZiBtZW1vcnknIGluICclZCcgdHJpZXMgd2hpbGUgYXR0YWNoaW5nIHRvIHNlc3Npb24gdGhyZWFkIGR1cmluZyB0aGUgZ3JvdXAgY29tbWl0IHBoYXNlLgBVbmFibGUgdG8gcmVzaXplIGJpbmxvZyBJT0NBQ0hFIGF1eGlsaWFyeSBmaWxlAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCB3YXMgYmVpbmcgcmVhZCBieSB0aHJlYWQgbnVtYmVyICV1AEkvTyBlcnJvciByZWFkaW5nIHRoZSBoZWFkZXIgZnJvbSB0aGUgYmluYXJ5IGxvZywgZXJybm89JWQsIGlvIGNhY2hlIGNvZGU9JWQARmFpbGVkIHRvIG9wZW4gbG9nIChmaWxlICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgY2FjaGUgb24gbG9nIChmaWxlICclcycpAExvZyBmaWxlbmFtZSBleHRlbnNpb24gbnVtYmVyIGV4aGF1c3RlZDogJTA2bHUuIFBsZWFzZSBmaXggdGhpcyBieSBhcmNoaXZpbmcgb2xkIGxvZ3MgYW5kIHVwZGF0aW5nIHRoZSBpbmRleCBmaWxlcy4ATG9nIGZpbGVuYW1lIHRvbyBsYXJnZTogJXMlcyAoJXp1KS4gUGxlYXNlIGZpeCB0aGlzIGJ5IGFyY2hpdmluZyBvbGQgbG9ncyBhbmQgdXBkYXRpbmcgdGhlIGluZGV4IGZpbGVzLgBOZXh0IGxvZyBleHRlbnNpb246ICVsdS4gUmVtYWluaW5nIGxvZyBmaWxlbmFtZSBleHRlbnNpb25zOiAlbHUuIFBsZWFzZSBjb25zaWRlciBhcmNoaXZpbmcgc29tZSBsb2dzLgBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQpLiBUdXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgd2hvbGUgZHVyYXRpb24gb2YgdGhlIE15U1FMIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCBzaHV0ZG93biB0aGUgTXlTUUwgc2VydmVyIGFuZCByZXN0YXJ0IGl0LgBNWVNRTF9CSU5fTE9HOjpvcGVuX2luZGV4X2ZpbGUgZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAEVycm9yIHJlYWRpbmcgR1RJRHMgZnJvbSByZWxheWxvZzogJWQAJWx1IGV2ZW50cyByZWFkIGluIHJlbGF5bG9nIGZpbGUgJyVzJyBmb3IgdXBkYXRpbmcgUmV0cmlldmVkX0d0aWRfU2V0IGFuZC9vciBJTyB0aHJlYWQgdHJhbnNhY3Rpb24gcGFyc2VyIHN0YXRlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gYmluYXJ5IGxvZzogJWQAUmVhZCAlbHUgZXZlbnRzIGZyb20gYmluYXJ5IGxvZyBmaWxlICclcycgdG8gZGV0ZXJtaW5lIHRoZSBHVElEcyBwdXJnZWQgZnJvbSBiaW5hcnkgbG9ncy4ATVlTUUxfQklOX0xPRzo6b3BlbiBmYWlsZWQgdG8gZ2VuZXJhdGUgbmV3IGZpbGUgbmFtZS4ATVlTUUxfQklOX0xPRzo6b3BlbiBmYWlsZWQgdG8gc3luYyB0aGUgaW5kZXggZmlsZS4AQ291bGQgbm90IHVzZSAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQpLiBUdXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgd2hvbGUgZHVyYXRpb24gb2YgdGhlIE15U1FMIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCBzaHV0ZG93biB0aGUgTXlTUUwgc2VydmVyIGFuZCByZXN0YXJ0IGl0LgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byBjbG9zZSB0aGUgaW5kZXggZmlsZS4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gZGVsZXRlIHRoZSBleGlzdGluZyBpbmRleCBmaWxlLiBJdCBjb3VsZCBiZSB0aGF0IGZpbGUgaXMgYmVpbmcgdXNlZCBieSBzb21lIG90aGVyIHByb2Nlc3MuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIHJlbmFtZSB0aGUgbmV3IGluZGV4IGZpbGUgdG8gdGhlIGV4aXN0aW5nIGluZGV4IGZpbGUuAEFmdGVyIHJlYnVpbGRpbmcgdGhlIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byBvcGVuIHRoZSBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjphZGRfbG9nX3RvX2luZGV4IGZhaWxlZCB0byBhcHBlbmQgbG9nIGZpbGUgbmFtZTogJXMsIHRvIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4ARmFpbGVkIHRvIGxvY2F0ZSBvbGQgYmlubG9nIG9yIHJlbGF5IGxvZyBmaWxlcwBGYWlsZWQgdG8gZGVsZXRlIGZpbGUgJyVzJwBNWVNRTF9CSU5fTE9HOjpzZXRfY3Jhc2hfc2FmZV9pbmRleF9maWxlX25hbWUgZmFpbGVkIHRvIHNldCBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW5fY3Jhc2hfc2FmZV9pbmRleF9maWxlIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBpbmRleCBmaWxlLgBuZXh0IGxvZyBlcnJvcjogJWQgIG9mZnNldDogJXMgIGxvZzogJXMgaW5jbHVkZWQ6ICVkACVzIGZhaWxlZCB0byBvcGVuIHRoZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBjb3B5IGluZGV4IGZpbGUgdG8gY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gY2xvc2UgdGhlIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIG1vdmUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlIHRvIGluZGV4IGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3Mgd2FzIGNhbGxlZCB3aXRoIGZpbGUgJXMgbm90IGxpc3RlZCBpbiB0aGUgaW5kZXguAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIGNvcHkgJXMgdG8gcmVnaXN0ZXIgZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gZmx1c2ggcmVnaXN0ZXIgZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gdXBkYXRlIHRoZSBpbmRleCBmaWxlAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHByb2Nlc3MgcmVnaXN0ZXJlZCBmaWxlcyB0aGF0IHdvdWxkIGJlIHB1cmdlZC4ATVlTUUxfQklOX0xPRzo6c2V0X3B1cmdlX2luZGV4X2ZpbGVfbmFtZSBmYWlsZWQgdG8gc2V0IGZpbGUgbmFtZS4ATVlTUUxfQklOX0xPRzo6b3Blbl9wdXJnZV9pbmRleF9maWxlIGZhaWxlZCB0byBvcGVuIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2luZGV4X2VudHJ5IGZhaWxlZCB0byByZWluaXQgcmVnaXN0ZXIgZmlsZSBmb3IgcmVhZABNWVNRTF9CSU5fTE9HOjpwdXJnZV9pbmRleF9lbnRyeSBlcnJvciAlZCByZWFkaW5nIGZyb20gcmVnaXN0ZXIgZmlsZS4ARmFpbGVkIHRvIGV4ZWN1dGUgbXlzcWxfZmlsZV9zdGF0IG9uIGZpbGUgJyVzJwBGYWlsZWQgdG8gZGVsZXRlIGxvZyBmaWxlICclcyc7IGNvbnNpZGVyIGV4YW1pbmluZyBjb3JyZXNwb25kZW5jZSBvZiB5b3VyIGJpbmxvZyBpbmRleCBmaWxlIHRvIHRoZSBhY3R1YWwgYmlubG9nIGZpbGVzAEZhaWxlZCB0byBkZWxldGUgZmlsZSAnJXMnIGFuZCByZWFkIHRoZSBiaW5sb2cgaW5kZXggZmlsZQBGYWlsZWQgdG8gZGVsZXRlIGxvZyBmaWxlICclcycAJXMgQW4gaW5jaWRlbnQgZXZlbnQgaGFzIGJlZW4gd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZyB3aGljaCB3aWxsIHN0b3AgdGhlIHJlcGxpY2FzLgBmaW5kX2xvZ19wb3MoKSBmYWlsZWQgKGVycm9yOiAlZCkAUmVjb3ZlcmluZyBhZnRlciBhIGNyYXNoIHVzaW5nICVzAEZhaWxlZCB0byBvcGVuIHRoZSBjcmFzaGVkIGJpbmxvZyBmaWxlIHdoZW4gc291cmNlIHNlcnZlciBpcyByZWNvdmVyaW5nIGl0LgBGYWlsZWQgdG8gdHJpbSB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4AQ3Jhc2hlZCBiaW5sb2cgZmlsZSAlcyBzaXplIGlzICVsbHUsIGJ1dCByZWNvdmVyZWQgdXAgdG8gJWxsdS4gQmlubG9nIHRyaW1tZWQgdG8gJWxsdSBieXRlcy4ARmFpbGVkIHRvIGNsZWFyIExPR19FVkVOVF9CSU5MT0dfSU5fVVNFX0YgZm9yIHRoZSBjcmFzaGVkIGJpbmxvZyBmaWxlIHdoZW4gc291cmNlIHNlcnZlciBpcyByZWNvdmVyaW5nIGl0LgBGYWlsZWQgdG8gcnVuICdhZnRlcl9zeW5jJyBob29rcwAlcyBIZW5jZSB0dXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgd2hvbGUgZHVyYXRpb24gb2YgdGhlIE15U1FMIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCBzaHV0ZG93biB0aGUgTXlTUUwgc2VydmVyIGFuZCByZXN0YXJ0IGl0LgBGYWlsZWQgdG8gcnVuICdhZnRlcl9mbHVzaCcgaG9va3MAQ3Jhc2ggcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgY29ycmVjdCB0aGUgcHJvYmxlbSAoaWYgaXQncywgZm9yIGV4YW1wbGUsIG91dCBvZiBtZW1vcnkgZXJyb3IpIGFuZCByZXN0YXJ0LCBvciBkZWxldGUgKG9yIHJlbmFtZSkgYmluYXJ5IGxvZyBhbmQgc3RhcnQgbXlzcWxkIHdpdGggLS10Yy1oZXVyaXN0aWMtcmVjb3Zlcj17Y29tbWl0fHJvbGxiYWNrfQBUaGUgZm9sbG93aW5nIHdhcm5pbmcgd2FzIHN1cHByZXNzZWQgJWQgdGltZXMgZHVyaW5nIHRoZSBsYXN0ICVkIHNlY29uZHMgaW4gdGhlIGVycm9yIGxvZwBOREI6ICVzAE5EQiAlczogJXMATkRCOiBVbmFibGUgdG8gcHVyZ2UgJXMuJXMgRmlsZT0lcyAoZmFpbGVkIHRvIHNldHVwIHRoZCkAVW5rbm93biBjb2xsYXRpb24gIyVsdS4Ac3ludGF4IGVycm9yIGluIGlubm9kYl9sb2dfZ3JvdXBfaG9tZV9kaXIAc3ludGF4IGVycm9yIGluIGlubm9kYl91bmRvX2RpcmVjdG9yeQBJbm5vREI6IGlubm9kYl9idWZmZXJfcG9vbF9maWxlbmFtZSBjYW5ub3QgaGF2ZSBjb2xvbiAoOikgaW4gdGhlIGZpbGUgbmFtZS4ASW5ub0RCOiBJbnZhbGlkIHBhZ2Ugc2l6ZT0lbHUuAElubm9EQjogaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3RfbHdtIGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3QuIFNldHRpbmcgaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3RfbHdtIHRvICVsZgBJbm5vREI6IGlubm9kYl9pb19jYXBhY2l0eSBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIGlubm9kYl9pb19jYXBhY2l0eV9tYXguIFNldHRpbmcgaW5ub2RiX2lvX2NhcGFjaXR5IHRvICVsdQAlcyBhbmQgJXMgZmlsZSBuYW1lcyBzZWVtIHRvIGJlIHRoZSBzYW1lLgBUcmFuc2FjdGlvbiBub3QgcmVnaXN0ZXJlZCBmb3IgTXlTUUwgMlBDLCBidXQgdHJhbnNhY3Rpb24gaXMgYWN0aXZlAE15U1FMIGlzIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRoYXQgaGFzIGFuIGFjdGl2ZSBJbm5vREIgdHJhbnNhY3Rpb24uICVsbHUgcm93IG1vZGlmaWNhdGlvbnMgd2lsbCByb2xsIGJhY2suAElubm9EQjogZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLiBOdW1iZXIgb2YgSW5kZXg6JWx1LCBhcnJheSBzaXplOiVsdQBDYW5ub3QgZmluZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggZGljdGlvbmFyeS4ARm91bmQgaW5kZXggJXMgd2hvc2UgY29sdW1uIGluZm8gZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiBNeVNRTC4ARmFpbGVkIHRvIG9wZW4gdGFibGUgJXMuAEJ1aWxkIElubm9EQiBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgVGFibGUgJXMgZmFpbGVkAFRhYmxlICVzIGhhcyBhIHByaW1hcnkga2V5IGluIElubm9EQiBkYXRhIGRpY3Rpb25hcnksIGJ1dCBub3QgaW4gTXlTUUwhAFRhYmxlICVzIGhhcyBubyBwcmltYXJ5IGtleSBpbiBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5LCBidXQgaGFzIG9uZSBpbiBNeVNRTCEgSWYgeW91IGNyZWF0ZWQgdGhlIHRhYmxlIHdpdGggYSBNeVNRTCB2ZXJzaW9uIDwgMy4yMy41NCBhbmQgZGlkIG5vdCBkZWZpbmUgYSBwcmltYXJ5IGtleSwgYnV0IGRlZmluZWQgYSB1bmlxdWUga2V5IHdpdGggYWxsIG5vbi1OVUxMIGNvbHVtbnMsIHRoZW4gTXlTUUwgaW50ZXJuYWxseSB0cmVhdHMgdGhhdCBrZXkgYXMgdGhlIHByaW1hcnkga2V5LiBZb3UgY2FuIGZpeCB0aGlzIGVycm9yIGJ5IGR1bXAgKyBEUk9QICsgQ1JFQVRFICsgcmVpbXBvcnQgb2YgdGhlIHRhYmxlLgBUYWJsZSAlcyBrZXlfdXNlZF9vbl9zY2FuIGlzICVsdSBldmVuIHRob3VnaCB0aGVyZSBpcyBubyBwcmltYXJ5IGtleSBpbnNpZGUgSW5ub0RCLgBQYXJ0aXRpb24gdGFibGUgJXMgb3BlbmVkIGFmdGVyIGNvbnZlcnRpbmcgdG8gbG93ZXIgY2FzZS4gVGhlIHRhYmxlIG1heSBoYXZlIGJlZW4gbW92ZWQgZnJvbSBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0uIFBsZWFzZSByZWNyZWF0ZSB0aGUgdGFibGUgaW4gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0uAENhbm5vdCByZXBsYWNlIGVycm9yIG1lc3NhZ2UgKCVzLCVzLCVzKSAiJXMiIHdpdGggIiVzIjsgd3JvbmcgbnVtYmVyIG9yIHR5cGUgb2YgJSUgc3Vic2l0dXRpb25zLgBUYWJsZSBmb3IgZXJyb3IgbWVzc2FnZSByZXBsYWNlbWVudHMgY291bGQgbm90IGJlIGZvdW5kIG9yIHJlYWQsIG9yIG9uZSBvciBtb3JlIHJlcGxhY2VtZW50cyBjb3VsZCBub3QgYmUgYXBwbGllZC4AJXM6ICVzAFRhYmxlICclLTE5MnMnOiBEZWxldGUgZnJvbSBwYXJ0ICVkIGZhaWxlZCB3aXRoIGVycm9yICVkLiBCdXQgaXQgd2FzIGFscmVhZHkgaW5zZXJ0ZWQgaW50byBwYXJ0ICVkLCB3aGVuIG1vdmluZyB0aGUgbWlzcGxhY2VkIHJvdyEgUGxlYXNlIG1hbnVhbGx5IGZpeCB0aGUgZHVwbGljYXRlIHJvdzogJXMAQ29tbWFuZCAnJXMnIGNhbm5vdCBiZSBhYm9ydGVkLiBUaGUgdHJpZ2dlciBlcnJvciB3YXMgKCVkKSBbJXNdOiAlcwBFdmVudCAnJXMnIGNhbm5vdCBiZSBhYm9ydGVkLiBUaGUgdHJpZ2dlciBlcnJvciB3YXMgKCVkKSBbJXNdOiAlcwAlcy4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMAUmVwbGljYSBTUUw6IENvbmZpZ3VyYXRpb24gd2l0aCBudW1iZXIgb2YgcmVwbGljYXRpb24gc291cmNlcyA9ICV1JyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXBwbHlpbmcgdG8gTmRiAFJlcGxpY2EgU1FMOiBDb25maWd1cmF0aW9uICdyZXBsaWNhX3BhcmFsbGVsX3dvcmtlcnMgPSAlbHUnIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhcHBseWluZyB0byBOZGIATkRCICVzOiBkaXN0cmlidXRpbmcgJXMgZXJyOiAldQBTdG9yaW5nIE15U1FMIHVzZXIgbmFtZSBvciBwYXNzd29yZCBpbmZvcm1hdGlvbiBpbiB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IGlzIG5vdCBzZWN1cmUgYW5kIGlzIHRoZXJlZm9yZSBub3QgcmVjb21tZW5kZWQuIFBsZWFzZSBjb25zaWRlciB1c2luZyB0aGUgVVNFUiBhbmQgUEFTU1dPUkQgY29ubmVjdGlvbiBvcHRpb25zIGZvciBTVEFSVCBSRVBMSUNBOyBzZWUgdGhlICdTVEFSVCBSRVBMSUNBIFN5bnRheCcgaW4gdGhlIE15U1FMIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ARkxVU0ggUkVMQVkgTE9HUyBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIGNoYW5uZWwgJyUtLjE5MnMnLgBSZXBsaWNhIGNoYW5uZWwgJyVzJyBkb2VzIG5vdCBleGlzdC4AQ2FuJ3QgZmluZCBzeW1ib2wgJyUtLjEyOHMnIGluIGxpYnJhcnkuAENhbid0IG9wZW4gc2hhcmVkIGxpYnJhcnkgJyUtLjE5MnMnIChlcnJubzogJWQgJS0uMTkycykuAFRocmVhZCBwcmlvcml0eSBhdHRyaWJ1dGUgc2V0dGluZyBpbiBSZXNvdXJjZSBHcm91cCBTUUwgc2hhbGwgYmUgaWdub3JlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgcGxhdGZvcm0gb3IgaW5zdWZmaWNpZW50IHByaXZpbGVnZS4AT3B0aW9uIGJpbmxvZ19jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19jYWNoZV9zaXplLgBPcHRpb24gYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZS4AQ2FuJ3QgZ2VuZXJhdGUgYSB1bmlxdWUgbG9nLWZpbGVuYW1lICUtLjIwMHMuKDEtOTk5KS4ARXJyb3IgcmVhZGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpAEVycm9yIHdyaXRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKQAlcyBTdGF0ZW1lbnQ6ICVzACVzOiBGb3JjaW5nIGNsb3NlIG9mIHRocmVhZCAlbGQgIHVzZXI6ICclLS40OHMnLgAlczogU2h1dGRvd24gY29tcGxldGUgKG15c3FsZCAlcykgICVzLgBDYW5ub3QgaGF2ZSBzYW1lIGJhc2UgbmFtZSAnJXMnIGZvciBib3RoIGJpbmFyeSBhbmQgcmVsYXkgbG9ncy4gUGxlYXNlIGNoZWNrICVzIChkZWZhdWx0ICclcycgaWYgLS1sb2ctYmluIG9wdGlvbiBpcyBub3QgdXNlZCwgZGVmYXVsdCAnJXMnIGlmIC0tbG9nLWJpbiBvcHRpb24gaXMgdXNlZCB3aXRob3V0IGFyZ3VtZW50KSBhbmQgJXMgKGRlZmF1bHQgJyVzJykgb3B0aW9ucyB0byBlbnN1cmUgdGhleSBkbyBub3QgY29uZmxpY3QuAEdUSURfTU9ERSA9IE9OIHJlcXVpcmVzIEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSA9IE9OLgBZb3UgaGF2ZSBub3QgcHJvdmlkZWQgYSBtYW5kYXRvcnkgc2VydmVyLWlkLiBTZXJ2ZXJzIGluIGEgcmVwbGljYXRpb24gdG9wb2xvZ3kgbXVzdCBoYXZlIHVuaXF1ZSBzZXJ2ZXItaWRzLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHByb3BlciBzZXJ2ZXIgc3RhcnQtdXAgcGFyYW1ldGVycyBkb2N1bWVudGF0aW9uLgBBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0cykuACdOT19aRVJPX0RBVEUnLCAnTk9fWkVST19JTl9EQVRFJyBhbmQgJ0VSUk9SX0ZPUl9ESVZJU0lPTl9CWV9aRVJPJyBzcWwgbW9kZXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBzdHJpY3QgbW9kZS4gVGhleSB3aWxsIGJlIG1lcmdlZCB3aXRoIHN0cmljdCBtb2RlIGluIGEgZnV0dXJlIHJlbGVhc2UuAEBAR0xPQkFMLkdUSURfUFVSR0VEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgBAQEdMT0JBTC5HVElEX0VYRUNVVEVEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQuAFRyaWdnZXJzIGZvciB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYCBoYXZlIG5vIGNyZWF0aW9uIGNvbnRleHQAJyUtLjE5MnMnIGhhcyBhbiBvbGQgZm9ybWF0LCB5b3Ugc2hvdWxkIHJlLWNyZWF0ZSB0aGUgJyVzJyBvYmplY3QocykAVmlldyBgJS0uNjRzYC5gJS0uNjRzYCBoYXMgbm8gY3JlYXRpb24gY29udGV4dABMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBhIHBhdGggbGVuZ3RoIHRvbyBsb25nIGZvciB0YWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgdGhlIHBhdGggbGltaXQgZm9yIHlvdXIgT1MuAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkbyAiUkVQQUlSIFRBQkxFIGAlLS42NHNgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAEdvdCBlcnJvciAlZCAtICclLS4xOTJzJyBmcm9tIHN0b3JhZ2UgZW5naW5lLgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgKHVzaW5nIHBhc3N3b3JkOiAlcykAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBsb2NrZWQuAFlvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFRvIGxvZyBpbiB5b3UgbXVzdCBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3Jkcy4AU3RvcmFnZSBlbmdpbmUgJyVzJyBkb2VzIG5vdCBzdXBwb3J0IHN5c3RlbSB0YWJsZXMuIFslcy4lc10uAFNvcnQgYWJvcnRlZAAlczogcmVhZHkgZm9yIGNvbm5lY3Rpb25zLiBWZXJzaW9uOiAnJXMnICBzb2NrZXQ6ICclcycgIHBvcnQ6ICVkICAlcy4AVW5rbm93biBsb2NhbGU6ICclLS42NHMnLgBVbmtub3duIGNvbGxhdGlvbjogJyUtLjY0cycuAE91dCBvZiBtZW1vcnk7IGNoZWNrIGlmIG15c3FsZCBvciBzb21lIG90aGVyIHByb2Nlc3MgdXNlcyBhbGwgYXZhaWxhYmxlIG1lbW9yeTsgaWYgbm90LCB5b3UgbWF5IGhhdmUgdG8gdXNlICd1bGltaXQnIHRvIGFsbG93IG15c3FsZCB0byB1c2UgbW9yZSBtZW1vcnkgb3IgeW91IGNhbiBhZGQgbW9yZSBzd2FwIHNwYWNlAE91dCBvZiBtZW1vcnk7IHJlc3RhcnQgc2VydmVyIGFuZCB0cnkgYWdhaW4gKG5lZWRlZCAlZCBieXRlcykAQ09MTEFUSU9OICclcycgaXMgbm90IHZhbGlkIGZvciBDSEFSQUNURVIgU0VUICclcycARmFpbGVkIHRvIHNldCAlcyBhdCBvciBhcm91bmQgIiVzIiAtLSBzZXJ2aWNlIGlzIHZhbGlkLCBidXQgY2FuIG5vdCBiZSBpbml0aWFsaXplZDsgcGxlYXNlIGNoZWNrIGl0cyBjb25maWd1cmF0aW9uIGFuZCBtYWtlIHN1cmUgaXQgY2FuIHJlYWQgaXRzIGlucHV0KHMpIGFuZCB3cml0ZSB0byBpdHMgb3V0cHV0KHMpLgBHZW5lcmF0aW5nIGEgbmV3IFVVSUQ6ICVzLgBGYWlsZWQgdG8gZ2V0IGFic29sdXRlIHBhdGggb2YgcHJvZ3JhbSBleGVjdXRhYmxlICVzAEZhaWxlZCB0byBib290c3RyYXAgcGVyZm9ybWFuY2Ugc2NoZW1hIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAEZhaWxlZCB0byBkZWluaXQgcGVyZm9ybWFuY2Ugc2NoZW1hIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAENvdWxkIG5vdCBvcGVuIGR1cGxpY2F0ZSBmZCBmb3IgJXM6ICVzLgBTeXN0ZW0gdmlld3MgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBSZXNvdXJjZSBncm91cCBwb3N0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4AUmVzb3VyY2UgR3JvdXAgc3Vic3lzdGVtIGluaXRpYWxpemF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIHN0YXJ0IG15c3FsZCBkYWVtb24uIENoZWNrIG15c3FsZCBlcnJvciBsb2cuAENhbm5vdCBjaGFuZ2UgdG8gcm9vdCBkaXJlY3Rvcnk6ICVzLgBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcnNpc3RlbnQgcHJpdmlsZWdlcy4AQmFzZWRpciBzZXQgdG8gJXMuAENvdWxkIG5vdCBhZGQgd2lsZCBkbyB0YWJsZSBydWxlICclcychAENvdWxkIG5vdCBhZGQgd2lsZCBpZ25vcmUgdGFibGUgcnVsZSAnJXMnIQBUaGUgcHJpdmlsZWdlIHN5c3RlbSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb3JyZWN0bHkuIEZvciBjb21wbGV0ZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVwZ3JhZGUgTXlTUUwgdG8gYSBuZXcgdmVyc2lvbiBwbGVhc2Ugc2VlIHRoZSAnVXBncmFkaW5nIE15U1FMJyBzZWN0aW9uIGZyb20gdGhlIE15U1FMIG1hbnVhbC4AQ2Fubm90IHNldCBzZXJ2aWNlcyAiJXMiIHJlcXVlc3RlZCBpbiAtLWxvZy1lcnJvci1zZXJ2aWNlcywgdXNpbmcgZGVmYXVsdHMuAFBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZXMgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBUaGUgdHJhbnNhY3Rpb25fd3JpdGVfc2V0X2V4dHJhY3Rpb24gbXVzdCBiZSBzZXQgdG8gJXMgd2hlbiBiaW5sb2dfdHJhbnNhY3Rpb25fZGVwZW5kZW5jeV90cmFja2luZyBpcyAlcy4ASW52YWxpZCByZXBsaWNhdGlvbiB0aW1lc3RhbXBzOiBvcmlnaW5hbCBjb21taXQgdGltZXN0YW1wIGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGltbWVkaWF0ZSBjb21taXQgdGltZXN0YW1wLiBUaGlzIG1heSBiZSBhbiBpc3N1ZSBpZiBkZWxheWVkIHJlcGxpY2F0aW9uIGlzIGFjdGl2ZS4gTWFrZSBzdXJlIHRoYXQgc2VydmVycyBoYXZlIHRoZWlyIGNsb2NrcyBzZXQgdG8gdGhlIGNvcnJlY3QgdGltZS4gTm8gZnVydGhlciBtZXNzYWdlIHdpbGwgYmUgZW1pdHRlZCB1bnRpbCBhZnRlciB0aW1lc3RhbXBzIGJlY29tZSB2YWxpZCBhZ2Fpbi4AVGhlIHJlcGxpY2F0aW9uIHRpbWVzdGFtcHMgaGF2ZSByZXR1cm5lZCB0byBub3JtYWwgdmFsdWVzLgAlcy4ARmFpbGVkIHRvIHdyaXRlIGFuIGluY2lkZW50IGV2ZW50IGludG8gc3RtdF9jYWNoZS4AUmVsYXlsb2cgZmlsZSAlcyBzaXplIHdhcyAlbGx1LCBidXQgd2FzIHRydW5jYXRlZCBhdCAlbGx1LgBVbmFibGUgdG8gcHVyZ2UgcmVsYXkgbG9nIGZpbGVzLiAlczolcy4AUmVwbGljYTogZmFpbGVkIGluIGNyZWF0aW5nIGZpbHRlciBmb3IgY2hhbm5lbCAnJXMnLgBSZXBsaWNhOiBmYWlsZWQgaW4gY29weWluZyB0aGUgZ2xvYmFsIGZpbHRlcnMgdG8gaXRzIG93biBwZXItY2hhbm5lbCBmaWx0ZXJzIG9uIGNvbmZpZ3VyYXRpb24gZm9yIGNoYW5uZWwgJyVzJy4AVGhlcmUgYXJlIHBlci1jaGFubmVsIHJlcGxpY2F0aW9uIGZpbHRlcihzKSBjb25maWd1cmVkIGZvciBjaGFubmVsICclLjE5MnMnIHdoaWNoIGRvZXMgbm90IGV4aXN0LiBUaGUgZmlsdGVyKHMpIGhhdmUgYmVlbiBkaXNjYXJkZWQuAFRoZSBzeXN0ZW0gdGFibGUgbXlzcWwuZ2xvYmFsX2dyYW50cyBpcyBtaXNzaW5nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEFDTCB0YWJsZSBteXNxbC4lLipzIG1pc3NpbmcuIFNvbWUgb3BlcmF0aW9ucyBtYXkgZmFpbC4AQ2FuJ3Qgc2V0IG1hbmRhdG9yeV9yb2xlICVzQCVzOiBBbm9ueW1vdXMgYXV0aG9yaXphdGlvbiBJRHMgYXJlIG5vdCBhbGxvd2VkIGFzIHJvbGVzLgBDYW4ndCBzZXQgbWFuZGF0b3J5X3JvbGU6IFRoZXJlJ3Mgbm8gc3VjaCBhdXRob3JpemF0aW9uIElEICVzQCVzLgBUYWJsZSAnJS0xOTJzJyBmYWlsZWQgdG8gbW92ZS9pbnNlcnQgYSByb3cgZnJvbSBwYXJ0ICVkIGludG8gcGFydCAlZDogJXMuAFNraXBwZWQgdXBkYXRpbmcgcmVzb3VyY2UgZ3JvdXAgbWV0YWRhdGEgaW4gSW5ub0RCIHJlYWQgb25seSBtb2RlLgBGYWlsZWQgdG8gcGVyc2lzdCByZXNvdXJjZSBncm91cCAlcyB0byBEYXRhIERpY3Rpb25hcnkuAEZhaWxlZCB0byBkZXNlcmlhbGl6ZSByZXNvdXJjZSBncm91cCAlcy4AVXBkYXRlIG9mIHJlc291cmNlIGdyb3VwICVzIGZhaWxlZC4AVmFsaWRhdGlvbiBvZiByZXNvdXJjZSBncm91cCAlcyBmYWlsZWQuIFJlc291cmNlIGdyb3VwIGlzIGRpc2FibGVkLgBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBSZXNvdXJjZSBHcm91cCAlcy4ARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcmVzb3VyY2UgZ3JvdXAgaGFzaC4ARmFpbGVkIHRvIGFkZCByZXNvdXJjZSBncm91cCAlcyB0byByZXNvdXJjZSBncm91cCBtYXAuAFJlc291cmNlIGdyb3VwIGZlYXR1cmUgaXMgZGlzYWJsZWQuIChTZXJ2ZXIgaXMgY29tcGlsZWQgd2l0aCBESVNBQkxFX1BTSV9USFJFQUQpLgBVbmFibGUgdG8gYXBwbHkgcmVzb3VyY2UgZ3JvdXAgY29udHJvbGxlciAlcy4AVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiB0aGUgcmVzb3VyY2UgZ3JvdXAgJXMuIEhpbnQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwIHNoYWxsIGJlIGlnbm9yZWQuAFBGUyAlcyBub3RpZmljYXRpb24gZnVuY3Rpb24gcmVnaXN0cmF0aW9uIGZhaWxlZC4AVW5hYmxlIHRvIGJpbmQgdGhyZWFkIGlkICVsbHUgdG8gY3B1IGlkICV1IChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYWJsZSB0byBiaW5kIHRocmVhZCBpZCAlbGx1IHRvIGNwdSBpZHMgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5iaW5kIHRocmVhZCBpZCAlbGx1IGZhaWxlZC4gKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AU2V0dGluZyB0aHJlYWQgcHJpb3JpdHkgJWQgdG8gdGhyZWFkIGlkICVsbHUgZmFpbGVkLiAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmFibGUgdG8gZGV0ZXJtaW5lIENBUF9TWVNfTklDRSBjYXBhYmlsaXR5LgAlcyBmYWlsZWQ6IEZhaWxlZCB0byBnZXQgaGFuZGxlIGZvciB0aHJlYWQgJWxsdS4AUmV0cmlldmFsIG9mIHRocmVhZCBwcmlvcml0eSB1bnN1cHBvcnRlZCBvbiAlcy4AVW5hYmxlIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENQVXMuAFJlc291cmNlIGdyb3VwIGZlYXR1cmUgc2hhbGwgbm90IGJlIGF2YWlsYWJsZS4gSW5jb21wYXRpYmxlIHRocmVhZCBoYW5kbGluZyBvcHRpb24uAEludmFsaWQgdGhyZWFkIHByaW9yaXR5ICVkIGZvciBhICVzIHJlc291cmNlIGdyb3VwLiBBbGxvd2VkIHJhbmdlIGlzIFslZCwgJWRdLgBiaW5kX3RvX2NwdSBmYWlsZWQ6IHByb2Nlc3Nvcl9iaW5kIGZvciBjcHVpZCAldSBmYWlsZWQgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AYmluZF90b19jcHUgZmFpbGVkOiBwcm9jZXNzb3JfYmluZCBmb3IgdGhyZWFkICUlbGx4IHdpdGggY3B1IGlkICV1IChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuACVzIGZhaWxlZDogcHJvY2Vzc29yX2FmZmluaXR5IGZhaWxlZCAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBFcnJvciBpbiByZW5hbWluZyBteXNxbF9pbmRleF9zdGF0cy5pYmQuAEVycm9yIGluIG9wZW5pbmcgZGF0YSBkaXJlY3RvcnkgJXMuAEVycm9yIGluIGZldGNoaW5nIGxpc3Qgb2YgdGFibGVzcGFjZXMuAEVycm9yIGluIGFjcXVpcmluZyBUYWJsZXNwYWNlIGZvciBTREkgaW5zZXJ0aW9uICVzLgBFcnJvciBpbiByZXNvbHZpbmcgRW5naW5lIG5hbWUgZm9yIHRhYmxlc3BhY2UgJXMgd2l0aCBlbmdpbmUgJXMuAEVycm9yIGluIGNyZWF0aW5nIFNESSBmb3IgJXMgdGFibGVzcGFjZS4ARXJyb3IgaW4gc3RvcmluZyBTREkgZm9yICVzIHRhYmxlc3BhY2UuAEVycm9yIGluIGZldGNoaW5nIGxpc3Qgb2YgdGFibGVzLgBGaW5pc2hlZCBwb3B1bGF0aW5nIERhdGEgRGljdGlvbmFyeSB0YWJsZXMgd2l0aCBkYXRhLgBDb3VsZCBub3Qgb3BlbiB0aGUgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBpbiB0aGUgTXlTUUwgc2VydmVycyBkYXRhZGlyLCBlcnJubzogJWQuAENvdWxkIG5vdCBjbG9zZSB0aGUgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBpbiB0aGUgTXlTUUwgc2VydmVycyBkYXRhZGlyLCBlcnJubzogJWQuAEdvdCBlcnJvciAlZCBmcm9tIFNFIHdoaWxlIG1pZ3JhdGluZyB0YWJsZXNwYWNlcy4ARXJyb3IgaW4gY3JlYXRpbmcgVEFCTEUgc3RhdGlzdGljcyBlbnRyeS4gRml4IHN0YXRpc3RpY3MgZGF0YSBieSB1c2luZyBBTkFMWVpFIGNvbW1hbmQuAEZpbmlzaGVkIG1pZ3JhdGluZyBUQUJMRSBzdGF0aXN0aWNzIGRhdGEuAEVycm9yIGluIGNyZWF0aW5nIEluZGV4IHN0YXRpc3RpY3MgZW50cnkuIEZpeCBzdGF0aXN0aWNzIGRhdGEgYnkgdXNpbmcgQU5BTFlaRSBjb21tYW5kLgBGaW5pc2hlZCBtaWdyYXRpbmcgSU5ERVggc3RhdGlzdGljcyBkYXRhLgBGYWlsZWQgdG8gZmluZCB2YWxpZCBkYXRhIGRpcmVjdG9yeS4AU3RhcnRpbmcgdXBncmFkZSBvZiBkYXRhIGRpcmVjdG9yeS4ARmFpbGVkIHRvIGluaXRpYWxpemUgREQgU3RvcmFnZSBFbmdpbmUuAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gQWJvcnRpbmcgdXBncmFkZSBhbmQgZGVsZXRpbmcgYWxsIEREIHRhYmxlcy4gU3RhcnQgdGhlIHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4ARm91bmQgcGFydGlhbGx5IHVwZ3JhZGVkIERELiBVcGdyYWRlIHdpbGwgY29udGludWUgYW5kIHN0YXJ0IHRoZSBzZXJ2ZXIuAEVycm9yIGluIHVwZ3JhZGluZyBlbmdpbmUgbG9ncy4ARXJyb3IgaW4gdXBkYXRpbmcgU0RJIGluZm9ybWF0aW9uLgBTa2lwIHVwZGF0aW5nICVzIG1ldGFkYXRhIGluIElubm9EQiByZWFkLW9ubHkgbW9kZS4AQ3JlYXRlZCBzeXN0ZW0gdmlld3Mgd2l0aCBJX1MgdmVyc2lvbiAlZC4AVW5rbm93biBlcnJvciBkZXRlY3RlZCAlZCBpbiBoYW5kbGVyLgBFcnJvciBpbiBMb2dfZXZlbnQ6OnJlYWRfbG9nX2V2ZW50KCk6ICclcycsIGRhdGFfbGVuOiAlbHUsIGV2ZW50X3R5cGU6ICVkLgBUaGUgcm93IGRhdGEgaXMgZ3JlYXRlciB0aGFuIDRHQiwgd2hpY2ggaXMgdG9vIGJpZyB0byB3cml0ZSB0byB0aGUgYmluYXJ5IGxvZy4AVW5hYmxlIHRvIGNvbnN0cnVjdCBEUk9QIEVWRU5UIFNRTCBxdWVyeSBzdHJpbmcuAFVuYWJsZSB0byBiaW5sb2cgZHJvcCBldmVudCAlcy4lcy4ARmFpbGVkIHRvIHN0YXJ0IHJlcGxpY2EgdGhyZWFkcyBmb3IgY2hhbm5lbCAnJXMnLgAlcyVzLgBGYWlsZWQgcmVnaXN0ZXJpbmcgb24gc291cmNlLCByZWNvbm5lY3RpbmcgdG8gdHJ5IGFnYWluLCBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcy4gJXMuAFJlcGxpY2EgSS9PIHRocmVhZCBraWxsZWQgZHVyaW5nIG9yIGFmdGVyIHJlY29ubmVjdC4AU29tZSBvZiB0aGUgY2hhbm5lbHMgYXJlIG5vdCBjcmVhdGVkL2luaXRpYWxpemVkIHByb3Blcmx5LiBDaGVjayBmb3IgYWRkaXRpb25hbCBtZXNzYWdlcyBhYm92ZS4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gc3RhcnQgcmVwbGljYXRpb24gb24gdGhvc2UgY2hhbm5lbHMgdW50aWwgdGhlIGlzc3VlIGlzIHJlc29sdmVkIGFuZCB0aGUgc2VydmVyIHJlc3RhcnRlZC4ARmFpbGVkIHRvIGFkZCBhIHJlcGxpY2F0aW9uIGZpbHRlciBpbnRvIGZpbHRlciBtYXAgZm9yIGNoYW5uZWwgJyUuMTkycycuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgZ3JvdXAgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBpcyBkaXNhbGxvd2VkLiBUaGUgZmlsdGVyKHMpIGhhdmUgYmVlbiBkaXNjYXJkZWQuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBkb2VzIG5vdCBleGlzdC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBidWlsZGluZyBkb190YWJsZSBhbmQgaWdub3JlX3RhYmxlIHJ1bGVzIHRvIGhhc2hlcyBmb3IgcGVyLWNoYW5uZWwgZmlsdGVyLgBDbG9uZSBwbHVnaW4gY2Fubm90IGJlIGxvYWRlZC4AQ2xvbmUgSGFuZGxlciBleGlzdHMuAENvdWxkIG5vdCBjcmVhdGUgQ2xvbmUgSGFuZGxlci4AVGhlIENZQ0xFIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIFdBSVQgZXZlbnRzIGluIHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEgd2lsbCBub3QgYmUgdGltZWQuAFRoZSBOQU5PU0VDT05EIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIElETEUvU1RBR0UvU1RBVEVNRU5UL1RSQU5TQUNUSU9OIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBUaGUgTUlDUk9TRUNPTkQgdGltZXIgaXMgbm90IGF2YWlsYWJsZS4gSURMRS9TVEFHRS9TVEFURU1FTlQvVFJBTlNBQ1RJT04gZXZlbnRzIGluIHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEgd2lsbCBub3QgYmUgdGltZWQuAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICV6dSBjaHVua3MgZWFjaCBvZiBzaXplICV6dSBmb3IgYnVmZmVyICclcycgZHVlIHRvIG92ZXJmbG93LgBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGZvciBidWZmZXIgJyVzJyBkdWUgdG8gb3V0LW9mLW1lbW9yeS4ASW5ub0RCIGNvdWxkIG5vdCBmaW5kIGluZGV4ICVzIGtleSBubyAldSBmb3IgdGFibGUgJXMgdGhyb3VnaCBpdHMgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuAENhbm5vdCBmaW5kIGluZGV4ICVzIGluIElubm9EQiBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4ASW5ub0RCIGNvdWxkIG5vdCBmaW5kIGtleSBubyAldSB3aXRoIG5hbWUgJXMgZnJvbSBkaWN0IGNhY2hlIGZvciB0YWJsZSAlcy4ASW5ub0RCOiBjaGFuZ2VfYWN0aXZlX2luZGV4KCV1KSBmYWlsZWQuAFN0b3JlZCByZWYgbGVuIGlzICVsdSwgYnV0IHRhYmxlIHJlZiBsZW4gaXMgJWx1LgBNeVNRTCBpcyB0cnlpbmcgdG8gY3JlYXRlIGEgY29sdW1uIHByZWZpeCBpbmRleCBmaWVsZCwgb24gYW4gaW5hcHByb3ByaWF0ZSBkYXRhIHR5cGUuIFRhYmxlIG5hbWUgJXMsIGNvbHVtbiBuYW1lICVzLgBDYW5ub3QgY3JlYXRlIHRhYmxlICVzLgBGb3VuZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggbGlzdCBidXQgbm90IGl0cyBNeVNRTCBpbmRleCBudW1iZXIuIEl0IGNvdWxkIGJlIGFuIElubm9EQiBpbnRlcm5hbCBpbmRleC4ASW5ub0RCOiBUYWJsZSAlcyBjb250YWlucyAlbHUgaW5kZXhlcyBpbnNpZGUgSW5ub0RCLCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbnVtYmVyIG9mIGluZGV4ZXMgJXUgZGVmaW5lZCBpbiBNeVNRTC4AVGFibGUgJXMgY29udGFpbnMgZmV3ZXIgaW5kZXhlcyBpbnNpZGUgSW5ub0RCIHRoYW4gYXJlIGRlZmluZWQgaW4gdGhlIE15U1FMLiBIYXZlIHlvdSBtaXhlZCB1cCB3aXRoIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpZmZlcmVudCBpbnN0YWxsYXRpb24/AEluZGV4ICVzIG9mICVzIGhhcyAlbHUgY29sdW1ucyB1bmlxdWUgaW5zaWRlIElubm9EQiwgYnV0IE15U1FMIGlzIGFza2luZyBzdGF0aXN0aWNzIGZvciAlbHUgY29sdW1ucy4gSGF2ZSB5b3UgbWl4ZWQgZGF0YSBkaWN0aW9uYXJ5IGZyb20gZGlmZmVyZW50IGluc3RhbGxhdGlvbj8ATW9uaXRvciBjb3VudGVyICclcycgY2Fubm90IGJlIHR1cm5lZCBvbi9vZmYgaW5kaXZpZHVhbGx5LiBQbGVhc2UgdXNlIGl0cyBtb2R1bGUgbmFtZSB0byB0dXJuIG9uL29mZiB0aGUgY291bnRlcnMgaW4gdGhlIG1vZHVsZSBhcyBhIGdyb3VwLgBEZWZhdWx0IHZhbHVlIGlzIG5vdCBkZWZpbmVkIGZvciB0aGlzIHNldCBvcHRpb24uIFBsZWFzZSBzcGVjaWZ5IGNvcnJlY3QgY291bnRlciBvciBtb2R1bGUgbmFtZS4ASW5ub0RCOiBNb25pdG9yICVzIGlzIGFscmVhZHkgZW5hYmxlZC4ASW52YWxpZCBtb25pdG9yIGNvdW50ZXIgOiAlcy4ATG9hZExpYnJhcnkoIiVzIikgZmFpbGVkOiBHZXRMYXN0RXJyb3IgcmV0dXJucyAlbHUuACVzLgAlcy4AJXMuACVzLgAlcy4AJXMuAFVuYWJsZSB0byB3YWl0IGZvciBwcm9jZXNzICVsbGQuAFVuYWJsZSB0byBkZXRlcm1pbmUgaWYgZGFlbW9uIGlzIHJ1bm5pbmc6ICVzIChyYz0lZCkuACVzAFtGQVRBTF0gSW5ub0RCOiAlcwBUaGUgc3ludGF4ICclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZC4AVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgAlcwBCaW5hcnkgbG9nZ2luZyBub3QgcG9zc2libGUuIE1lc3NhZ2U6ICVzLgBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBDYW5ub3QgYWNxdWlyZSBzcGVjaWZpZWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbjogJyUuMTkycycuAEludmFsaWQgVkNQVSByYW5nZSAldS0ldS4ASW52YWxpZCBjcHUgaWQgJXUuAEdvdCBlcnJvciAlZCBkdXJpbmcgRkxVU0hfTE9HUy4AUHJvYmxlbSB3aGlsZSBkcm9wcGluZyBkYXRhYmFzZS4gQ2FuJ3QgcmVtb3ZlIGRhdGFiYXNlIGRpcmVjdG9yeSAoJXMpLiBQbGVhc2UgcmVtb3ZlIGl0IG1hbnVhbGx5LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBvcHRpb24gYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMuIFRoZXJlZm9yZSwgdmFsdWUgb2YgZXhwaXJlX2xvZ3NfZGF5cyBpcyBpZ25vcmVkLgBtYWxmb3JtZWQgb3IgdmVyeSBvbGQgcmVsYXkgbG9nIHdoaWNoIGRvZXMgbm90IGhhdmUgRm9ybWF0RGVzY3JpcHRvci4AVXBncmFkZSBvZiB2aWV3ICclcy4lcycgZmFpbGVkLiBSZS1jcmVhdGUgdGhlIHZpZXcgd2l0aCB0aGUgZXhwbGljaXQgY29sdW1uIG5hbWUgbGVzc2VyIHRoYW4gNjQgY2hhcmFjdGVycy4AVGFibGUgdXBncmFkZSByZXF1aXJlZCBmb3IgYCUtLjY0c2AuYCUtLjY0c2AuIFBsZWFzZSBkdW1wL3JlbG9hZCB0YWJsZSB0byBmaXggaXQhAEVycm9yIGluIHVwZGF0aW5nIHZlcnNpb24gbnVtYmVyIGluICVzIHRhYmxlc3BhY2UuAEtleXJpbmcgbWlncmF0aW9uIGZhaWxlZC4AS2V5cmluZyBtaWdyYXRpb24gc3VjY2Vzc2Z1bC4AUmVjZWl2ZWQgUkVTVEFSVCBmcm9tIHVzZXIgJXMuICBSZXN0YXJ0aW5nIG15c3FsZCAoVmVyc2lvbjogJXMpLgBEaWZmZXJlbnQgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBzZXR0aW5ncyBmb3Igc2VydmVyICgnJXUnKSBhbmQgZGF0YSBkaWN0aW9uYXJ5ICgnJXUnKS4ARGF0YSBkaWN0aW9uYXJ5IGluaXRpYWxpemluZyB2ZXJzaW9uICcldScuAERhdGEgZGljdGlvbmFyeSByZXN0YXJ0aW5nIHZlcnNpb24gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgdXBncmFkZSBwcm9oaWJpdGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICctLW5vX2RkX3VwZ3JhZGUnLgBVcGdyYWRpbmcgdGhlIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpY3Rpb25hcnkgdmVyc2lvbiAnJXUnIGlzIG5vdCBzdXBwb3J0ZWQuAFVwZ3JhZGluZyB0aGUgZGF0YSBkaWN0aW9uYXJ5IGZhaWxlZCwgdGVtcG9yYXJ5IHNjaGVtYSBuYW1lICclLS4xOTJzJyBub3QgYXZhaWxhYmxlLgBEYXRhIGRpY3Rpb25hcnkgbWlub3IgZG93bmdyYWRlIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAE1pbm9yIGRvd25ncmFkZSBvZiB0aGUgRGF0YSBkaWN0aW9uYXJ5IGZyb20gZGljdGlvbmFyeSB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4ATm8gZGF0YSBkaWN0aW9uYXJ5IHZlcnNpb24gbnVtYmVyIGZvdW5kLgBUaHJlYWQgcG9vbCBub3Qgc3VwcG9ydGVkLCByZXF1aXJlcyBhIG1pbmltdW0gb2YgJXMuAHRocmVhZF9wb29sX3NpemU9MCBtZWFucyB0aHJlYWQgcG9vbCBkaXNhYmxlZCwgQWxsb3dlZCByYW5nZSBvZiB0aHJlYWRfcG9vbF9zaXplIGlzICVkLSVkLgB0aHJlYWRfcG9vbF9zaXplPSVsdSBpcyB0b28gaGlnaCwgJWQgaXMgbWF4aW11bSwgdGhyZWFkIHBvb2wgaXMgZGlzYWJsZWQuIEFsbG93ZWQgcmFuZ2Ugb2YgdGhyZWFkX3Bvb2xfc2l6ZSBpcyAlZC0lZC4AdGhyZWFkX3Bvb2xfYWxnb3JpdGhtIGNhbiBiZSBzZXQgdG8gMCBhbmQgMSwgMCBpbmRpY2F0ZXMgdGhlIGRlZmF1bHQgbG93IGNvbmN1cnJlbmN5IGFsZ29yaXRobSwgMSBtZWFucyBhIGhpZ2ggY29uY3VycmVuY3kgYWxnb3JpdGhtLgB0aHJlYWRfcG9vbF9zdGFsbF9saW1pdCBjYW4gYmUgJWQgYXQgbWluaW11bSBhbmQgJWQgYXQgbWF4aW11bSwgc21hbGxlciB2YWx1ZXMgd291bGQgcmVuZGVyIHRoZSB0aHJlYWQgcG9vbCBmYWlybHkgdXNlbGVzcyBhbmQgaGlnaGVyIHZhbHVlcyBjb3VsZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGhhdmUgdW5kZXRlY3RlZCBkZWFkbG9jayBpc3N1ZXMgaW4gdGhlIE15U1FMIFNlcnZlci4ASW52YWxpZCB2YWx1ZSBvZiB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciBzcGVjaWZpZWQuIFZhbHVlIG9mIHRocmVhZF9wb29sX3ByaW9fa2lja3VwX3RpbWVyIHNob3VsZCBiZSBpbiByYW5nZSAwLTQyOTQ5NjcyOTQuAHRocmVhZF9wb29sX21heF91bnVzZWRfdGhyZWFkcyBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuICVkLgBGYWlsZWQgdG8gaW5zdGFudGlhdGUgdGhlIGNvbm5lY3Rpb24gaGFuZGxlciBvYmplY3QuAEZhaWxlZCB0byBpbml0aWFsaXplIHRocmVhZCBwb29sIHBsdWdpbi4AVGhyZWFkIHBvb2wgcGx1Z2luIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggcGFyYW1ldGVyczogdGhyZWFkX3Bvb2xfc2l6ZSA9ICVsdSwgdGhyZWFkX3Bvb2xfYWxnb3JpdGhtID0gJXMsIHRocmVhZF9wb29sX3N0YWxsX2xpbWl0ID0gJXUsIHRocmVhZF9wb29sX3ByaW9fa2lja3VwX3RpbWVyID0gJXUsIHRocmVhZF9wb29sX21heF91bnVzZWRfdGhyZWFkcyA9ICV1LCB0aHJlYWRfcG9vbF9oaWdoX3ByaW9yaXR5X2Nvbm5lY3Rpb24gPSAlZC4AQ2FuJ3Qgc2V0dXAgY29ubmVjdGlvbiB0ZWFyZG93biB0aHJlYWQtc3BlY2lmaWMgZGF0YS4AQ3JlYXRpb24gb2YgY29ubmVjdCBoYW5kbGVyIHRocmVhZCBmYWlsZWQuAEZhaWxlZCB0byBjcmVhdGUgdGhkIGFuZCBhdXRoZW50aWNhdGUgY29ubmVjdGlvbi4ARmFpbGVkIHRvIHByb2Nlc3MgY29ubmVjdGlvbiBldmVudC4AQ2FuJ3QgY3JlYXRlIHBvb2wgdGhyZWFkIChlcnJvciAlZCwgZXJybm86ICVkKS4AJS4qcy4AdHBfZ3JvdXBfbG93X2xldmVsX2luaXQoKSBmYWlsZWQuAFJlYXJtIGZhaWxlZCBldmVuIGFmdGVyIDMwIHNlY29uZHMsIGNhbid0IGNvbnRpbnVlIHdpdGhvdXQgbm90aWZ5IHNvY2tldC4AJXM6ICVzIGJ1ZmZlciBpcyB0b28gc21hbGwATWVjYWIgdiVzIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZSBsb3dlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgdiVzLgBNZWNhYiB2JXMgaXMgbm90IHZlcmlmaWVkLCB0aGUgaGlnaGVzdCB2ZXJzaW9uIHN1cHBvcnRlZCBpcyB2JXMuAE1lY2FiOiBUcnlpbmcgY3JlYXRlTW9kZWwoJXMpLgBNZWNhYjogY3JlYXRlTW9kZWwoKSBmYWlsZWQ6ICVzLgBNZWNhYjogY3JlYXRlVGFnZ2VyKCkgZmFpbGVkOiAlcy4ATWVjYWI6IFVuc3VwcG9ydGVkIGRpY3Rpb25hcnkgY2hhcnNldCAlcy4ATWVjYWI6IExvYWRlZCBkaWN0aW9uYXJ5IGNoYXJzZXQgaXMgJXMuAE1lY2FiOiBwYXJzZSgpIGZhaWxlZDogJXMuAE1lY2FiOiBwYXJzZSgpIGZhaWxlZDogb3V0IG9mIG1lbW9yeS4ATWVjYWI6IGNyZWF0ZUxhdHRpY2UoKSBmYWlsZWQ6ICVzLgAtLS0+ICVzIGVudGVyLgA8LS0tICVzIGV4aXQgKCVkKS4APC0tLSAlcyBleGl0ICglcykuADwtLS0gJXMgZXhpdC4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGluaXRpYWxpemVkIGZvciB0cmFuc2FjdGlvbnMuACVzOiB0cmFuc2FjdGlvbiBub2RlIGFsbG9jYXRpb24gZmFpbGVkIGZvcjogKCVzLCAlbHUpLgAlczogYmlubG9nIHdyaXRlIG91dC1vZi1vcmRlciwgdGFpbCAoJXMsICVsdSksIG5ldyBub2RlICglcywgJWx1KS4AJXM6IGluc2VydCAoJXMsICVsdSkgaW4gZW50cnkoJXUpLgAlczogcHJvYmUgKCVzLCAlbHUpIGluIGVudHJ5KCV1KS4AJXM6IGNsZWFyZWQgYWxsIG5vZGVzLgAlczogY2xlYXJlZCAlZCBub2RlcyBiYWNrIHVudGlsIHBvcyAoJXMsICVsdSkuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IG1hZ2ljIG51bWJlciBlcnJvci4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgbGVuZ3RoIGVycm9yOiBwYWNrZXQgaXMgdG9vIHNtYWxsLgBSZWFkIHNlbWktc3luYyByZXBseSBiaW5sb2cgZmlsZSBsZW5ndGggdG9vIGxhcmdlLgAlczogR290IHJlcGx5KCVzLCAlbHUpIGZyb20gc2VydmVyICV1LgAlcyBjYWxsZWQgdHdpY2UuAFNlbWktc3luYyByZXBsaWNhdGlvbiBlbmFibGVkIG9uIHRoZSBzb3VyY2UuAENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgdG8gZW5hYmxlIHNlbWktc3luYyBvbiB0aGUgc291cmNlLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gZGlzYWJsZWQgb24gdGhlIHNvdXJjZS4AU0VNSVNZTkM6IEZvcmNlZCBzaHV0ZG93bi4gU29tZSB1cGRhdGVzIG1pZ2h0IG5vdCBiZSByZXBsaWNhdGVkLgAlczogR290IHJlcGx5IGF0ICglcywgJWx1KS4AJXM6IHNpZ25hbCBhbGwgd2FpdGluZyB0aHJlYWRzLgAlczogd2FpdCBwb3MgKCVzLCAlbHUpLCByZXBsKCVkKS4AJXM6IEJpbmxvZyByZXBseSBpcyBhaGVhZCAoJXMsICVsdSkuACVzOiBtb3ZlIGJhY2sgd2FpdCBwb3NpdGlvbiAoJXMsICVsdSkuACVzOiBpbml0IHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgAlczogd2FpdCAlbHUgbXMgZm9yIGJpbmxvZyBzZW50ICglcywgJWx1KS4AVGltZW91dCB3YWl0aW5nIGZvciByZXBseSBvZiBiaW5sb2cgKGZpbGU6ICVzLCBwb3M6ICVsdSksIHNlbWktc3luYyB1cCB0byBmaWxlICVzLCBwb3NpdGlvbiAlbHUuAEFzc2Vzc21lbnQgb2Ygd2FpdGluZyB0aW1lIGZvciBjb21taXRUcnggZmFpbGVkIGF0IHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gc3dpdGNoZWQgT0ZGLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gc3dpdGNoZWQgT04gYXQgKCVzLCAlbHUpLgBObyBlbm91Z2ggc3BhY2UgaW4gdGhlIHBhY2tldCBmb3Igc2VtaS1zeW5jIGV4dHJhIGhlYWRlciwgc2VtaS1zeW5jIHJlcGxpY2F0aW9uIGRpc2FibGVkLgAlczogc2VydmVyKCVkKSwgKCVzLCAlbHUpIHN5bmMoJWQpLCByZXBsKCVkKS4AU2VtaS1zeW5jIGZhaWxlZCB0byBpbnNlcnQgdHJhbnhfbm9kZSBmb3IgYmlubG9nIGZpbGU6ICVzLCBwb3NpdGlvbjogJWx1LgAlczogVHJhbnNhY3Rpb24gc2tpcHBlZCBhdCAoJXMsICVsdSkuAFNlbWktc3luYyBzb3VyY2UgZmFpbGVkIG9uIG5ldF9mbHVzaCgpIGJlZm9yZSB3YWl0aW5nIGZvciByZXBsaWNhIHJlcGx5LgBUaGUgcmVjZWl2ZWQgYWNrIGlzIHNtYWxsZXIgdGhhbiBtX2dyZWF0ZXN0X2Fjay4AQWRkIHRoZSBhY2sgaW50byBzbG90ICV1LgBVcGRhdGUgYW4gZXhzaXRpbmcgYWNrIGluIHNsb3QgJXUuAEZhaWxlZCB0byBzdGFydCBzZW1pLXN5bmMgQUNLIHJlY2VpdmVyIHRocmVhZCwgIGNvdWxkIG5vdCBjcmVhdGUgdGhyZWFkKGVycm5vOiVkKS4AU3RhcnRpbmcgYWNrIHJlY2VpdmVyIHRocmVhZC4ARmFpbGVkIHRvIHdhaXQgb24gc2VtaS1zeW5jIGR1bXAgc29ja2V0cywgZXJyb3I6IGVycm5vPSVkLgBTdG9wcGluZyBhY2sgcmVjZWl2ZXIgdGhyZWFkLgBGYWlsZWQgdG8gcmVnaXN0ZXIgcmVwbGljYSB0byBzZW1pLXN5bmMgQUNLIHJlY2VpdmVyIHRocmVhZC4AU3RhcnQgJXMgYmlubG9nX2R1bXAgdG8gcmVwbGljYSAoc2VydmVyX2lkOiAlZCksIHBvcyglcywgJWx1KS4AU3RvcCAlcyBiaW5sb2dfZHVtcCB0byByZXBsaWNhIChzZXJ2ZXJfaWQ6ICVkKS4AdW5yZWdpc3Rlcl90cmFuc19vYnNlcnZlciBmYWlsZWQuAHVucmVnaXN0ZXJfYmlubG9nX3N0b3JhZ2Vfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX2JpbmxvZ190cmFuc21pdF9vYnNlcnZlciBmYWlsZWQuAHVucmVnaXN0ZXJfcmVwbGljYXRvciBPSy4AU2VtaXN5bmMgcmVwbGljYSBzb2NrZXQgZmQgaXMgJXUuIHNlbGVjdCgpIGNhbm5vdCBoYW5kbGUgaWYgdGhlIHNvY2tldCBmZCBpcyBiaWdnZXIgdGhhbiAldSAoRkRfU0VUU0laRSkuACVzOiByZXBseSAtICVkLgBNaXNzaW5nIG1hZ2ljIG51bWJlciBmb3Igc2VtaS1zeW5jIHBhY2tldCwgcGFja2V0IGxlbjogJWx1LgBSZXBsaWNhIEkvTyB0aHJlYWQ6IFN0YXJ0ICVzIHJlcGxpY2F0aW9uIHRvIHNvdXJjZSAnJXNAJXM6JWQnIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVsdS4AJXM6IHJlcGx5ICglcywgJWx1KS4AU2VtaS1zeW5jIHJlcGxpY2EgbmV0X2ZsdXNoKCkgcmVwbHkgZmFpbGVkLgBTZW1pLXN5bmMgcmVwbGljYSBzZW5kIHJlcGx5IGZhaWxlZDogJXMgKCVkKS4ARXhlY3V0aW9uIGZhaWxlZCBvbiBzb3VyY2U6ICVzOyBlcnJvciAlZABTb3VyY2Ugc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgc2VtaS1zeW5jLCBmYWxsYmFjayB0byBhc3luY2hyb25vdXMgcmVwbGljYXRpb24AU2V0ICdycGxfc2VtaV9zeW5jX3JlcGxpY2E9MScgb24gc291cmNlIGZhaWxlZABGYWlsZWQgdG8gc3RvcCBhY2sgcmVjZWl2ZXIgdGhyZWFkIG9uIG15X3RocmVhZF9qb2luLCBlcnJubyglZCkuAEZhaWxlZCB0byByZWFkIHRoZSBmaXJld2FsbCB0YWJsZXMARmFpbGVkIHRvIHJlZ2lzdGVyIGR5bmFtaWMgcHJpdmlsZWdlcwBTdGF0ZW1lbnQgd2FzIHRydW5jYXRlZCBhbmQgbm90IHJlY29yZGVkOiAlcwBTdGF0ZW1lbnQgd2l0aCBubyB0ZXh0IHdhcyBub3QgcmVjb3JkZWQAU1VTUElDSU9VUyBTVEFURU1FTlQgZnJvbSAnJXMnLiBSZWFzb246ICVzIFN0YXRlbWVudDogJXMAQUNDRVNTIERFTklFRCBmb3IgJyVzJy4gUmVhc29uOiAlcyBTdGF0ZW1lbnQ6ICVzAFNraXBwZWQgdW5rbm93biB1c2VyIG1vZGUgJyVzJwBSZWxvYWRpbmcgY2FjaGUgZnJvbSBkaXNrAEZJUkVXQUxMIFJFU0VUIGZvciAnJXMnAENvdW50ZXJzIGFyZSByZXNldCB0byB6ZXJvACVzAEF1ZGl0IExvZyBwbHVnaW4gc3VwcG9ydHMgZmlsdGVyaW5nIG1vZGUsIHdoaWNoIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgeWV0LiBBdWRpdCBMb2cgcGx1Z2luIHdpbGwgcnVuIGluIHRoZSBsZWdhY3kgbW9kZSwgd2hpY2ggd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuAFByZXZpb3VzbHkgZXhjbHVkZSBsaXN0IGlzIHVzZWQsIG5vdyB3ZSBzdGFydCB1c2luZyBpbmNsdWRlIGxpc3QsIGV4Y2x1ZGUgbGlzdCBpcyBzZXQgdG8gTlVMTC4AQ2Fubm90IHNldCBhdWRpdF9sb2dfcG9saWN5IHNpbXVsdGFuZW91c2x5IHdpdGggZWl0aGVyIGF1ZGl0X2xvZ19jb25uZWN0aW9uX3BvbGljeSBvciAgYXVkaXRfbG9nX3N0YXRlbWVudF9wb2xpY3ksIHNldHRpbmcgYXVkaXRfbG9nX2Nvbm5lY3Rpb25fcG9saWN5IGFuZCBhdWRpdF9sb2dfc3RhdGVtZW50X3BvbGljeSBiYXNlZCBvbiBhdWRpdF9sb2dfcG9saWN5LgBCb3RoIGluY2x1ZGUgYW5kIGV4Y2x1ZGUgbGlzdHMgcHJvdmlkZWQsIGluY2x1ZGUgbGlzdCBpcyBwcmVmZXJyZWQsIGV4Y2x1ZGUgbGlzdCBpcyBzZXQgdG8gTlVMTC4AQ291bGQgbm90IGFjY2VzcyAnJXMnIGRpcmVjdG9yeS4AQ291bGQgbm90IHJlbmFtZSBmaWxlIGZyb20gJyVzJyB0byAnJXMnLgBGaWxlICclcycgc2hvdWxkIG5vdCBleGlzdC4gSXQgbWF5IGJlIGluY29tcGxldGUuIFRoZSBzZXJ2ZXIgY3Jhc2hlZC4AQ291bGQgbm90IHJlbmFtZSBmaWxlIGZyb20gJyVzJyB0byAnJXMnLiBSZW1vdmUgdGhlIGZpbGUgbWFudWFsbHkuAEluY29tcGxldGUgZmlsZSByZW5hbWVkIGZyb20gJyVzJyB0byAnJXMnLgBFcnJvciB3cml0aW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykuAENvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWxlIGVuY3J5cHRpb24uAENvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWxlIGNvbXByZXNzaW9uLgBDb3VsZCBub3QgY3JlYXRlICclcycgZmlsZSBmb3IgYXVkaXQgbG9nZ2luZy4AQXVkaXQgbG9nIGZpbGUgKCVzKSBtdXN0IGJlIG1hbnVhbGx5IHJlbmFtZWQgYmVmb3JlIGF1ZGl0X2xvZ19mbHVzaCBpcyBzZXQgdG8gdHJ1ZS4AJXMARXJyb3IgcGFyc2luZyBKU09OIGV2ZW50LiBFdmVudCBub3QgYWNjZXNzaWJsZS4AQnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIEpTT04gZXZlbnQuIE51bWJlciBvZiBldmVudHMgc2tpcHBlZDogJXp1LgBDb3VsZCBub3Qgb3BlbiBKU09OIGZpbGUgZm9yIHJlYWRpbmcuIFJlYWRpbmcgbmV4dCBmaWxlIGlmIGV4aXN0cy4ASlNPTiBmaWxlIHBhcnNpbmcgZXJyb3IuIFJlYWRpbmcgbmV4dCBmaWxlIGlmIGV4aXN0cwBJbnZhbGlkIGNvbHVtbiBjb3VudCBpbiB0aGUgJyVzLiVzJyB0YWJsZS4ASW52YWxpZCBjb2x1bW4gZGVmaW5pdGlvbiBvZiB0aGUgJyVzLiVzJyB0YWJsZS4AQ291bGQgbm90IHN0b3JlIGZpZWxkIG9mIHRoZSAlcyB0YWJsZS4AQ291bGQgbm90IHVwZGF0ZSAlcyB0YWJsZS4AQ291bGQgbm90IGluc2VydCBpbnRvICVzIHRhYmxlLgBDb3VsZCBub3QgZGVsZXRlIGZyb20gJXMgdGFibGUuAENvdWxkIG5vdCBpbml0aWFsaXplICVzIHRhYmxlIGZvciByZWFkaW5nLgBDb3VsZCBub3QgcmVhZCAlcyB0YWJsZS4AQ291bGQgbm90IGNsb3NlICVzIHRhYmxlIHJlYWRpbmcuAEJvdGggdXNlciBhbmQgaG9zdCBjb2x1bW5zIG9mICVzIHRhYmxlIGNhbm5vdCBiZSBlbXB0eS4ARmlsdGVybmFtZSBjb2x1bW4gb2YgJXMgdGFibGUgY2Fubm90IGJlIGVtcHR5LgBEaWN0aW9uYXJ5IGZpbGUgbm90IHNwZWNpZmllZABEaWN0aW9uYXJ5IGZpbGUgbm90IGxvYWRlZABEaWN0aW9uYXJ5IGZpbGUgc2l6ZSBleGNlZWRlZCBNQVhfRElDVElPTkFSWV9GSUxFX0xFTkdUSCwgbm90IGxvYWRlZABFeGNlcHRpb24gd2hpbGUgcmVhZGluZyB0aGUgZGljdGlvbmFyeSBmaWxlAENhbid0IHJldHJpZXZlIHRoZSAlcyBmcm9tIHRoZSBzZWN1cml0eSBjb250ZXh0AENhbid0IHJldHJpZXZlIHRoZSBzZWN1cml0eSBjb250ZXh0AEVmZmVjdGl2ZSB2YWx1ZSBvZiB2YWxpZGF0ZV9wYXNzd29yZF9sZW5ndGggaXMgY2hhbmdlZC4gTmV3IHZhbHVlIGlzICVkACVzAFJld3JpdHRlbiBxdWVyeSBmYWlsZWQgdG8gcGFyc2U6JXMAU3RhcnR1cCBmYWlsZWQgd2l0aCBlcnJvciAiJXMiAEV4aXRpbmcARXhpdCBkb25lAFVzaW5nIFNTTCBjb25maWd1cmF0aW9uIGZyb20gTXlTUUwgU2VydmVyAFVzaW5nIFNTTCBjb25maWd1cmF0aW9uIGZyb20gTXlzcWx4IFBsdWdpbgBOZWl0aGVyIE15U1FMIFNlcnZlciBub3IgTXlzcWx4IFBsdWdpbiBoYXMgdmFsaWQgU1NMIGNvbmZpZ3VyYXRpb24AVXNpbmcgJXMgZm9yIFRMUyBjb25uZWN0aW9ucwBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGUgVXNpbmcgU2VjdXJlIENvbm5lY3Rpb25zIHdpdGggWCBQbHVnaW4gc2VjdGlvbiBpbiB0aGUgTXlTUUwgZG9jdW1lbnRhdGlvbgAlcwBGYWlsZWQgdG8gcGFyc2Ugc3RvcmVkIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBmb3IgJXMuIFBsZWFzZSBjaGVjayBpZiBteXNxbC51c2VyIHRhYmxlIG5vdCBjb3JydXB0ZWQARXJyb3IgaW4gZ2VuZXJhdGluZyBtdWx0aS1yb3VuZCBoYXNoIGZvciAlcy4gUGx1Z2luIGNhbiBub3QgcGVyZm9ybSBhdXRoZW50aWNhdGlvbiB3aXRob3V0IGl0LiBUaGlzIG1heSBiZSBhIHRyYW5zaWVudCBwcm9ibGVtAEF1dGhlbnRpY2F0aW9uIHJlcXVpcmVzIGVpdGhlciBSU0Ega2V5cyBvciBTU0wgZW5jcnlwdGlvbgBSU0Ega2V5IGNpcGhlciBsZW5ndGggb2YgJXUgaXMgdG9vIGxvbmcuIE1heCB2YWx1ZSBpcyAldQBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcwBGYWlsZWQgdG8gb3BlbiAnJXMuJXMnICVzIHRhYmxlACVzACVzACVzAFBhc3N3b3JkIHNhbHQgZm9yIHVzZXIgJyVzJyBpcyBjb3JydXB0AE91dCBvZiBtZW1vcnkgZm9yIGNvbXBvbmVudCBzeXN0ZW0gdmFyaWFibGUgJyVzJy4AdmFyaWFibGUgJXMgb2YgY29tcG9uZW50ICVzIHdhcyBmb3JjZWQgdG8gYmUgcmVhZC1vbmx5OiBzdHJpbmcgdmFyaWFibGUgd2l0aG91dCB1cGRhdGVfZnVuYyBhbmQgUExVR0lOX1ZBUl9NRU1BTExPQyBmbGFnLgBVbmtub3duIHZhcmlhYmxlIHR5cGUgY29kZSAweCV4IGluIGNvbXBvbmVudCAnJXMnLgBQYXJzaW5nIG9wdGlvbnMgZm9yIHZhcmlhYmxlICclcycgZmFpbGVkLgBTZXR0aW5nIHBlcnNpc3RlbnQgb3B0aW9ucyBmb3IgY29tcG9uZW50IHZhcmlhYmxlICclcycgZmFpbGVkLgBUaGUgbG9nLWZpbHRlciBjb21wb25lbnQgIiVzIiBnb3QgY29uZnVzZWQgYXQgIiVzIiAoc3RhdGU6ICVzKSAuLi4AV2FpdGluZyB1bnRpbCBJL08gdGhyZWFkIGZvciBjaGFubmVsICclcycgZmluaXNoIHdyaXRpbmcgdG8gZGlzayBiZWZvcmUgc3RvcHBpbmcuIEZyZWUgc29tZSBkaXNrIHNwYWNlIG9yIHVzZSAnS0lMTCcgdG8gYWJvcnQgSS9PIHRocmVhZCBvcGVyYXRpb24uIE5vdGljZSB0aGF0IGFib3J0aW5nIHRoZSBJL08gdGhyZWFkIHdoaWxlIHJvdGF0aW5nIHRoZSByZWxheSBsb2cgbWlnaHQgY29ycnVwdCB0aGUgcmVsYXkgbG9ncywgcmVxdWlyaW5nIGEgc2VydmVyIHJlc3RhcnQgdG8gZml4IGl0LgBDb3VsZCBub3QgdXNlICVzIGZvciBsb2dnaW5nIChlcnJvciAlZCAtICVzKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCB0aGVuJXMgcmVzdGFydCB0aGUgTXlTUUwgc2VydmVyLgBVbmFibGUgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBmb3IgY29sdW1uICclLS4xOTJzJzogJS0uMTkycy4AJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBOQVRJT05BTC9OQ0hBUi9OVkFSQ0hBUiBpbXBsaWVzIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0hBUih4KSBDSEFSQUNURVIgU0VUIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAEEgY29tbWl0IGZvciBhbiBhdG9taWMgRERMIHN0YXRlbWVudCB3YXMgdW5zdWNjZXNzZnVsIG9uIHRoZSBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLiBUaGUgcmVwbGljYSBzdXBwb3J0cyBhdG9taWMgRERMIHN0YXRlbWVudHMgYnV0IHRoZSBzb3VyY2UgZG9lcyBub3QsIHNvIHRoZSBhY3Rpb24gdGFrZW4gYnkgdGhlIHJlcGxpY2EgYW5kIHNvdXJjZSBtaWdodCBkaWZmZXIuIENoZWNrIHRoYXQgdGhlaXIgc3RhdGVzIGhhdmUgbm90IGRpdmVyZ2VkIGJlZm9yZSBwcm9jZWVkaW5nLgBDb25maWd1cmluZyBwZXJzaXN0ZWQgb3B0aW9ucyBmYWlsZWQ6ICIlcyIuAFRoZSBzdG9yYWdlIGVuZ2luZSAnJS0uMTkycycgZG9lcyBub3QgcHJvdmlkZSBkeW5hbWljIHRhYmxlIHN0YXRpc3RpY3MAVGhpcyBvcHRpb24gY2Fubm90IGJlIHNldCAlcy4AVGhlIHRhYmxlICclLS4xOTJzJyBtYXkgbm90IGJlIGNyZWF0ZWQgaW4gdGhlIHJlc2VydmVkIHRhYmxlc3BhY2UgJyUtLjE5MnMnLgBTU0wgZmlwcyBtb2RlIGVycm9yOiAlcwBpbml0X2Nvbm5lY3QgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgdXNlcjogJXMgaG9zdDogJXMgZHVlIHRvIGV4cGlyZWQgcGFzc3dvcmQuAHNxbF9tb2RlPTB4JTA4eCBpcyBub3Qgc3VwcG9ydGVkAE91dCBvZiBtZW1vcnkuAFdyb25nIGNvbHVtbiBjb3VudCBvciBuYW1lcyB3aGVuIGxvYWRpbmcgcnVsZXMuAFNvbWUgcnVsZXMgZmFpbGVkIHRvIGxvYWQuAEdvdCBlcnJvciBmcm9tIHN0b3JhZ2UgZW5naW5lIHdoaWxlIHJlZnJlc2hpbmcgcmV3cml0ZSBydWxlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgQ29ubmVjdGlvbl9ldmVudF9jb29yZGluYXRvcgBGYWlsZWQgdG8gdXBkYXRlIGNvbm5lY3Rpb24gZGVsYXkgdHJpZ2dlcmVkIHN0YXRzAEZhaWxlZCB0byByZXNldCBjb25uZWN0aW9uIGRlbGF5IHRyaWdnZXJlZCBzdGF0cwBVbmV4cGVjdGVkIG9wdGlvbiB0eXBlIGZvciBjb25uZWN0aW9uIGRlbGF5LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb25uZWN0aW9uX2RlbGF5X2FjdGlvbgBDb3VsZCBub3Qgc2V0ICVzIGRlbGF5IGZvciBjb25uZWN0aW9uIGRlbGF5LgBGYWlsZWQgdG8gdXBkYXRlIGNvbm5lY3Rpb24gZGVsYXkgaGFzaCBmb3IgYWNjb3VudCA6ICVzACVzOiBGb3JjZSBzdG9wcGluZyBjbGllbnQgYmVjYXVzZSBleGNlcHRpb24gb2NjdXJyZWQ6ICVzACVzLiV1OiBNYXhpbXVtIG51bWJlciBvZiBhdXRoZW50aWNhdGlvbiBhdHRlbXB0cyByZWFjaGVkLCBsb2dpbiBmYWlsZWQuAEVycm9yIGFsbG9jYXRpbmcgQnVmZmVyX3BhZ2U6ICVzAERldGVjdGVkICV1IGhhbmdpbmcgY2xpZW50KHMpAEVycm9yIGFjY2VwdGluZyBjbGllbnQASW50ZXJuYWwgZXJyb3Igc2NoZWR1bGluZyBjbGllbnQgZm9yIGV4ZWN1dGlvbgBQcmVwYXJhdGlvbiBvZiBJL08gaW50ZXJmYWNlcyBmYWlsZWQsIFggUHJvdG9jb2wgd29uJ3QgYmUgYWNjZXNzaWJsZQBzcnZfc2Vzc2lvbl9pbml0X3RocmVhZCByZXR1cm5lZCBlcnJvcgBVbmFibGUgdG8gdXNlIHVzZXIgbXlzcWwuc2Vzc2lvbiBhY2NvdW50IHdoZW4gY29ubmVjdGluZyB0aGUgc2VydmVyIGZvciBpbnRlcm5hbCBwbHVnaW4gcmVxdWVzdHMuAEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBYIFBsdWdpbiBVc2VyIEFjY291bnQgc2VjdGlvbiBpbiB0aGUgTXlTUUwgZG9jdW1lbnRhdGlvbgAlczogVW5leHBlY3RlZCBleGNlcHRpb24gZGlzcGF0Y2hpbmcgY29tbWFuZDogJXMARXhjZXB0aW9uIGluIHBvc3Q6ICVzAEludGVybmFsIGVycm9yIHNjaGVkdWxpbmcgdGFzawBFeGNlcHRpb24gaW4gZXZlbnQgbG9vcDogIiVzIjogJXMAU2V0dXAgb2YgJXMgZmFpbGVkLCAlcwAlcwBGYWlsZWQgYXQgU1NMIGNvbmZpZ3VyYXRpb246ICIlcyIARXJyb3IgZHVyaW5nIFNTTCBoYW5kc2hha2UgZm9yIGNsaWVudCBjb25uZWN0aW9uICglaSkAJXM6IEVycm9yIGR1cmluZyBTU0wgaGFuZHNoYWtlACVzOiBFcnJvciBjcmVhdGluZyBzZXNzaW9uIGZvciBjb25uZWN0aW9uIGZyb20gJXMAJXM6IEVycm9yIGluaXRpYWxpemluZyBzZXNzaW9uIGZvciBjb25uZWN0aW9uOiAlcwAlczogTWVzc2FnZSBvZiBzaXplICV1IHJlY2VpdmVkLCBleGNlZWRpbmcgdGhlIGxpbWl0IG9mICVpAE1lc3NhZ2UgaXMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkOiAlcwBVbmFibGUgdG8gc2V0IG1pbmltYWwgbnVtYmVyIG9mIHdvcmtlcnMgdG8gJXU7IGFjdHVhbCB2YWx1ZSBpcyAlaQBVbmFibGUgdG8gYWNjZXB0IGNvbm5lY3Rpb24sIGRpc2Nvbm5lY3RpbmcgY2xpZW50AEFsbCBJL08gaW50ZXJmYWNlcyBhcmUgZGlzYWJsZWQsIFggUHJvdG9jb2wgd29uJ3QgYmUgYWNjZXNzaWJsZQAlczogSW52YWxpZCBtZXNzYWdlICVpIHJlY2VpdmVkIGR1cmluZyBjbGllbnQgaW5pdGlhbGl6YXRpb24AJXM6IGNsb3NpbmcgY2xpZW50IGJlY2F1c2Ugb2Ygc2h1dGRvd24gKHN0YXRlOiAlaSkAJXM6IEVycm9yIHJlYWRpbmcgZnJvbSBzb2NrZXQgJXMgKCVpKQAlczogcGVlciBkaXNjb25uZWN0ZWQgd2hpbGUgcmVhZGluZyBtZXNzYWdlIGJvZHkAY2xpZW50X2lkOiVzIC0gJXMgd2hpbGUgcmVhZGluZyBmcm9tIHNvY2tldCwgY2xvc2luZyBjb25uZWN0aW9uACVzLiV1OiBJbnZhbGlkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAlcwAlczogVW5leHBlY3RlZCBtZXNzYWdlIG9mIHR5cGUgJWkgcmVjZWl2ZWQgZHVyaW5nIGF1dGhlbnRpY2F0aW9uAEVycm9yIHdyaXRpbmcgdG8gY2xpZW50OiAlcyAoJWkpAFNjaGVkdWxlciAiJXMiIHN0YXJ0ZWQuAFNjaGVkdWxlciAiJXMiIHN0b3BwZWQuAFBsZWFzZSBzZWUgdGhlIE15U1FMIGRvY3VtZW50YXRpb24gZm9yICclcycgc3lzdGVtIHZhcmlhYmxlcyB0byBmaXggdGhlIGVycm9yAFggUGx1Z2luIHJlYWR5IGZvciBjb25uZWN0aW9ucy4gJXMAUmV0cnlpbmcgYGJpbmQoKWAgb24gVENQL0lQIHBvcnQgJWkAU2h1dGRvd24gdHJpZ2dlcmVkIGJ5IG15c3FsZCBhYm9ydCBmbGFnAFVzaW5nICVzIGFjY291bnQgZm9yIGF1dGhlbnRpY2F0aW9uIHdoaWNoIGhhcyBhbGwgcmVxdWlyZWQgcGVybWlzc2lvbnMAVXNpbmcgZXhpc3RpbmcgJXMgYWNjb3VudCBmb3IgYXV0aGVudGljYXRpb24uIEluY29tcGxldGUgZ3JhbnRzIHdpbGwgYmUgZml4ZWQAU2VydmVyIHN0YXJ0cyBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucwBTdG9wcGVkIGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zACVzOiBDb3VsZCBub3QgaW50ZXJydXB0IGNsaWVudCBzZXNzaW9uACVzOiByZWxlYXNlIHRyaWdnZXJlZCBieSB0aW1lb3V0IGluIHN0YXRlOiVpAElQdjYgaXMgYXZhaWxhYmxlAFVOSVggc29ja2V0IG5vdCBjb25maWd1cmVkAEtpbGwgY2xpZW50OiAlaSAlcwBDb3VsZCBub3QgZ2V0IHNlY3VyaXR5IGNvbnRleHQgZm9yIHNlc3Npb24AVW5hYmxlIHRvIHN3aXRjaCBzZWN1cml0eSBjb250ZXh0IHRvIHJvb3QARXJyb3IgY2xvc2luZyBTUUwgc2Vzc2lvbgBFcnJvciBleGVjdXRpbmcgYWRtaW4gY29tbWFuZCAlczogJXMARXJyb3IgZXhlY3V0aW5nIGVtcHR5IGFkbWluIGNvbW1hbmQAVW5hYmxlIHRvIHJldHJpZXZlIHN5c3RlbSB2YXJpYWJsZSAnJXMnAFVuYWJsZSB0byBnZXQgY3JlYXRpb24gc3RtdCBmb3IgY29sbGVjdGlvbiAnJXMnOyBxdWVyeSByZXN1bHQgc2l6ZTogJWx1AFVuYWJsZSB0byBnZXQgZW5naW5lIGluZm8gZm9yIGNvbGxlY3Rpb24gJyVzJzsgY3JlYXRpb24gc3RtdDogJXMARXJyb3IgZ2V0dGluZyByZXN1bHQgZGF0YTogJXMAQ2FwYWJpbGl0eSBleHBpcmVkIHBhc3N3b3JkIGZhaWxlZCB3aXRoIGVycm9yOiAlcwBGYWlsZWQgdG8gc2V0IFNPX1JFVVNFQUREUiBmbGFnIChlcnJvcjogJWQpLgBDb3VsZCBub3Qgb3BlbiBpbnRlcm5hbCBNeVNRTCBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggY29udGV4dCB0byB1c2VyICVzAENhbid0IHVucmVnaXN0ZXIgJyVzJyB1c2VyIGRlZmluZWQgZnVuY3Rpb24AJXM6IGdldCBwZWVyIGFkZHJlc3MgZmFpbGVkLCBjYW4ndCByZXNvbHZlIElQIHRvIGhvc3RuYW1lAENhcGFiaWxpdHkgY2xpZW50IGludGVyYWN0aXZlIGZhaWxlZCB3aXRoIGVycm9yOiAlcwBGYWlsZWQgdG8gcmVzZXQgSVBWNl9WNk9OTFkgZmxhZyAoZXJyb3I6ICVkKS4gVGhlIHNlcnZlciB3aWxsIGxpc3RlbiB0byBJUHY2IGFkZHJlc3NlcyBvbmx5LgBJbnZhbGlkIGtleSB0eXBlAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAENvdWxkIG5vdCBjcmVhdGUga2V5cmluZyBkaXJlY3RvcnkuIFRoZSBrZXlyaW5nX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUga2V5cmluZyBkaXJlY3RvcnkgZ2V0cyBwcm92aWRlZABrZXlyaW5nX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nX2ZpbGVfZGF0YSBwb2ludHMgdG8gcmVhZGFibGUga2V5cmluZyBmaWxlIG9yIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZCBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLiBUaGUga2V5cmluZ19maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZmlsZSBnZXRzIHByb3ZpZGVkAGtleXJpbmdfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4uAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2ZpbGUgcGx1Z2luAEVycm9yIHdoaWxlICVzIGtleTogaW52YWxpZCBrZXlfdHlwZQBFcnJvciB3aGlsZSAlcyBrZXk6IGtleV9pZCBjYW5ub3QgYmUgZW1wdHkARmFpbGVkIHRvICVzIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlICVzIHBsdWdpbgBJbmNvcnJlY3QgS2V5cmluZyBmaWxlAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUARXJyb3Igd2hpbGUgcmVhZGluZyBzdGF0IGZvciAlcy5QbGVhc2UgY2hlY2sgaWYgZmlsZSAlcyB3YXMgbm90IHJlbW92ZWQuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZW1vdmUgZmlsZSAlcyBPUyByZXR1bmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCB0cnVuY2F0ZSBmaWxlICVzLiBPUyByZXR1bmVkIHRoaXMgZXJyb3I6ICVzAFVua25vd24gZXJyb3IgJWQAa2V5cmluZ19maWxlX2RhdGEgY2Fubm90IGJlIHNldCB0byBuZXcgdmFsdWUgYXMgdGhlIGtleXJpbmcgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZC9hY2Nlc3NlZCBpbiB0aGUgcHJvdmlkZWQgcGF0aAAlcwBFcnJvciB3aGlsZSBsb2FkaW5nIGtleXJpbmcgY29udGVudC4gVGhlIGtleXJpbmcgbWlnaHQgYmUgbWFsZm9ybWVkAENvdWxkIG5vdCBmbHVzaCBrZXlzIHRvIGtleXJpbmcAQ291bGQgbm90IGZsdXNoIGtleXMgdG8ga2V5cmluZydzIGJhY2t1cABFcnJvciB3aGlsZSBmZXRjaGluZyBrZXk6IGtleV9pZCBjYW5ub3QgYmUgZW1wdHkARXJyb3Igd2hpbGUgcmVtb3Zpbmcga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEZvciBrZXlyaW5nX29rdiB0byBiZSBpbml0aWFsaXplZCwgcGxlYXNlIHBvaW50IGtleXJpbmdfb2t2X2NvbmZfZGlyIHZhcmlhYmxlIHRvIGEgZGlyZWN0b3J5IHdpdGggT3JhY2xlIEtleSBWYXVsdCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNzbCBtYXRlcmlhbHMAa2V5cmluZ19va3YgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhlIGtleXJpbmdfb2t2X2NvbmZfZGlyIHBvaW50cyB0byBhIHJlYWRhYmxlIGRpcmVjdG9yeSBhbmQgdGhhdCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIE9yYWNsZSBLZXkgVmF1bHQgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzc2wgbWF0ZXJpYWxzLiBQbGVhc2UgYWxzbyBjaGVjayB0aGF0IE9yYWNsZSBLZXkgVmF1bHQgaXMgdXAgYW5kIHJ1bm5pbmcuAGtleXJpbmdfb2t2IGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbgBJbnZhbGlkIGtleSB0eXBlAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX29rdiBwbHVnaW4AQ291bGQgbm90IGZpbmQgZW50cnkgZm9yIHNlcnZlciBpbiBjb25maWd1cmF0aW9uIGZpbGUgJXMAQ291bGQgbm90IGZpbmQgZW50cnkgZm9yIHN0YW5kYnkgc2VydmVyIGluIGNvbmZpZ3VyYXRpb24gZmlsZSAlcwBDb3VsZCBub3QgcGFyc2UgdGhlICVzIGZpbGUgcHJvdmlkZWQAQ291bGQgbm90IGxvYWQga2V5cycgdWlkcyBmcm9tIHRoZSBPS1Ygc2VydmVyAENvdWxkIG5vdCBpbml0aWFsaXplIHNzbCBsYXllcgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBPS1YgY2xpZW50AENvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBPS1Ygc2VydmVyAENvdWxkIG5vdCByZW1vdmUgdGhlIGtleQBDb3VsZCBub3QgYWRkIGF0dHJpYnV0ZSwgYXR0cmlidXRlX25hbWU9JXMgYXR0cmlidXRlIHZhbHVlPSVzAENvdWxkIG5vdCBnZW5lcmF0ZSB0aGUga2V5LgBDb3VsZCBub3Qgc3RvcmUgdGhlIGtleS4AQ291bGQgbm90IGFjdGl2YXRlIHRoZSBrZXkuAENvdWxkIG5vdCBmZXRjaCBnZW5lcmF0ZWQga2V5AENvdWxkIG5vdCBzdG9yZS9nZW5lcmF0ZSB0aGUga2V5IC0gZmFpbGVkIHRvIHNldCBrZXkgYXR0cmlidXRlIHgta2V5LXJlYWR5AENvdWxkIG5vdCByZXRyaWV2ZSBrZXkgc2lnbmF0dXJlIGZyb20gY3VzdG9tIGF0dHJpYnV0ZXMAQ291bGQgbm90IHJldHJpZXZlIGtleSBmcm9tIE9LVgBFcnJvciBsb2FkaW5nIHRydXN0IHN0b3JlAEVycm9yIHNldHRpbmcgdGhlIGNlcnRpZmljYXRlIGZpbGUuAEVycm9yIHNldHRpbmcgdGhlIGtleSBmaWxlLgBQcml2YXRlIGtleSBkb2VzIG5vdCBtYXRjaCB0aGUgY2VydGlmaWNhdGUgcHVibGljIGtleQBJbmNvcnJlY3QgS2V5cmluZyBmaWxlAEtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgZGVjcnlwdGlvbiBmYWlsZWQuIFBsZWFzZSB2ZXJpZnkgLS1rZXlyaW5nLWVuY3J5cHRlZC1maWxlLXBhc3N3b3JkIG9wdGlvbiB2YWx1ZS4ARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBLZXlyaW5nX2VuY3J5cHRlZF9maWxlIGVuY3J5cHRpb24gZmFpbGVkLiBQbGVhc2UgdmVyaWZ5IC0ta2V5cmluZy1lbmNyeXB0ZWQtZmlsZS1wYXNzd29yZCBvcHRpb24gdmFsdWUuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfZGF0YSBjYW5ub3QgYmUgc2V0IHRvIG5ldyB2YWx1ZSBhcyB0aGUga2V5cmluZyBmaWxlIGNhbm5vdCBiZSBjcmVhdGVkL2FjY2Vzc2VkIGluIHRoZSBwcm92aWRlZCBwYXRoAENvdWxkIG5vdCBjcmVhdGUga2V5cmluZyBkaXJlY3RvcnkgVGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUga2V5cmluZyBkaXJlY3RvcnkgZ2V0cyBwcm92aWRlZABUaGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9wYXNzd29yZCBtdXN0IGJlIHNldCB0byBhIHZhbGlkIHZhbHVlLgBUb28gbG9uZyBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX3Bhc3N3b3JkIHZhbHVlLgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9kYXRhIHBvaW50cyB0byByZWFkYWJsZSBrZXlyaW5nIGZpbGUgb3Iga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb3IgcGFzc3dvcmQgdG8gZGVjcnlwdCBrZXlyaW5nIGZpbGUgaXMgY29ycmVjdC4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgcGx1Z2luAGtleXJpbmdfYXdzX2Nta19pZCBjYW5ub3QgYmUgc2V0IHRvIHRoZSBuZXcgdmFsdWUgYXMgQVdTIEtNUyBzZWVtcyB0byBub3QgdW5kZXJzdGFuZCB0aGUgaWQgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGF0IENNSyBpZCBwcm92aWRlZCBpcyBjb3JyZWN0LgBrZXlyaW5nX2F3c19yZWdpb24gY2Fubm90IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlIGFzIEFXUyBLTVMgc2VlbXMgdG8gbm90IHVuZGVyc3RhbmQgdGhlIHJlZ2lvbiBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIHRoYXQgcmVnaW9uIHByb3ZpZGVkIGlzIGNvcnJlY3QuAENvdWxkIG5vdCBvcGVuIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZWFkIEFXUyBhY2Nlc3Mga2V5IGlkIGZyb20ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlYWQgQVdTIGFjY2VzcyBrZXkgZnJvbSBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBQYXRoIHRvIGtleXJpbmcgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW5ub3QgYmUgZW1wdHkAUGF0aCB0byBrZXlyaW5nX2F3cyBzdG9yYWdlIGZpbGUgY2Fubm90IGJlIGVtcHR5LgBVbmFibGUgdG8gY3JlYXRlL2FjY2VzcyBrZXlyaW5nIGRpcmVjdG9yeS4AVW5hYmxlIHRvIGNyZWF0ZS9hY2Nlc3Mga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlLiBQbGVhc2UgY2hlY2sgaWYga2V5cmluZ19hd3NfZGF0YV9maWxlIHBvaW50cyB0byBsb2NhdGlvbiB3aGVyZSBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQvYWNjZXNzZWQuIFBsZWFzZSBhbHNvIG1ha2Ugc3VyZSB0aGF0IE15U1FMIHNlcnZlcidzIHVzZXIgaGFzIGhpZ2ggZW5vdWdoIHByaXZpbGVnZXMgdG8gYWNjZXNzIHRoaXMgbG9jYXRpb24uAGtleXJpbmdfYXdzIGluaXRpYWxpemF0aW9uIGZhaWxlZCBkdWUgdG8gaW50ZXJuYWwgZXJyb3Igd2hlbiBpbml0aWFsaXppbmcgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZSAtICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlczoAQ291bGQgbm90IGFjY2VzcyBrZXlyaW5nX2F3cyBzdG9yYWdlIGZpbGUgaW4gdGhlIHBhdGggcHJvdmlkZWQuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19hd3MgZGlyZWN0b3J5IGNhbiBiZSBhY2Nlc3NlZCBieSBNeVNRTCBTZXJ2ZXIAa2V5cmluZ19hd3NfY21rX2lkIGhhcyB0byBiZSBzZXQAQ291bGQgbm90IGdldCBBV1MgS01TIGNyZWRlbnRpYWxzIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ASW52YWxpZCBrZXkgbGVuZ3RoIGZvciBnaXZlbiBibG9jayBjaXBoZXIARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfZmlsZSBwbHVnaW4ASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAFdyb25nIHJlZ2lvbgBDb3VsZCBub3QgY29ubmVjdCB0byBBV1MgS01TIHdpdGggdGhlIGNyZWRlbnRpYWxzIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHRoZXkgYXJlIGNvcnJlY3QuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGdlbmVyYXRlIGEgbmV3IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZW5jcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlLWVuY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBkZWNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3Qgcm90YXRlIHRoZSBDTUsuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAVGhlIHJlcXVlc3RlZCBHVElEICclczolbGxkJyB3YXMgYWxyZWFkeSB1c2VkLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjay4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkIHdhcyBraWxsZWQuAEVycm9yIGF0IGV2ZW50IGhhbmRsaW5nISBHb3QgZXJyb3I6ICVkLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgZ3JvdXAgR1RJRCBleGVjdXRpb24gaW5mb3JtYXRpb24sIHNvbWUgcmVjb3Zlcnkgb3BlcmF0aW9ucyBtYXkgZmFjZSBmdXR1cmUgaXNzdWVzLgBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIHRyeWluZyB0byByZWR1Y2UgdGhlIENlcnRpZmljYXRpb24gaW5mb3JtYXRpb24gc2l6ZSBmb3IgdHJhbnNtaXNzaW9uLgBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGFwcGxpZXIgY2FjaGUhAFVuYmxvY2tpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHRocmVhZCB3YWl0aW5nIGZvciBhcHBsaWVyIHRvIHN0YXJ0LCBhcyB0aGUgc3RhcnQgZ3JvdXAgcmVwbGljYXRpb24gd2FzIGtpbGxlZC4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgcGlwZWxpbmUgd2FzIG5vdCBwcm9wZXJseSBkaXNwb3NlZC4gQ2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgZnVydGhlciBpbmZvLgBUaGUgYXBwbGllciB0aHJlYWQgZXhlY3V0aW9uIHdhcyBhYm9ydGVkLiBVbmFibGUgdG8gcHJvY2VzcyBtb3JlIHRyYW5zYWN0aW9ucywgdGhpcyBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBGYXRhbCBlcnJvciBkdXJpbmcgZXhlY3V0aW9uIG9uIHRoZSBBcHBsaWVyIHByb2Nlc3Mgb2YgR3JvdXAgUmVwbGljYXRpb24uIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMARXJyb3Igc2VuZGluZyBzaW5nbGUgcHJpbWFyeSBtZXNzYWdlIGluZm9ybWluZyB0aGF0IHByaW1hcnkgZGlkIGFwcGx5IHJlbGF5IGxvZ3MuAEVycm9yIHVwZGF0aW5nIHRyYW5zYWN0aW9uIHNuYXBzaG90IHZlcnNpb24gYWZ0ZXIgdHJhbnNhY3Rpb24gYmVpbmcgcG9zaXRpdmVseSBjZXJ0aWZpZWQuAEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIHNpZG5vIGFmdGVyIHRyYW5zYWN0aW9uIGJlaW5nIHBvc2l0aXZlbHkgY2VydGlmaWVkLgBCcm9hZGNhc3Qgb2YgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBtZXNzYWdlIGZhaWxlZC4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBhZGQgdGhlIGdyb3VwX3NpZCBpbiB0aGUgZ3JvdXBfZ3RpZF9zaWRfbWFwIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHVwZGF0aW5nIGdyb3VwX2d0aWRfZXhlY3V0ZWQgR0lURCBzZXQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGhhbmRsZSB0aGUgZG9ub3IncyB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiB3aGVuIGluaXRpYWxpemluZyB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGNvbXBvbmVudC4gUG9zc2libGUgb3V0IG9mIG1lbW9yeSBlcnJvci4ARXJyb3Igd2hlbiBlc3RhYmxpc2hpbmcgYSBzZXJ2ZXIgY29ubmVjdGlvbiBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgR1RJRCBleGVjdXRlZCBzZXQuIENlcnRpZmljYXRpb24gbW9kdWxlIGNhbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciB3aGlsZSBhZGRpbmcgdGhlIHNlcnZlciBHVElEIEVYRUNVVEVEIHNldCB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciByZXRyaWV2ZWQgc2V0IGZvciBpdHMgYXBwbGllci4gQ2VydGlmaWNhdGlvbiBtb2R1bGUgY2FuJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuAEVycm9yIHdoaWxlIGFkZGluZyB0aGUgbWVtYmVyIHJldHJpZXZlZCBzZXQgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3IgZHVyaW5nIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gdXBkYXRlIGxhc3QgY29uZmxpY3QgZnJlZSB0cmFuc2FjdGlvbiwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIG5vdCBiZSB0cmFja2VkIG9uIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfc3RhdHMubGFzdF9jb25mbGljdF9mcmVlX3RyYW5zYWN0aW9uLgBFcnJvciB1cGRhdGluZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCB2ZXJzaW9uIHJlZmVyZW5jZSBmb3IgaW50ZXJuYWwgc3RvcmFnZS4ARXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24gc2lkbm8gd2hpbGUgYWRkaW5nIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldC4ARXJyb3Igd2hpbGUgZW5zdXJpbmcgdGhlIHNpZG5vIGJlIHByZXNlbnQgaW4gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQuAEltcG9zc2libGUgdG8gZ2VuZXJhdGUgR2xvYmFsIFRyYW5zYWN0aW9uIElkZW50aWZpZXI6IHRoZSBpbnRlZ2VyIGNvbXBvbmVudCByZWFjaGVkIHRoZSBtYXhpbWFsIHZhbHVlLiBSZXN0YXJ0IHRoZSBncm91cCB3aXRoIGEgbmV3IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAEludmFsaWQgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHVwZGF0aW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBmaWxsaW5nIHRoZSBtaXNzaW5nIEdUSURzIG9uIHRoZSBhcHBsaWVyIGNoYW5uZWwgcmVjZWl2ZWQgc2V0LiBEZXNwaXRlIG5vdCBjcml0aWNhbCwgb24gdGhlIGxvbmcgcnVuIHRoaXMgbWF5IGNhdXNlIHBlcmZvcm1hbmNlIGlzc3Vlcy4AU2tpcHBpbmcgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBUcmFuc2FjdGlvbnNfY29tbWl0dGVkX2FsbF9tZW1iZXJzIGZpZWxkIGFzIGFuIG9sZGVyIGluc3RhbmNlIG9mIHRoaXMgY29tcHV0YXRpb24gaXMgc3RpbGwgb25nb2luZy4ATnVsbCBwYWNrZXQgb24gY2VydGlmaWVyJ3MgcXVldWUuAEVycm9yIHJlYWRpbmcgR1RJRHMgZnJvbSB0aGUgbWVzc2FnZS4ARXJyb3IgcHJvY2Vzc2luZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3IgcHJvY2Vzc2luZyBpbnRlcnNlY3Rpb24gb2Ygc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHNldHRpbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHJlYWRpbmcgZ3JvdXBfZ3RpZF9leHRyYWN0ZWQgZnJvbSB0aGUgVmlld19jaGFuZ2VfbG9nX2V2ZW50LgBFcnJvciByZWFkaW5nIHRoZSB3cml0ZSBzZXQgaXRlbSAnJXMnIGZyb20gdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudC4ARXJyb3IgZHVyaW5nIGNlcnRpZmljYXRpb25faW5mbyBpbml0aWFsaXphdGlvbi4AUHJpbWFyeSBoYWQgYXBwbGllZCBhbGwgcmVsYXkgbG9ncywgZGlzYWJsZWQgY29uZmxpY3QgZGV0ZWN0aW9uLgBNZXNzYWdlIHJlY2VpdmVkIHdoaWxlIHRoZSBwbHVnaW4gaXMgbm90IHJlYWR5LCBtZXNzYWdlIGRpc2NhcmRlZC4ATWVzc2FnZSByZWNlaXZlZCB3aXRob3V0IGEgcHJvcGVyIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIuAEVycm9yIHByb2Nlc3NpbmcgbWVzc2FnZSBpbiBDZXJ0aWZpZXIuAFRoaXMgc2VydmVyIHdhcyBub3QgZGVjbGFyZWQgb25saW5lIHNpbmNlIGl0IGlzIG9uIHN0YXR1cyAlcy4AVGhpcyBzZXJ2ZXIgd2FzIGRlY2xhcmVkIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwLgBXaGVuIGRlY2xhcmluZyB0aGUgcGx1Z2luIG9ubGluZSBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIHNlcnZlciByZWFkIG1vZGUgc2V0dGluZ3MuIFRyeSB0byBkaXNhYmxlIGl0IG1hbnVhbGx5LgBUaGUgbWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSB3YXMgZGVjbGFyZWQgb25saW5lIHdpdGhpbiB0aGUgcmVwbGljYXRpb24gZ3JvdXAuAE1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaGFzIGJlY29tZSB1bnJlYWNoYWJsZS4ATWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSBpcyByZWFjaGFibGUgYWdhaW4uAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgbm93IGJsb2NrIGFsbCB1cGRhdGVzLiBUaGUgc2VydmVyIHdpbGwgcmVtYWluIGJsb2NrZWQgdW50aWwgY29udGFjdCB3aXRoIHRoZSBtYWpvcml0eSBpcyByZXN0b3JlZC4gSXQgaXMgcG9zc2libGUgdG8gdXNlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcC4AVGhpcyBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcmVhY2ggYSBtYWpvcml0eSBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gVGhpcyBzZXJ2ZXIgd2lsbCBub3cgYmxvY2sgYWxsIHVwZGF0ZXMuIFRoZSBzZXJ2ZXIgd2lsbCByZW1haW4gYmxvY2tlZCBmb3IgdGhlIG5leHQgJWx1IHNlY29uZHMuIFVubGVzcyBjb250YWN0IHdpdGggdGhlIG1ham9yaXR5IGlzIHJlc3RvcmVkLCBhZnRlciB0aGlzIHRpbWUgdGhlIG1lbWJlciB3aWxsIGVycm9yIG91dCBhbmQgbGVhdmUgdGhlIGdyb3VwLiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwLgBBIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlIHdhcyByZWNlaXZlZCBidXQgdGhlIHBsdWdpbiBpcyBhbHJlYWR5IGxlYXZpbmcgZHVlIHRvIHRoZSBjb25maWd1cmVkIHRpbWVvdXQgb24gZ3JvdXBfcmVwbGljYXRpb25fdW5yZWFjaGFibGVfbWFqb3JpdHlfdGltZW91dCBvcHRpb24uAFRoZSBtZW1iZXIgaGFzIHJlc3VtZWQgY29udGFjdCB3aXRoIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBSZWd1bGFyIG9wZXJhdGlvbiBpcyByZXN0b3JlZCBhbmQgdHJhbnNhY3Rpb25zIGFyZSB1bmJsb2NrZWQuAE1lbWJlcnMgcmVtb3ZlZCBmcm9tIHRoZSBncm91cDogJXMAUHJpbWFyeSBzZXJ2ZXIgd2l0aCBhZGRyZXNzICVzIGxlZnQgdGhlIGdyb3VwLiBFbGVjdGluZyBuZXcgUHJpbWFyeS4ATWVtYmVycyBqb2luZWQgdGhlIGdyb3VwOiAlcwBUaGVyZSB3YXMgYSBwcmV2aW91cyBwbHVnaW4gZXJyb3Igd2hpbGUgdGhlIG1lbWJlciBqb2luZWQgdGhlIGdyb3VwLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBHcm91cCBtZW1iZXJzaGlwIGNoYW5nZWQgdG8gJXMgb24gdmlldyAlcy4AR3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VkOiBUaGlzIG1lbWJlciBoYXMgbGVmdCB0aGUgZ3JvdXAuAE1lbWJlciB3YXMgZXhwZWxsZWQgZnJvbSB0aGUgZ3JvdXAgZHVlIHRvIG5ldHdvcmsgZmFpbHVyZXMsIGNoYW5naW5nIG1lbWJlciBzdGF0dXMgdG8gRVJST1IuAFVuYWJsZSB0byBvcGVuIHNlc3Npb24gdG8gKHJlKXNldCByZWFkIG9ubHkgbW9kZS4gU2tpcHBpbmcuAEEgbmV3IHByaW1hcnkgd2l0aCBhZGRyZXNzICVzOiV1IHdhcyBlbGVjdGVkLiAlcwBVbmFibGUgdG8gZGlzYWJsZSBzdXBlciByZWFkIG9ubHkgZmxhZy4gVHJ5IHRvIGRpc2FibGUgaXQgbWFudWFsbHkAVW5hYmxlIHRvIHNldCBzdXBlciByZWFkIG9ubHkgZmxhZy4gVHJ5IHRvIHNldCBpdCBtYW51YWxseS4AVGhpcyBzZXJ2ZXIgaXMgd29ya2luZyBhcyBwcmltYXJ5IG1lbWJlci4AVGhpcyBzZXJ2ZXIgaXMgd29ya2luZyBhcyBzZWNvbmRhcnkgbWVtYmVyIHdpdGggcHJpbWFyeSBtZW1iZXIgYWRkcmVzcyAlczoldS4AVW5hYmxlIHRvIHNldCBhbnkgbWVtYmVyIGFzIHByaW1hcnkuIE5vIHN1aXRhYmxlIGNhbmRpZGF0ZS4ARXJyb3Igd2hlbiBhY3RpdmF0aW5nIHN1cGVyX3JlYWRfb25seSBtb2RlIG9uIHN0YXJ0LiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBHcm91cCBjb250YWlucyAlbHUgbWVtYmVycyB3aGljaCBpcyBncmVhdGVyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IHZhbHVlIG9mICVsdS4gVGhpcyBjYW4gbGVhZCB0byBhIGhpZ2hlciB0cmFuc2FjdGlvbmFsIGFib3J0IHJhdGUuAE1lbWJlciB3aXRoIGFkZHJlc3MgJyVzOiV1JyBkaWRuJ3QgcHJvdmlkZSBhbnkgZGF0YSBkdXJpbmcgdGhlIGxhc3QgZ3JvdXAgY2hhbmdlLiBHcm91cCBpbmZvcm1hdGlvbiBjYW4gYmUgb3V0ZGF0ZWQgYW5kIGxlYWQgdG8gZXJyb3JzIG9uIHJlY292ZXJ5LgBUaGVyZSBpcyBhbHJlYWR5IGEgbWVtYmVyIHdpdGggc2VydmVyX3V1aWQgJXMuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmb3IgZ3JvdXAgY2hhbmdlLiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgR1RJRCBleGVjdXRlZCBzZXQuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciByZXRyaWV2ZWQgc2V0IGZvciBpdHMgYXBwbGllci4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBhbHJlYWR5IGhhcyA5IG1lbWJlcnMuAE1lbWJlciB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4AVGhlIG1lbWJlciBjb250YWlucyB0cmFuc2FjdGlvbnMgbm90IHByZXNlbnQgaW4gdGhlIGdyb3VwLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGFzc2VzcyBpZiB0aGUgbWVtYmVyIGhhcyBtb3JlIHRyYW5zYWN0aW9ucyB0aGFuIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ATWVtYmVyIHZlcnNpb24gaXMgbG93ZXIgdGhhbiBzb21lIGdyb3VwIG1lbWJlciwgYnV0IHNpbmNlIG9wdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fYWxsb3dfbG9jYWxfbG93ZXJfdmVyc2lvbl9qb2luIGlzIGVuYWJsZWQsIG1lbWJlciB3aWxsIGJlIGFsbG93ZWQgdG8gam9pbi4ARXJyb3IgcHJvY2Vzc2luZyBsb2NhbCBHVElEIHNldHMgd2hlbiBjb21wYXJpbmcgdGhpcyBtZW1iZXIgdHJhbnNhY3Rpb25zIGFnYWluc3QgdGhlIGdyb3VwLgBUaGlzIG1lbWJlciBoYXMgbW9yZSBleGVjdXRlZCB0cmFuc2FjdGlvbnMgdGhhbiB0aG9zZSBwcmVzZW50IGluIHRoZSBncm91cC4gTG9jYWwgdHJhbnNhY3Rpb25zOiAlcyA+IEdyb3VwIHRyYW5zYWN0aW9uczogJXMAVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9ndGlkX2Fzc2lnbm1lbnRfYmxvY2tfc2l6ZSBvcHRpb24gdmFsdWUgJyVsbHUnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJWxsdScuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgdHJhbnNhY3Rpb24td3JpdGUtc2V0LWV4dHJhY3Rpb24gb3B0aW9uIHZhbHVlICclcycgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclcycuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgY29uZmlndXJhdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cCBjb25maWd1cmF0aW9uLiBWYXJpYWJsZXMgc3VjaCBhcyBncm91cF9yZXBsaWNhdGlvbl9zaW5nbGVfcHJpbWFyeV9tb2RlIG9yIGdyb3VwX3JlcGxpY2F0aW9uX2VuZm9yY2VfdXBkYXRlX2V2ZXJ5d2hlcmVfY2hlY2tzIG11c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBvbiBldmVyeSBzZXJ2ZXIgaW4gdGhlIGdyb3VwLiAobWVtYmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uOiBbJXNdLCBncm91cCBjb25maWd1cmF0aW9uIG9wdGlvbjogWyVzXSkuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiAlcwBEZXRlY3RlZCBwcmV2aW91cyBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMgaW52b2NhdGlvbiBvciBhbiBpc3N1ZSBleGlzdHMgaW4gdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgcmVsYXkgbG9nLiBQdXJnaW5nIGV4aXN0aW5nIGFwcGxpZXIgbG9ncy4AVW5rbm93biBlcnJvciBvY2N1cnJlZCB3aGlsZSByZXNldHRpbmcgYXBwbGllcidzIG1vZHVsZSBsb2dzLgBGYWlsZWQgdG8gc2V0dXAgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkLgBFcnJvciB3aGlsZSBzdGFydGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQARmFpbGVkIHRvIHN0b3AgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkLgBGYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb24gZGF0YSBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGFwcGxpZXIAQ2FuJ3Qgc3RhcnQgcmVwbGljYSBJTyBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgYW5kIHRoZSBwcmltYXJ5IG1lbWJlciBpcyBub3Qga25vd24uAENhbid0IHN0YXJ0IHJlcGxpY2EgSU8gVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIG9uIGEgc2Vjb25kYXJ5IG1lbWJlci4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBTUUwgVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCB0aGUgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGtub3duLgBDYW4ndCBzdGFydCByZXBsaWNhIFNRTCBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgb24gYSBzZWNvbmRhcnkgbWVtYmVyLgBUYWJsZSAlcyBkb2VzIG5vdCB1c2UgdGhlIElubm9EQiBzdG9yYWdlIGVuZ2luZS4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uLgBUYWJsZSAlcyBkb2VzIG5vdCBoYXZlIGFueSBQUklNQVJZIEtFWS4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uLgBUYWJsZSAlcyBoYXMgYSBmb3JlaWduIGtleSB3aXRoICdDQVNDQURFJywgJ1NFVCBOVUxMJyBvciAnU0VUIERFRkFVTFQnIGNsYXVzZS4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uLgBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgaXMgcmVzZXQgdG8gJWx1AGF1dG9faW5jcmVtZW50X29mZnNldCBpcyByZXNldCB0byAlbHUAZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IGlzIHNldCB0byAlbHUAYXV0b19pbmNyZW1lbnRfb2Zmc2V0IGlzIHNldCB0byAlbHUARmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9uIGNvbnRleHQgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAEZhaWxlZCB0byBmZXRjaCBGb3JtYXRfZGVzY3JpcHRpb25fbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgc2VydmVyIGluZm8gZm9yIGFwcGxpZXIARmFpbGVkIHRvIGZldGNoIFRyYW5zYWN0aW9uX2NvbnRleHRfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gcmVhZCBzbmFwc2hvdCB2ZXJzaW9uIGZyb20gdHJhbnNhY3Rpb24gY29udGV4dCBldmVudCByZXF1aXJlZCBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gZmV0Y2ggR3RpZF9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAFVuYWJsZSB0byB1cGRhdGUgY2VydGlmaWNhdGlvbiByZXN1bHQgb24gc2VydmVyIHNpZGUsIHRocmVhZF9pZDogJWx1AFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBndGlkIHdhcyBwcm92aWRlZCBmb3IgbG9jYWwgdHJhbnNhY3Rpb25zAFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBubyBndGlkIHdhcyBwcm92aWRlZCBmb3IgbG9jYWwgdHJhbnNhY3Rpb25zAEZhaWxlZCB0byBub3RpZnkgY2VydGlmaWNhdGlvbiBvdXRjb21lAFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBndGlkIHdhcyBwcm92aWRlZCBmb3IgcmVtb3RlIHRyYW5zYWN0aW9ucwBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgbm90IHByb3ZpZGVkIGZvciByZW1vdGUgdHJhbnNhY3Rpb25zAEZhaWxlZCB0byBmZXRjaCBWaWV3X2NoYW5nZV9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAEVycm9yIHdoZW4gY29udGFjdGluZyB0aGUgc2VydmVyIHRvIGVuc3VyZSB0aGUgcHJvcGVyIGxvZ2dpbmcgb2YgYSBncm91cCBjaGFuZ2UgaW4gdGhlIGJpbmxvZwBUaW1lb3V0IHdoZW4gd2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byBleGVjdXRlIGxvY2FsIHRyYW5zYWN0aW9ucyBpbiBvcmRlciBhc3N1cmUgdGhlIGdyb3VwIGNoYW5nZSBwcm9wZXIgbG9nZ2luZwBGYWlsZWQgdG8gZmV0Y2ggTG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgc2VydmVyIGluZm8gZm9yIGFwcGxpZXIAVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uLiBSZXBsaWNhdGlvbiBhcHBsaWVyIGluZnJhc3RydWN0dXJlIGlzIG5vdCBpbml0aWFsaXplZCBzaW5jZSB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggLS1pbml0aWFsaXplLCAtLWluaXRpYWxpemUtaW5zZWN1cmUgb3IgLS11cGdyYWRlPU1JTklNQUwgb24gYSBzZXJ2ZXIgdXBncmFkZS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zAFNldHRpbmcgc3VwZXJfcmVhZF9vbmx5PU9OLgBTZXR0aW5nIHN1cGVyX3JlYWRfb25seT1PRkYuAGtpbGxlZCBzZXNzaW9uIGlkOiAlZCBzdGF0dXM6ICVkAGtpbGxlZCBmYWlsZWQgaWQ6ICVkIGZhaWxlZDogJWQASW50ZXJuYWwgcXVlcnk6ICVzIHJlc3VsdCBpbiBlcnJvci4gRXJyb3IgbnVtYmVyOiAlbGQARXJyb3IgY29weWluZyBmcm9tIGVtcHR5IHN0cmluZyAAUXVlcnkgZXhlY3V0aW9uIHJlc3VsdGVkIGluIGZhaWx1cmUuIGVycm5vOiAlZABVbmFibGUgdG8gY3JlYXRlIGEgc2Vzc2lvbiBmb3IgZXhlY3V0aW5nIHRoZSBxdWVyaWVzIG9uIHRoZSBzZXJ2ZXIAVGhlIG1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaGFzIHVuZXhwZWN0ZWRseSBkaXNhcHBlYXJlZCwga2lsbGluZyB0aGUgY3VycmVudCBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBjb25uZWN0aW9uAE1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgd2hlbiB0cnlpbmcgdG8gY29ubmVjdCB0byBhIGRvbm9yIHJlYWNoZWQuIEFib3J0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5LgBBbGwgZG9ub3JzIGxlZnQuIEFib3J0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5LgBFc3RhYmxpc2hpbmcgZ3JvdXAgcmVjb3ZlcnkgY29ubmVjdGlvbiB3aXRoIGEgcG9zc2libGUgZG9ub3IuIEF0dGVtcHQgJWQvJWQAUmV0cnlpbmcgZ3JvdXAgcmVjb3ZlcnkgY29ubmVjdGlvbiB3aXRoIGFub3RoZXIgZG9ub3IuIEF0dGVtcHQgJWQvJWQATm8gdmFsaWQgZG9ub3JzIGV4aXN0IGluIHRoZSBncm91cCwgcmV0cnlpbmcARXJyb3Igd2hlbiBjb25maWd1cmluZyB0aGUgYXN5bmNocm9ub3VzIHJlY292ZXJ5IGNoYW5uZWwgY29ubmVjdGlvbiB0byB0aGUgZG9ub3IuAEVzdGFibGlzaGluZyBjb25uZWN0aW9uIHRvIGEgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgJXMgYXQgJXMgcG9ydDogJWQuAEVycm9yIHdoaWxlIGNyZWF0aW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBjaGFubmVsIHdpdGggZG9ub3IgJXMgYXQgJXMgcG9ydDogJWQuAFRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGRvbm9yIHNlcnZlci4gUGxlYXNlIGNoZWNrIHRoYXQgZ3JvdXBfcmVwbGljYXRpb25fcmVjb3ZlcnkgY2hhbm5lbCBjcmVkZW50aWFscyBhbmQgYWxsIE1FTUJFUl9IT1NUIGNvbHVtbiB2YWx1ZXMgb2YgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcnMgdGFibGUgYXJlIGNvcnJlY3QgYW5kIEROUyByZXNvbHZhYmxlLgBGb3IgZGV0YWlscyBwbGVhc2UgY2hlY2sgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2Nvbm5lY3Rpb25fc3RhdHVzIHRhYmxlIGFuZCBlcnJvciBsb2cgbWVzc2FnZXMgb2YgUmVwbGljYSBJL08gZm9yIGNoYW5uZWwgZ3JvdXBfcmVwbGljYXRpb25fcmVjb3ZlcnkuAEVycm9yIHdoaWxlIHN0YXJ0aW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSByZWNlaXZlci9hcHBsaWVyIHRocmVhZHMAVGVybWluYXRpbmcgZXhpc3RpbmcgZ3JvdXAgcmVwbGljYXRpb24gZG9ub3IgY29ubmVjdGlvbiBhbmQgcHVyZ2luZyB0aGUgY29ycmVzcG9uZGluZyBsb2dzLgBFcnJvciB3aGVuIHN0b3BwaW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSdzIGRvbm9yIGNvbm5lY3Rpb24ARXJyb3Igd2hlbiBwdXJnaW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSdzIHJlbGF5IGxvZ3MAVW5hYmxlIHRvIGtpbGwgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgY29ubmVjdGlvbiBhZnRlciBhbiBhcHBsaWVyIGVycm9yLiBJbmNyZW1lbnRhbCByZWNvdmVyeSB3aWxsIHNodXRkb3duLgBVbmFibGUgdG8ga2lsbCB0aGUgY3VycmVudCBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBkb25vciBjb25uZWN0aW9uIGR1cmluZyBmYWlsb3Zlci4gSW5jcmVtZW50YWwgcmVjb3Zlcnkgd2lsbCBzaHV0ZG93bi4AVW5leHBlY3RlZCBlcnJvciB3aGVuIG5vdGlmeWluZyBhbiBpbnRlcm5hbCBjb21wb25lbnQgbmFtZWQgJXMgcmVnYXJkaW5nIGEgZ3JvdXAgbWVtYmVyc2hpcCBldmVudC4AQW4gdW5kZWZpbmVkIGVycm9yIHdhcyBmb3VuZCB3aGlsZSBicm9hZGNhc3RpbmcgYW4gaW50ZXJuYWwgZ3JvdXAgbWVtYmVyc2hpcCBub3RpZmljYXRpb24hIFRoaXMgaXMgbGlrZWx5IHRvIGhhcHBlbiBpZiB5b3VyIGNvbXBvbmVudHMgb3IgcGx1Z2lucyBhcmUgbm90IHByb3Blcmx5IGxvYWRlZCBvciBhcmUgbWFsZnVuY3Rpb25pbmchAEFuIHVuZGVmaW5lZCBlcnJvciB3YXMgZm91bmQgd2hpbGUgYnJvYWRjYXN0aW5nIGFuIGludGVybmFsIGdyb3VwIG1lbWJlciBzdGF0dXMgbm90aWZpY2F0aW9uISBUaGlzIGlzIGxpa2VseSB0byBoYXBwZW4gaWYgeW91ciBjb21wb25lbnRzIG9yIHBsdWdpbnMgYXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgb3IgYXJlIG1hbGZ1bmN0aW9uaW5nIQBObyBtZW1vcnkgdG8gZ2VuZXJhdGUgd3JpdGUgaWRlbnRpZmljYXRpb24gaGFzaABCYXNlIDY0IGVuY29kaW5nIG9mIHRoZSB3cml0ZSBpZGVudGlmaWNhdGlvbiBoYXNoIGZhaWxlZABCaW5sb2cgZm9ybWF0IHNob3VsZCBiZSBST1cgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAGJpbmxvZ19jaGVja3N1bSBzaG91bGQgYmUgTk9ORSBmb3IgR3JvdXAgUmVwbGljYXRpb24AQSB0cmFuc2FjdGlvbl93cml0ZV9zZXRfZXh0cmFjdGlvbiBhbGdvcml0aG0gc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gcnVubmluZyBHcm91cCBSZXBsaWNhdGlvbgBUcmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgKHR4X2lzb2xhdGlvbikgaXMgc2V0IHRvIFNFUklBTElaQUJMRSwgd2hpY2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgc3RvcHBpbmcuAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyByZWNvdmVyaW5nLiBUcnkgYWdhaW4gd2hlbiB0aGUgc2VydmVyIGlzIE9OTElORS4AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIG9uIEVSUk9SIHN0YXRlLiBDaGVjayBmb3IgZXJyb3JzIGFuZCByZXN0YXJ0IHRoZSBwbHVnaW4AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIE9GRkxJTkUuIENoZWNrIGZvciBlcnJvcnMgYW5kIHJlc3RhcnQgdGhlIHBsdWdpbgBXZSBjYW4gb25seSB1c2Ugb25lIGNhY2hlIHR5cGUgYXQgYSB0aW1lIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIHJlaW5pdCBiaW5sb2cgY2FjaGUgbG9nIGZvciByZWFkIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGNyZWF0ZSB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBleHRyYWN0IHRoZSBzZXQgb2YgaXRlbXMgd3JpdHRlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBnYXRoZXIgdGhlIHNldCBvZiBpdGVtcyB3cml0dGVuIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARXJyb3Igb24gc2Vzc2lvbiAldS4gVHJhbnNhY3Rpb24gb2Ygc2l6ZSAlbGx1IGV4Y2VlZHMgc3BlY2lmaWVkIGxpbWl0ICVsdS4gVG8gaW5jcmVhc2UgdGhlIGxpbWl0IHBsZWFzZSBhZGp1c3QgZ3JvdXBfcmVwbGljYXRpb25fdHJhbnNhY3Rpb25fc2l6ZV9saW1pdCBvcHRpb24uAEVycm9yIHdoaWxlIHJlLWluaXRpYWxpemluZyBhbiBpbnRlcm5hbCBjYWNoZSwgZm9yIHJlYWQgb3BlcmF0aW9ucywgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSBhcHBlbmRpbmcgZGF0YSB0byBhbiBpbnRlcm5hbCBjYWNoZSBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIHdyaXRpbmcgdG8gdHJhbnNhY3Rpb24gbWVzc2FnZSBvbiBzZXNzaW9uICV1AFVuYWJsZSB0byByZWdpc3RlciBmb3IgZ2V0dGluZyBub3RpZmljYXRpb25zIHJlZ2FyZGluZyB0aGUgb3V0Y29tZSBvZiB0aGUgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBFcnJvciBicm9hZGNhc3RpbmcgdHJhbnNhY3Rpb24gdG8gdGhlIGdyb3VwIG9uIHNlc3Npb24gJXUuIE1lc3NhZ2UgaXMgdG9vIGJpZy4ARXJyb3Igd2hpbGUgYnJvYWRjYXN0aW5nIHRoZSB0cmFuc2FjdGlvbiB0byB0aGUgZ3JvdXAgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciBjb25mbGljdCBkZXRlY3Rpb24gcHJvY2VkdXJlIHRvIGZpbmlzaCBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIHJlLWluaXRpYWxpemluZyBhbiBpbnRlcm5hbCBjYWNoZSwgZm9yIHdyaXRlIG9wZXJhdGlvbnMsIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBjb21taXQgY2FjaGUgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIGNvbW1pdCBjYWNoZSBmb3Igd3JpdGUgb24gc2Vzc2lvbiAldQBBIHByZXZpb3VzIHJlY292ZXJ5IHNlc3Npb24gaXMgc3RpbGwgcnVubmluZy4gUGxlYXNlIHN0b3AgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHBsdWdpbiBhbmQgd2FpdCBmb3IgaXQgdG8gc3RvcABGYXRhbCBlcnJvciBkdXJpbmcgdGhlIGluY3JlbWVudGFsIHJlY292ZXJ5IHByb2Nlc3Mgb2YgR3JvdXAgUmVwbGljYXRpb24uIFRoZSBzZXJ2ZXIgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiAlcwBVbmFibGUgdG8gZXZhbHVhdGUgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgZXhlY3V0aW9uIHN0YXR1cy4gR3JvdXAgcmVwbGljYXRpb24gcmVjb3Zlcnkgd2lsbCBzaHV0ZG93biB0byBhdm9pZCBkYXRhIGNvcnJ1cHRpb24uAE9ubHkgb25lIHNlcnZlciBhbGl2ZS4gRGVjbGFyaW5nIHRoaXMgc2VydmVyIGFzIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwAEVycm9yIHdoZW4gcHJvY2Vzc2luZyBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIGluIHRoZSBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzAFVuYWJsZSB0byBlbnN1cmUgdGhlIGV4ZWN1dGlvbiBvZiBncm91cCB0cmFuc2FjdGlvbnMgcmVjZWl2ZWQgZHVyaW5nIHJlY292ZXJ5LgBFcnJvciB3aGlsZSBzZW5kaW5nIG1lc3NhZ2UgaW4gdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5IHByb2Nlc3MuAFVuYWJsZSB0byByZWFkIHRoZSBzZXJ2ZXIgdmFsdWUgZm9yIHRoZSBzdXBlcl9yZWFkX29ubHkgdmFyaWFibGUuAFVuYWJsZSB0byByZWFkIHRoZSBzZXJ2ZXIgdmFsdWVzIGZvciB0aGUgcmVhZF9vbmx5IGFuZCBzdXBlcl9yZWFkX29ubHkgdmFyaWFibGVzLgBVbmFibGUgdG8gcmVzZXQgdGhlIHNlcnZlciByZWFkIG1vZGUgc2V0dGluZ3MuIFRyeSB0byByZXNldCB0aGVtIG1hbnVhbGx5LgBEdWUgdG8gYSBwbHVnaW4gZXJyb3IsIHNvbWUgdHJhbnNhY3Rpb25zIHdlcmUgdW5hYmxlIHRvIGJlIGNlcnRpZmllZCBhbmQgd2lsbCBub3cgcm9sbGJhY2suAEVycm9yIHdoZW4gdHJ5aW5nIHRvIHVuYmxvY2sgbm9uIGNlcnRpZmllZCBvciBjb25zaXN0ZW50IHRyYW5zYWN0aW9ucy4gQ2hlY2sgZm9yIGNvbnNpc3RlbmN5IGVycm9ycyB3aGVuIHJlc3RhcnRpbmcgdGhlIHNlcnZpY2UAVGhpcyBzZXJ2ZXIgaXMgd29ya2luZyBhcyBzZWNvbmRhcnkgbWVtYmVyIHdpdGggcHJpbWFyeSBtZW1iZXIgYWRkcmVzcyAlczoldS4AVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uLiBSZXBsaWNhdGlvbiBhcHBsaWVyIGluZnJhc3RydWN0dXJlIGlzIG5vdCBpbml0aWFsaXplZCBzaW5jZSB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggc2VydmVyX2lkPTAuIFBsZWFzZSwgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggc2VydmVyX2lkIGxhcmdlciB0aGFuIDAuAGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgbXVzdCBiZSBlbXB0eSBvbiBncm91cCBzdGFydC4gQ3VycmVudCB2YWx1ZTogJyVzJwBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGd1YXJhbnRlZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgcGx1Z2luIHN0cnVjdHVyZXMgb24gc2VydmVyIHN0YXJ0AENvdWxkIG5vdCBlbmFibGUgdGhlIHNlcnZlciByZWFkIG9ubHkgbW9kZSBhbmQgZ3VhcmFudGVlIGEgc2FmZSByZWNvdmVyeSBleGVjdXRpb24ARXJyb3Igb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgaW5pdGlhbGl6YXRpb24AQ2FuJ3Qgc3RhcnQgZ3JvdXAgcmVwbGljYXRpb24gb24gc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgd2hpbGUgYXN5bmNocm9ub3VzIHJlcGxpY2F0aW9uIGNoYW5uZWxzIGFyZSBydW5uaW5nLgBFcnJvciBvbiBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSBzdGFydABUaW1lb3V0IG9uIHdhaXQgZm9yIHZpZXcgYWZ0ZXIgam9pbmluZyBncm91cABFcnJvciBjYWxsaW5nIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBNZW1iZXIgc2VydmVyX3V1aWQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLiBTZXJ2ZXJfdXVpZCAlcyBtYXRjaGVzIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJXMuAE1lbWJlciBjb25maWd1cmF0aW9uOiBtZW1iZXJfaWQ6ICVsdTsgbWVtYmVyX3V1aWQ6ICIlcyI7IHNpbmdsZS1wcmltYXJ5IG1vZGU6ICIlcyI7IGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudDogJWx1OyBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkOiAiJXMiOwBVbmFibGUgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBzZXJ2ZXIgaGFzIGxlZnQgdGhlIGdyb3VwIG9yIG5vdC4gQ2hlY2sgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcnMgdG8gY2hlY2sgZ3JvdXAgbWVtYmVyc2hpcCBpbmZvcm1hdGlvbi4AU2tpcHBpbmcgbGVhdmUgb3BlcmF0aW9uOiBjb25jdXJyZW50IGF0dGVtcHQgdG8gbGVhdmUgdGhlIGdyb3VwIGlzIG9uLWdvaW5nLgBTa2lwcGluZyBsZWF2ZSBvcGVyYXRpb246IG1lbWJlciBhbHJlYWR5IGxlZnQgdGhlIGdyb3VwLgBHb2luZyB0byB3YWl0IGZvciB2aWV3IG1vZGlmaWNhdGlvbgBXaGlsZSBsZWF2aW5nIHRoZSBncm91cCBkdWUgdG8gYSBzdG9wLCBzaHV0ZG93biBvciBmYWlsdXJlIHRoZXJlIHdhcyBhIHRpbWVvdXQgcmVjZWl2aW5nIGEgdmlldyBjaGFuZ2UuIFRoaXMgY2FuIGxlYWQgdG8gYSBwb3NzaWJsZSBpbmNvbnNpc3RlbnQgc3RhdGUuIENoZWNrIHRoZSBsb2cgZm9yIG1vcmUgZGV0YWlscwBSZXF1ZXN0aW5nIHRvIGxlYXZlIHRoZSBncm91cCBkZXNwaXRlIG9mIG5vdCBiZWluZyBhIG1lbWJlcgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBpcyBzdG9wcGluZy4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaGFzIGJlZW4gc3RvcHBlZC4AT24gcGx1Z2luIHNodXRkb3duIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZW5hYmxlIHRoZSBzZXJ2ZXIgcmVhZCBvbmx5IG1vZGUuIExvY2FsIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFjY2VwdGVkIGFuZCBjb21taXR0ZWQuAE9uIHNodXRkb3duIHRoZXJlIHdhcyBhIHRpbWVvdXQgb24gdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHJlY292ZXJ5IG1vZHVsZSB0ZXJtaW5hdGlvbi4gQ2hlY2sgdGhlIGxvZyBmb3IgbW9yZSBkZXRhaWxzAE9uIHNodXRkb3duIHRoZXJlIHdhcyBhIHRpbWVvdXQgb24gdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgdGVybWluYXRpb24uAFVuZXhwZWN0ZWQgZmFpbHVyZSB3aGlsZSBzaHV0dGluZyBkb3duIHJlZ2lzdHJ5IG1vZHVsZSEARmFpbHVyZSBkdXJpbmcgR3JvdXAgUmVwbGljYXRpb24gaGFuZGxlciBpbml0aWFsaXphdGlvbgBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIHNlcnZlciBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSB0cmFuc2FjdGlvbnMgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgYmlubG9nIHN0YXRlIG9ic2VydmVycwBVbmFibGUgdG8gc3RhcnQgR3JvdXAgUmVwbGljYXRpb24gb24gYm9vdABGYWlsdXJlIHdoZW4gc3RvcHBpbmcgR3JvdXAgUmVwbGljYXRpb24gb24gcGx1Z2luIHVuaW5zdGFsbABGYWlsdXJlIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgc2VydmVyIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgdHJhbnNhY3Rpb25zIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgYmlubG9nIHN0YXRlIG9ic2VydmVycwBBbGwgR3JvdXAgUmVwbGljYXRpb24gc2VydmVyIG9ic2VydmVycyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHVucmVnaXN0ZXJlZABVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AQ2Fubm90IHN0YXJ0IHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIGFzIGEgcHJldmlvdXMgc2h1dGRvd24gaXMgc3RpbGwgcnVubmluZzogVGhlIHRocmVhZCB3aWxsIHN0b3Agb25jZSBpdHMgdGFzayBpcyBjb21wbGV0ZS4AVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgbW9kdWxlLgBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIG1vZHVsZSBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQhAEdyb3VwIGNvbW11bmljYXRpb24gU1NMIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX3NzbF9tb2RlOiAiJXMiOyBzZXJ2ZXJfa2V5X2ZpbGU6ICIlcyI7IHNlcnZlcl9jZXJ0X2ZpbGU6ICIlcyI7IGNsaWVudF9rZXlfZmlsZTogIiVzIjsgY2xpZW50X2NlcnRfZmlsZTogIiVzIjsgY2FfZmlsZTogIiVzIjsgY2FfcGF0aDogIiVzIjsgY2lwaGVyOiAiJXMiOyB0bHNfdmVyc2lvbjogIiVzIjsgdGxzX2NpcGhlcnN1aXRlczogIiVzIjsgY3JsX2ZpbGU6ICIlcyI7IGNybF9wYXRoOiAiJXMiOyBzc2xfZmlwc19tb2RlOiAiJXMiAE15U1FMIHNlcnZlciBkb2VzIG5vdCBoYXZlIFNTTCBzdXBwb3J0IGFuZCBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZSBpcyAiJXMiLCBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiB3aWxsIGFib3J0AEdyb3VwIGNvbW11bmljYXRpb24gU1NMIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX3NzbF9tb2RlOiAiJXMiAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZQBCaW5sb2cgbXVzdCBiZSBlbmFibGVkIGZvciBHcm91cCBSZXBsaWNhdGlvbgBHdGlkIG1vZGUgc2hvdWxkIGJlIE9OIGZvciBHcm91cCBSZXBsaWNhdGlvbgBMT0dfUkVQTElDQV9VUERBVEVTIHNob3VsZCBiZSBPTiBmb3IgR3JvdXAgUmVwbGljYXRpb24ARXh0cmFjdGlvbiBvZiB0cmFuc2FjdGlvbiB3cml0ZSBzZXRzIHJlcXVpcmVzIGFuIGhhc2ggYWxnb3JpdGhtIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSwgZG91YmxlIGNoZWNrIHRoYXQgdGhlIHBhcmFtZXRlciB0cmFuc2FjdGlvbi13cml0ZS1zZXQtZXh0cmFjdGlvbiBpcyBzZXQgdG8gYSB2YWxpZCBhbGdvcml0aG0uAEFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yeSBtdXN0IGJlIHNldCB0byBUQUJMRQBDb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgbXVzdCBiZSBzZXQgdG8gVEFCTEUuAEluIG9yZGVyIHRvIHVzZSBwYXJhbGxlbCBhcHBsaWVyIG9uIEdyb3VwIFJlcGxpY2F0aW9uLCBwYXJhbWV0ZXIgcmVwbGljYS1wYXJhbGxlbC10eXBlIG11c3QgYmUgc2V0IHRvICdMT0dJQ0FMX0NMT0NLJy4AR3JvdXAgUmVwbGljYXRpb24gcmVxdWlyZXMgcmVwbGljYS1wcmVzZXJ2ZS1jb21taXQtb3JkZXIgdG8gYmUgc2V0IHRvIE9OIHdoZW4gdXNpbmcgbW9yZSB0aGFuIDEgYXBwbGllciB0aHJlYWRzLgBJdCBpcyBub3QgYWxsb3dlZCB0byBydW4gc2luZ2xlIHByaW1hcnkgbW9kZSB3aXRoICdncm91cF9yZXBsaWNhdGlvbl9lbmZvcmNlX3VwZGF0ZV9ldmVyeXdoZXJlX2NoZWNrcycgZW5hYmxlZC4AZXJyb3JfbWVzc2FnZTogJXMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgb3B0aW9uIGlzIG1hbmRhdG9yeQBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIG5vdCBhIHZhbGlkIFVVSUQsIGl0cyBsZW5ndGggaXMgdG9vIGJpZwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIG5vdCBhIHZhbGlkIFVVSUQAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9xdW90YSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YQBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3JlY292ZXJ5X3F1b3RhIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3F1b3RhIG9yIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcmVjb3ZlcnlfcXVvdGEAVGhlIGdpdmVuIHZhbHVlIGZvciByZWNvdmVyeSBzc2wgb3B0aW9uICdncm91cF9yZXBsaWNhdGlvbl8lcycgaXMgaW52YWxpZCBhcyBpdHMgbGVuZ3RoIGlzIGJleW9uZCB0aGUgbGltaXQAVGhlcmUgaXMgb25lIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgb3BlcmF0aW9uIGFscmVhZHkgb25nb2luZwBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIGNhbiBvbmx5IGJlIHVwZGF0ZWQgd2hlbiBHcm91cCBSZXBsaWNhdGlvbiBpcyBydW5uaW5nIGFuZCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGFyZSB1bnJlYWNoYWJsZQBJbml0aWFsaXplZCBncm91cCBjb21tdW5pY2F0aW9uIHdpdGggY29uZmlndXJhdGlvbjogZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZTogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fbG9jYWxfYWRkcmVzczogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfc2VlZHM6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2Jvb3RzdHJhcF9ncm91cDogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fcG9sbF9zcGluX2xvb3BzOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbXByZXNzaW9uX3RocmVzaG9sZDogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9pcF9hbGxvd2xpc3Q6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fZGVidWdfb3B0aW9uczogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fbWVtYmVyX2V4cGVsX3RpbWVvdXQ6ICclbHUnOyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX21heF9tZXNzYWdlX3NpemU6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fbWVzc2FnZV9jYWNoZV9zaXplOiAnJWx1dTsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9zdGFjazogJyVsdScAVW5rbm93biBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHBpcGVsaW5lIHJlcXVlc3RlZABVbmFibGUgdG8gYm9vdHN0cmFwIGdyb3VwIHJlcGxpY2F0aW9uIGV2ZW50IGhhbmRsaW5nIGluZnJhc3RydWN0dXJlLiBVbmtub3duIGhhbmRsZXIgdHlwZTogJWQAT25lIG9mIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXJzIGlzIG51bGwgZHVlIHRvIGFuIGluaXRpYWxpemF0aW9uIGVycm9yAEEgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyLCBtYXJrZWQgYXMgdW5pcXVlLCBpcyBhbHJlYWR5IGluIHVzZS4AQSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIgcm9sZSwgdGhhdCB3YXMgbWFya2VkIGFzIHVuaXF1ZSwgaXMgYWxyZWFkeSBpbiB1c2UuAEVycm9yIG9uIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciBpbml0aWFsaXphdGlvbgBFcnJvciB3aGVuIGluaXRpYWxpemluZyBhIHNlc3Npb24gdGhyZWFkIGZvciBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbi4ARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBUaGUgaW50ZXJuYWwgc2VydmVyIGNvbW11bmljYXRpb24gc2Vzc2lvbiBpcyBub3QgaW5pdGlhbGl6ZWQARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBUaGUgaW50ZXJuYWwgc2VydmVyIHNlc3Npb24gd2FzIGtpbGxlZCBvciBzZXJ2ZXIgaXMgc2h1dHRpbmcgZG93bi4ARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBHb3QgaW50ZXJuYWwgU1FMIGVycm9yOiAlcyglZCkARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBJbnRlcm5hbCBmYWlsdXJlLgBFcnJvciwgbWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBleGNlZWRlZCB3aGVuIHdhaXRpbmcgZm9yIHRoZSBpbnRlcm5hbCBzZXJ2ZXIgc2Vzc2lvbiBzdGF0ZSB0byBiZSBvcGVyYXRpbmcARXJyb3Igd2hlbiB0cnlpbmcgdG8gZmV0Y2ggc2VjdXJpdHkgY29udGV4dCB3aGVuIGNvbnRhY3RpbmcgdGhlIHNlcnZlciBmb3IgaW50ZXJuYWwgcGx1Z2luIHJlcXVlc3RzLgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gYWNjZXNzIHRoZSBzZXJ2ZXIgd2l0aCB1c2VyOiAlcy4gTWFrZSBzdXJlIHRoZSB1c2VyIGlzIHByZXNlbnQgaW4gdGhlIHNlcnZlciBhbmQgdGhhdCB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUgd2FzIHJ1biBjb3JyZWN0bHkuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucyBzaW5jZSB0aGUgc2VydmVyIGRvZXMgbm90IGhhdmUgYXZhaWxhYmxlIGNvbm5lY3Rpb25zLCBwbGVhc2UgaW5jcmVhc2UgQEBHTE9CQUwuTUFYX0NPTk5FQ1RJT05TLiBTZXJ2ZXIgZXJyb3I6ICVpLgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMuIFNlcnZlciBlcnJvcjogJWkuIFNlcnZlciBlcnJvciBtZXNzYWdlOiAlcwBUaGlzIG1lbWJlciBjb3VsZCBub3QgcmVhY2ggYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBmb3IgbW9yZSB0aGFuICVsZCBzZWNvbmRzLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cCBhcyBpbnN0cnVjdGVkIGJ5IHRoZSBncm91cF9yZXBsaWNhdGlvbl91bnJlYWNoYWJsZV9tYWpvcml0eV90aW1lb3V0IG9wdGlvbi4AVGhlIHNlcnZlciB3YXMgYXV0b21hdGljYWxseSBzZXQgaW50byByZWFkIG9ubHkgbW9kZSBhZnRlciBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQuAFVuYWJsZSB0byBsb2cgbm90aWZpY2F0aW9uIHRvIHRhYmxlIChlcnJubzogJWx1KSAocmVzOiAlZCkhIE1lc3NhZ2U6ICVzAEZhaWx1cmUgaW4gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgJyVzJyBpbml0aWFsaXphdGlvbgBVbmFibGUgdG8gc2V0IHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSBsb2dnZXIAQ3VycmVudCBkZWJ1ZyBvcHRpb25zIGFyZTogJyVzJy4AU29tZSBkZWJ1ZyBvcHRpb25zIGluICclcycgYXJlIG5vdCB2YWxpZC4ARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMgd2hpbGUgdHJ5aW5nIHRvIGxlYXZlIHRoZSBncm91cABNZW1iZXIgaXMgbm90IE9OTElORSwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMARXJyb3Igc2V0dGluZyBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAFRoZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgd2FzIHNldCBpbiB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAFRpbWVvdXQgb24gd2FpdCBmb3IgdmlldyBhZnRlciBzZXR0aW5nIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdmFsdWUgJyVzJyBpbnRvIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBCcm9hZGNhc3Qgb2YgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBtZXNzYWdlIGZhaWxlZC4gTWVzc2FnZSBpcyB0b28gYmlnLgBFcnJvciB3aGlsZSBzZW5kaW5nIHN0YXRzIG1lc3NhZ2UARmxvdyBjb250cm9sIC0gdXBkYXRlIG1lbWJlciBzdGF0czogJXMgc3RhdHMgY2VydGlmaWVyX3F1ZXVlICVkLCBhcHBsaWVyX3F1ZXVlICVkIGNlcnRpZmllZCAlbGQgKCVsZCksIGFwcGxpZWQgJWxkICglbGQpLCBsb2NhbCAlbGQgKCVsZCksIHF1b3RhICVsZCAoJWxkKSBtb2RlPSVkAEZsb3cgY29udHJvbDogdGhyb3R0bGluZyB0byAlbGQgY29tbWl0cyBwZXIgJWxkIHNlYywgd2l0aCAlZCB3cml0aW5nIGFuZCAlZCBub24tcmVjb3ZlcmluZyBtZW1iZXJzLCBtaW4gY2FwYWNpdHkgJWxsZCwgbGltIHRocm90dGxlICVsbGQAVW5hYmxlIHRvIGNvbnZlcnQgYSBwYWNrZXQgaW50byBhbiBldmVudCBvbiB0aGUgYXBwbGllci4gRXJyb3I6ICVzAEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUuAEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUgZm9yIHdyaXRlLgBVbmFibGUgdG8gY29udmVydCB0aGUgZXZlbnQgaW50byBhIHBhY2tldCBvbiB0aGUgYXBwbGllci4gRXJyb3I6ICVzAEZhaWxlZCB0byBmbHVzaCBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZS4ARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZSBmb3IgcmVhZC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuIEdvdCBlcnJvcjogJWQuIFBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBtb3JlIGRldGFpbHMuACVzAFRoZSByZXBsaWNhIElPIHRocmVhZCBvZiBjaGFubmVsICclcycgaXMgdW5ibG9ja2VkIGFzIHRoZSBtZW1iZXIgaXMgZGVjbGFyZWQgT05MSU5FIG5vdy4AVGhlIHJlcGxpY2EgSU8gdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgbWVtYmVyIGZhaWxlZCB0byBjb21lIE9OTElORS4AVGhlIHJlcGxpY2EgYXBwbGllciB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIGlzIHVuYmxvY2tlZCBhcyB0aGUgbWVtYmVyIGlzIGRlY2xhcmVkIE9OTElORSBub3cuAFRoZSByZXBsaWNhIGFwcGxpZXIgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgbWVtYmVyIGZhaWxlZCB0byBjb21lIE9OTElORS4ATERBUCBhdXRoZW50aWNhdGlvbiBpbml0aWFsaXplOiBmYWlsZWQgdG8gY3JlYXRlLyBnZXQgY29ubmVjdGlvbiBmcm9tIHRoZSBwb29sLiAATERBUCBhdXRoZW50aWNhdGlvbiBkZV9pbml0aWFsaXplIEZhaWxlZABTa2lwcGluZyBncm91cCBzZWFyY2gsIE5vIGdyb3VwIGF0dHJpYnV0ZSBtZW50aW9uZWQAUG9vbCBtYXggc2l6ZSBpcyAwLCBjb25uZWN0aW9uIHBvb2wgaXMgZGlzYWJsZWQAQ29ubmVjdGlvbiBwb29sIGluaXRpYWxpemF0aW9uLCBmYWlsZWQgdG8gY3JlYXRlIExEQVAgb2JqZWN0IGNyZWF0b3IAQ29ubmVjdGlvbiBwb29sIGluaXRpYWxpemF0aW9uLCBmYWlsZWQgdG8gY3JlYXRlIExEQVAgb2JqZWN0AExEQVAgVExTIGNvbmZpZ3VyYXRpb24ATERBUCBUTFMgY29ubmVjdGlvbgBMREFQIHBvb2wgaXMgbm90IGNyZWF0ZWQuAExEQVAgcG9vbCBpcyBpbml0aWFsaXppbmcATERBUCBwb29sIGlzIGRlLWluaXRpYWxpemluZwBQb29sIG1heCBzaXplIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgMABMREFQIHBvb2wgaXMgcmUtaW5pdGlhbGl6aW5nAFBsdWctaW4gaGFzIGZhaWxlZCB0byB3cml0ZSB0aGUgcGFja2V0LgBTZXR0aW5nIExEQVAgdXNlciBuYW1lIGFzIDogJXMAVXNlciBhdXRoZW50aWNhdGlvbiBkYXRhOiAlcyBzaXplOiAlbHUAVXNlciBpcyBhdXRoZW50aWNhdGVkIGFzOiAlcyBleHRlcm5hbCB1c2VyOiAlcwBHcm91cCBzZWFyY2ggaW5mb3JtYXRpb24gYmFzZSBETjogJXMgc2NvcGU6ICVkIGZpbHRlcjogJXMgYXR0cmlidXRlOiAlcwBTcGVjaWFsIGhhbmRsaW5nIGZvciBncm91cCBzZWFyY2gsIHtHQX0gZm91bmQAR3JvdXAgc2VhcmNoIHNwZWNpYWwgaGFuZGxpbmcsIGdyb3VwIGZ1bGwgRE4gZm91bmQuIABVc2VyICVzIGlzIG5vdCBtZW1iZXIgb2YgYW55IGdyb3VwLgBVc2VyICVzIGlzIG1lbWJlciBvZiBtb3JlIHRoYW4gb25lIGdyb3VwAEZvciB1c2VyICVzIGhhcyBtdWx0aXBsZSB1c2VyIGdyb3VwIG5hbWVzLiBQbGVhc2UgY2hlY2sgaWYgZ3JvdXAgYXR0cmlidXRlIG5hbWUgaXMgY29ycmVjdABTZWFyY2hlZCBncm91cCBuYW1lOiAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIG9iamVjdCBjcmVhdGlvbiB0aW1lX3N0YW1wOiAlcyBkbjogJXMAQ2VydGlmaWNhdGUgbmFtZTogJXMARmFpbGVkIHRvIHBvb2wgZGUtaW5pdGlhbGl6ZWQ6IHBvb2wgaXMgYWxyZWFkeSByZWNvbnN0cnVjdGluZwBQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBhbHJlYWR5IGluaXRpYWxpemVkAFBvb2wgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBwb29sIGlzIGluaXRpYWxpemluZwBQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBkZS1pbml0aWFsaXppbmcARmFpbGVkIHRvIHBvb2wgZGVpbml0aWFsaXplZDogcG9vbCBpcyBhbHJlYWR5IHJlY29uc3RydWN0aW5nAEZhaWxlZCB0byBwb29sIGRlaW5pdGlhbGl6ZWQgOiBwb29sIGlzIG5vdCByZWFkeQBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0OiBGYWlsZWQgdG8gcmV0dXJuIGNvbm5lY3Rpb24gYXMgcGx1Zy1pbiBpcyBub3QgcmVhZHkvaW5pdGlhbGl6aW5nL2RlLWluaXRpYWxpemluZwBDb25uZWN0aW9uIHBvb2wgaGFzIGZhaWxlZCB0byBpbml0aWFsaXplZABMZGFwX2Nvbm5ldGlvbl9wb29sOjpnZXQgTERBUCBtYXhpbXVtIGNvbm5lY3Rpb24gYWxsb3dlZCBzaXplIGlzIHJlYWNoZWQuIEluY3JlYXNlIHRoZSBtYXhpbXVtIGxpbWl0LgBTZXQgbWF4IHBvb2wgc2l6ZSBmYWlsZWQuAFBsdWctaW4gaGFzIGZhaWxlZCB0byByZWFkIHRoZSBwYWNrZXQgZnJvbSBjbGllbnQATGRhcF9hdXRoZW50aWNhdGlvbjo6aW5pdGlhbGl6ZTogY3JlYXRpbmcgbmV3IExEQVAgY29ubmVjdGlvbi4gAExkYXBfYXV0aGVudGljYXRpb246OmluaXRpYWxpemU6IGdldHRpbmcgY29ubmVjdGlvbiBmcm9tIHBvb2wuIABMZGFwX2F1dGhlbnRpY2F0aW9uOjpkZV9pbml0aWFsaXplIHB1dHRpbmcgYmFjayBjb25uZWN0aW9uIGluIHRoZSBwb29sAExkYXBfYXV0aGVudGljYXRpb246OnNlYXJjaF91c2VyX2dyb3VwIG5vIGdyb3VwIGF0dHJpYnV0ZSBmb3VuZABMZGFwX2Nvbm5ldGlvbl9wb29sOjpwdXQgbGRhcCBpbmZvIG51bGwATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnB1dCBjb25uZWN0aW9uIGlzIGZyZWVpbmcuIABMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6cHV0IGNvbm5lY3Rpb24gaW4gcHVzaGVkIGluIHRoZSBwb29sAExkYXBfY29ubmVjdGlvbl9jcmVhdG9yOjpMZGFwX2Nvbm5lY3Rpb25fY3JlYXRvcgBzdGFydGluZyBUTFMATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldDogKGxkYXBfaW5mbyA9PSBOVUxMKXx8ICgqbGRhcF9pbmZvKQBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6ZGVpbml0OiBkZWxldGluZyBjb25uZWN0aW9uIGtleSAlcwAgTGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldCBwb29sZWQgY29ubmVjdGlvbiBrZXk6ICVzAExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQgY3JlYXRlIGNvbm5lY3Rpb24ga2V5OiAlcwBMREFQIGNvbW11bmljYXRpb24gaG9zdCAlcyBwb3J0ICV1AFNlbmRpbmcgYXV0aGVudGljYXRpb24gbWV0aG9kIHRvIGNsaWVudCA6ICVzAFNBU0wgcmVxdWVzdCByZWNlaXZlZCBmcm9tIG15c3FsIGNsaWVudDogJXMATGRhcF9zYXNsX2F1dGhlbnRpY2F0aW9uOjpwcm9jZXNzX3Nhc2wgcmM6ICVzAExkYXBfc2FzbF9hdXRoZW50aWNhdGlvbjo6cHJvY2Vzc19zYXNsIHNhc2wgYmluZCBzdWNjZWVkLiBkbjogJXMgbWV0aG9kOiAlcyBzZXJ2ZXIgY3JlZGVudGlhbDogJXMATERBUCBhdXRoZW50aWNhdGlvbiBzdGFydGVkIGZvciB1c2VyIG5hbWU6ICVzACVzAExEQVAgYXV0aGVudGljYXRpb24gaW5pdGlhbGl6ZSBpcyBmYWlsZWQgd2l0aDogJXMATERBUCBhdXRoZW50aWNhdGlvbiBmYWlsZWQgb3IgZ3JvdXAgcmV0cmlldmFsIGZhaWxlZDogJXMAU2VhcmNoIHVzZXIgZ3JvdXAgaGFzIGZhaWxlZDogJXMATERBUCB1c2VyIGJpbmQgaGFzIGZhaWxlZDogJXMAQ29ubmVjdGlvbiBwb29sIGdldDogRmFpbGVkIHRvIGNyZWF0ZSBMREFQIGNvbm5lY3Rpb24uICVzAEZhaWxlZCB0byBjcmVhdGUgbmV3IExEQVAgY29ubmVjdGlvbjogICVzAEZhaWxlZCB0byBlc3RhYmxpc2ggVExTIGNvbm5lY3Rpb246ICAlcwBGYWlsZWQgdG8gc2VhcmNoIHVzZXIgZnVsbCBkbjogJXMATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnJlaW5pdABUaGUgcGF0aCAnJXMnLCBmcm9tIHRoZSBOT1RJRllfU09DS0VUIGVudmlyb25tZW50IHZhcmlhYmxlLCBpcyB0b28gbG9uZy4gQXQgJXUgYnl0ZXMgaXQgZXhjZWVkcyB0aGUgbGltaXQgb2YgJXUgYnl0ZXMgZm9yIGFuIEFGX1VOSVggc29ja2V0LgBGYWlsZWQgdG8gY29ubmVjdCB0byBzeXN0ZW1kIG5vdGlmaWNhdGlvbiBzb2NrZXQgbmFtZWQgJXMuIEVycm9yOiAnJXMnAEZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIHN5c3RlbWQgbm90aWZpY2F0aW9uLiBFcnJvcjogJyVzJwBDYW5ub3QgcmVwbGljYXRlIHRvIHNlcnZlciB3aXRoIHNlcnZlcl91dWlkPSclLjM2cycgYmVjYXVzZSB0aGUgcHJlc2VudCBzZXJ2ZXIgaGFzIHB1cmdlZCByZXF1aXJlZCBiaW5hcnkgbG9ncy4gVGhlIGNvbm5lY3Rpbmcgc2VydmVyIG5lZWRzIHRvIHJlcGxpY2F0ZSB0aGUgbWlzc2luZyB0cmFuc2FjdGlvbnMgZnJvbSBlbHNld2hlcmUsIG9yIGJlIHJlcGxhY2VkIGJ5IGEgbmV3IHNlcnZlciBjcmVhdGVkIGZyb20gYSBtb3JlIHJlY2VudCBiYWNrdXAuIFRvIHByZXZlbnQgdGhpcyBlcnJvciBpbiB0aGUgZnV0dXJlLCBjb25zaWRlciBpbmNyZWFzaW5nIHRoZSBiaW5hcnkgbG9nIGV4cGlyYXRpb24gcGVyaW9kIG9uIHRoZSBwcmVzZW50IHNlcnZlci4gJXMuAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tcGlkLWZpbGU6IExvY2F0aW9uICclcycgaW4gdGhlIHBhdGggaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4AQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW4ndCBjaGVjayBQSUQgZmlsZXBhdGg6ICVzAHZhbGlkYXRlX3Bhc3N3b3JkIHN0YXR1cyB2YXJpYWJsZXMgcmVnaXN0cmF0aW9uIGZhaWxlZC4AdmFsaWRhdGVfcGFzc3dvcmQgc3RhdHVzIHZhcmlhYmxlcyB1bnJlZ2lzdHJhdGlvbiBmYWlsZWQuAERpY3Rpb25hcnkgZmlsZSBvcGVuIGZhaWxlZABnaXZlbiBwYXNzd29yZCBzdHJpbmcgY291bGQgYmUgbnVsbABmYWlsZWQgdG8gY29udmVydCB0aGUgcGFzc3dvcmQgc3RyaW5nIHRvIGxvd2VyIGNhc2UAZmFpbGVkIHRvIGNvbnZlcnQgdGhlIHBhc3N3b3JkIHN0cmluZyBpbnRvIGEgYnVmZmVyAG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCBmb3Igc3RyaW5nIGhhbmRsZXIAU2luY2UgdGhlIHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeSBpcyBtZW50aW9uZWQgYXMgU3Ryb25nLCBkaWN0aW9uYXJ5IGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQAY29udmVydF90b19idWZmZXIgc2VydmljZSBmYWlsZWQAJXMgdmFyaWFibGUgcmVnaXN0cmF0aW9uIGZhaWxlZC4AJXMgdmFyaWFibGUgdW5yZWdpc3RyYXRpb24gZmFpbGVkLgBQbGVhc2Ugc3BlY2lmeSBvcHRpb25zIHNwZWNpZmljIHRvIGtleXJpbmcgbWlncmF0aW9uLiBBbnkgYWRkaXRpb25hbCBvcHRpb25zIGNhbiBiZSBpZ25vcmVkLiBOT1RFOiBBbHRob3VnaCBzb21lIG9wdGlvbnMgYXJlIHZhbGlkLCBtaWdyYXRpb24gdG9vbCBjYW4gc3RpbGwgcmVwb3J0IGVycm9yIGV4YW1wbGU6IHBsdWdpbiB2YXJpYWJsZXMgZm9yIHdoaWNoIHBsdWdpbiBpcyBub3QgbG9hZGVkIHlldC4ASW52YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8wOTAwX2FpX2NpIG9yIHV0ZjhtYjRfZ2VuZXJhbF9jaSBleHBlY3RlZAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBGYWlsZWQgdG8gc2V0IE5VTUEgbWVtb3J5IHBvbGljeSBvZiBidWZmZXIgcG9vbCBwYWdlIGZyYW1lcyB3aXRoIG1iaW5kKCVwLCV6dSwlcywuLi4sLi4uLCVzKSBmYWlsZWQgd2l0aCAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBQYWdlIHN0aWxsIGZpeGVkIG9yIGRpcnR5IGF0IHNodXRkb3duLiAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBXYWl0ZWQgZm9yICV1IHNlY3MgZm9yIGhhc2ggaW5kZXggcmVmX2NvdW50ICglenUpIHRvIGRyb3AgdG8gMC4gaW5kZXg6ICIlcyIgdGFibGU6ICIlcyIAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGFibGUgZmxhZ3MgYXJlIDB4JWx4IGluIHRoZSBkYXRhIGRpY3Rpb25hcnkgYnV0IHRoZSBmbGFncyBpbiBmaWxlICVzICBhcmUgMHglbGx4IQBDYW4ndCByZWFkIGVuY3J5cHRpb24ga2V5IGZyb20gZmlsZSAlcyEAQ2Fubm90IGNsb3NlIGZpbGUgJXMsIGJlY2F1c2Ugbl9wZW5kaW5nX2ZsdXNoZXMgJXp1AENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIG1vZGlmaWNhdGlvbiBjb3VudCAlbGxkICE9IGZsdXNoIGNvdW50ICVsbGQAQ2Fubm90IGNsb3NlIGZpbGUgJXMsIGJlY2F1c2UgaXQgaXMgaW4gdXNlAE9wZW4gZmlsZSBsaXN0IGxlbiBpbiBzaGFyZCAlenUgaXMgJWxsdQBUYWJsZXNwYWNlICVzLCB3YWl0aW5nIGZvciBJTyB0byBzdG9wIGZvciAlbGxkIHNlY29uZHMAJXMAJXMAJXMAJXMAJXMAWW91IG11c3QgcmFpc2UgdGhlIHZhbHVlIG9mIGlubm9kYl9vcGVuX2ZpbGVzIGluIG15LmNuZiEgUmVtZW1iZXIgdGhhdCBJbm5vREIga2VlcHMgYWxsIHJlZG8gbG9nIGZpbGVzIGFuZCBhbGwgc3lzdGVtIHRhYmxlc3BhY2UgZmlsZXMgb3BlbiBmb3IgdGhlIHdob2xlIHRpbWUgbXlzcWxkIGlzIHJ1bm5pbmcsIGFuZCBuZWVkcyB0byBvcGVuIGFsc28gc29tZSAuaWJkIGZpbGVzIGlmIHRoZSBmaWxlLXBlci10YWJsZSBzdG9yYWdlIG1vZGVsIGlzIHVzZWQuIEN1cnJlbnQgb3BlbiBmaWxlcyAlenUsIG1heCBhbGxvd2VkIG9wZW4gZmlsZXMgJXp1LgBNYXggdGFibGVzcGFjZSBpZCBpcyB0b28gaGlnaCwgJWx1AFRyeWluZyB0byBhY2Nlc3MgbWlzc2luZyB0YWJsZXNwYWNlICVsdQBUcnlpbmcgdG8gY2xvc2UvZGVsZXRlIHRhYmxlc3BhY2UgJyVzJyBidXQgdGhlcmUgYXJlICVsdSBwZW5kaW5nIG9wZXJhdGlvbnMgb24gaXQuAFRyeWluZyB0byBkZWxldGUvY2xvc2UgdGFibGVzcGFjZSAnJXMnIGJ1dCB0aGVyZSBhcmUgJWx1IGZsdXNoZXMgYW5kICV6dSBwZW5kaW5nIEkvTydzIG9uIGl0LgAlcwBDYW5ub3QgZGVsZXRlIHRhYmxlc3BhY2UgJWx1IGJlY2F1c2UgaXQgaXMgbm90IGZvdW5kIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZS4AV2hpbGUgZGVsZXRpbmcgdGFibGVzcGFjZSAlbHUgaW4gRElTQ0FSRCBUQUJMRVNQQUNFLiBGaWxlIHJlbmFtZS9kZWxldGUgZmFpbGVkOiAlcwBDYW5ub3QgZGVsZXRlIHRhYmxlc3BhY2UgJWx1IGluIERJU0NBUkQgVEFCTEVTUEFDRTogJXMAQ2Fubm90IHJlbmFtZSAnJXMnIHRvICclcycgZm9yIHNwYWNlIElEICVsdSBiZWNhdXNlIHRoZSBzb3VyY2UgZmlsZSBkb2VzIG5vdCBleGlzdC4AQ2Fubm90IHJlbmFtZSAnJXMnIHRvICclcycgZm9yIHNwYWNlIElEICVsdSBiZWNhdXNlIHRoZSB0YXJnZXQgZmlsZSBleGlzdHMuIFJlbW92ZSB0aGUgdGFyZ2V0IGZpbGUgYW5kIHRyeSBhZ2Fpbi4AQ2Fubm90IHJlbmFtZSBmaWxlICclcycgKHNwYWNlIGlkICVsdSkgcmV0cmllZCAlbGx1IHRpbWVzLiBUaGVyZSBhcmUgZWl0aGVyIHBlbmRpbmcgSU9zIG9yIGZsdXNoZXMgb3IgdGhlIGZpbGUgaXMgYmVpbmcgZXh0ZW5kZWQuAENhbm5vdCBmaW5kIHNwYWNlIGlkICVsdSBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUsIHRob3VnaCB0aGUgZmlsZSAnJXMnIGluIGEgcmVuYW1lIG9wZXJhdGlvbiBzaG91bGQgaGF2ZSB0aGF0IElELgBSZW5hbWUgd2FpdGluZyBmb3IgSU8gdG8gcmVzdW1lAENhbm5vdCBmaW5kIHRhYmxlc3BhY2UgZm9yICclcycgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlAENhbm5vdCBmaW5kIHRhYmxlc3BhY2UgZm9yICclcycgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlAFRhYmxlc3BhY2UgJyVzJyBpcyBhbHJlYWR5IGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBDYW5ub3QgY3JlYXRlIGZpbGUgJyVzJwBUaGUgZmlsZSAnJXMnIGFscmVhZHkgZXhpc3RzIHRob3VnaCB0aGUgY29ycmVzcG9uZGluZyB0YWJsZSBkaWQgbm90IGV4aXN0LiBIYXZlIHlvdSBtb3ZlZCBJbm5vREIgLmliZCBmaWxlcyBhcm91bmQgd2l0aG91dCB1c2luZyB0aGUgU1FMIGNvbW1hbmRzIERJU0NBUkQgVEFCTEVTUEFDRSBhbmQgSU1QT1JUIFRBQkxFU1BBQ0UsIG9yIGRpZCBteXNxbGQgY3Jhc2ggaW4gdGhlIG1pZGRsZSBvZiBDUkVBVEUgVEFCTEU/IFlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbSBieSByZW1vdmluZyB0aGUgZmlsZSAnJXMnIHVuZGVyIHRoZSAnZGF0YWRpcicgb2YgTXlTUUwuAHBvc2l4X2ZhbGxvY2F0ZSgpOiBGYWlsZWQgdG8gcHJlYWxsb2NhdGUgZGF0YSBmb3IgZmlsZSAlcywgZGVzaXJlZCBzaXplICVsbHUgT3BlcmF0aW5nIHN5c3RlbSBlcnJvciBudW1iZXIgJWQgLSAlcy4gQ2hlY2sgdGhhdCB0aGUgZGlzayBpcyBub3QgZnVsbCBvciBhIGRpc2sgcXVvdGEgZXhjZWVkZWQuIE1ha2Ugc3VyZSB0aGUgZmlsZSBzeXN0ZW0gc3VwcG9ydHMgdGhpcyBmdW5jdGlvbi4gUmVmZXIgdG8geW91ciBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIG9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgY29kZSBpbmZvcm1hdGlvbi4AQ291bGQgbm90IHdyaXRlIHRoZSBmaXJzdCBwYWdlIHRvIHRhYmxlc3BhY2UgJyVzJwBGaWxlIGZsdXNoIG9mIHRhYmxlc3BhY2UgJyVzJyBmYWlsZWQAQ291bGQgbm90IGZpbmQgYSB2YWxpZCB0YWJsZXNwYWNlIGZpbGUgZm9yIGAlc2AuICVzAElnbm9yaW5nIGRhdGEgZmlsZSAnJXMnIHdpdGggc3BhY2UgSUQgJWx1LiBBbm90aGVyIGRhdGEgZmlsZSBjYWxsZWQgJyVzJyBleGlzdHMgd2l0aCB0aGUgc2FtZSBzcGFjZSBJRAAlcwAlcwAlcwAlcwBDYW4ndCBzZXQgZW5jcnlwdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGFibGVzcGFjZSAlcyEAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGhlIGRhdGFmaWxlICclcycgZm9yIHRhYmxlc3BhY2UgJXMgaXMgaW4gYW4gdW5wcm90ZWN0ZWQgbG9jYXRpb24uIFRoaXMgZmlsZSBjYW5ub3QgYmUgcmVjb3ZlcmVkIGFmdGVyIGEgY3Jhc2ggdW50aWwgdGhpcyBsb2NhdGlvbiBpcyBhZGRlZCB0byBpbm5vZGJfZGlyZWN0b3JpZXMuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFNjYW4gcGF0aCAnJXMnIGlzIGlnbm9yZWQgYmVjYXVzZSAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBBIGdlbmVyYWwgdGFibGVzcGFjZSBjYW5ub3QgYmUgbG9jYXRlZCB1bmRlciB0aGUgZGF0YWRpci4gQ2Fubm90IG9wZW4gZmlsZSAnJXMnLgBBIGZpbGUtcGVyLXRhYmxlIHRhYmxlc3BhY2UgY2Fubm90IGJlIGxvY2F0ZWQgaW4gdGhlIGRhdGFkaXIuIENhbm5vdCBvcGVuIGZpbGUgJyVzJy4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQ2Fubm90IGNyZWF0ZSBhIHRhYmxlc3BhY2UgZm9yIHRhYmxlICVzIGJlY2F1c2UgdGhlIGRpcmVjdG9yeSBpcyBub3QgYSB2YWxpZCBsb2NhdGlvbi4gJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAaWJ1ZiBjdXJzb3IgcmVzdG9yYXRpb24gZmFpbHMhLiBpYnVmIHJlY29yZCBpbnNlcnRlZCB0byBwYWdlICVzOiVzACVzAEZhaWxlZCB0byByZXN0b3JlIGlidWYgcG9zaXRpb24uACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoSUQgJWxsdSwgVGhyZWFkIElEICVzKSBmb3JjZXMgcm9sbGJhY2sgb2YgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1IC0gJXMpLgAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKFRocmVhZCBJRCAlcykgd2FraW5nIHVwIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSkgYnkgcHJldGVuZGluZyBpdCdzIGEgZGVhZGxvY2sgdmljdGltLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUaGUgdHJhbnNhY3Rpb24gbG9nIHNpemUgaXMgdG9vIGxhcmdlIGZvciBpbm5vZGJfbG9nX2J1ZmZlcl9zaXplICglbHUgPj0gJWx1IC8gMikuIFRyeWluZyB0byBleHRlbmQgaXQuAGlubm9kYl9sb2dfYnVmZmVyX3NpemUgd2FzIGV4dGVuZGVkIHRvICVsdSBieXRlcy4AVGhlIHRyYW5zYWN0aW9uIGxvZyBmaWxlcyBhcmUgdG9vIHNtYWxsIGZvciB0aGUgc2luZ2xlIHRyYW5zYWN0aW9uIGxvZyAoc2l6ZT0lbHUpLiBTbywgdGhlIGxhc3QgY2hlY2twb2ludCBhZ2UgbWlnaHQgZXhjZWVkIHRoZSBsb2cgZ3JvdXAgY2FwYWNpdHkgJWxsdS4AVGhlIGFnZSBvZiB0aGUgbGFzdCBjaGVja3BvaW50IGlzICVsbHUsIHdoaWNoIGV4Y2VlZHMgdGhlIGxvZyBncm91cCBjYXBhY2l0eSAlbGx1LgBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLiBpYl9sb2dmaWxlcyBhcmUgdG9vIHNtYWxsIGZvciBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5ICVsdS4gVGhlIGNvbWJpbmVkIHNpemUgb2YgaWJfbG9nZmlsZXMgc2hvdWxkIGJlIGJpZ2dlciB0aGFuIDIwMCBrQiAqIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kuIFRvIGdldCBteXNxbGQgdG8gc3RhcnQgdXAsIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IGluIG15LmNuZiB0byBhIGxvd2VyIHZhbHVlLCBmb3IgZXhhbXBsZSwgdG8gOC4gQWZ0ZXIgYW4gRVJST1ItRlJFRSBzaHV0ZG93biBvZiBteXNxbGQgeW91IGNhbiBhZGp1c3QgdGhlIHNpemUgb2YgaWJfbG9nZmlsZXMuICVzAFJlZG8gbG9nIHdhcyBlbmNyeXB0ZWQsIGJ1dCBrZXlyaW5nIHBsdWdpbiBpcyBub3QgbG9hZGVkLgBSZWFkIHJlZG8gbG9nIGVuY3J5cHRpb24gbWV0YWRhdGEgc3VjY2Vzc2Z1bC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgZW5jcnlwdGlvbiBtZXRhZGF0YS4AQ2Fubm90IHJlYWQgdGhlIGVuY3J5cHRpb24gaW5mb3JtYXRpb24gaW4gbG9nIGZpbGUgaGVhZGVyLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBwbHVnaW4gbG9hZGVkIGFuZCB0aGUga2V5IGZpbGUgZXhpc3RzLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5IG1vZGUuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuAEZsdXNoIHdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGNhdGNoIHVwIGxhZyBMU046ICVsbHUARmx1c2ggb3ZlcndyaXRpbmcgZGF0YSB0byBhcmNoaXZlIC0gd2FpdCB0b28gbG9uZyAoMSBtaW51dGUpIGxhZyBMU046ICVsbHUAJXMAU3RhcnRpbmcgc2h1dGRvd24uLi4AV2FpdGluZyBmb3IgJXMgdG8gZXhpdABXYWl0aW5nIGZvciAlbHUgYWN0aXZlIHRyYW5zYWN0aW9ucyB0byBmaW5pc2gAV2FpdGluZyBmb3IgbWFzdGVyIHRocmVhZCB0byBiZSBzdXNwZW5kZWQAV2FpdGluZyBmb3IgcGFnZV9jbGVhbmVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbABQZW5kaW5nIGNoZWNrcG9pbnRfd3JpdGVzOiAlbHUuIFBlbmRpbmcgbG9nIGZsdXNoIHdyaXRlczogJWx1LgBXYWl0aW5nIGZvciAlbHUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZQBNeVNRTCBoYXMgcmVxdWVzdGVkIGEgdmVyeSBmYXN0IHNodXRkb3duIHdpdGhvdXQgZmx1c2hpbmcgdGhlIElubm9EQiBidWZmZXIgcG9vbCB0byBkYXRhIGZpbGVzLiBBdCB0aGUgbmV4dCBteXNxbGQgc3RhcnR1cCBJbm5vREIgd2lsbCBkbyBhIGNyYXNoIHJlY292ZXJ5IQBCYWNrZ3JvdW5kIHRocmVhZCAlcyB3b2tlIHVwIGR1cmluZyBzaHV0ZG93bgBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwBCYWNrZ3JvdW5kIHRocmVhZCAlcyB3b2tlIHVwIGR1cmluZyBzaHV0ZG93bgBXYWl0aW5nIGZvciBkaXJ0eSBidWZmZXIgcGFnZXMgdG8gYmUgZmx1c2hlZABMb2cgc2VxdWVuY2UgbnVtYmVyIGF0IHNodXRkb3duICVsbHUgaXMgbG93ZXIgdGhhbiBhdCBzdGFydHVwICVsbHUhAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nACMjIyMjIyMjIyMjIyMjIyBDT1JSVVBUIExPRyBSRUNPUkQgRk9VTkQgIyMjIyMjIyMjIyMjIyMjAExvZyByZWNvcmQgdHlwZSAlZCwgcGFnZSAlbHU6JWx1LiBMb2cgcGFyc2luZyBwcm9jZWVkZWQgc3VjY2Vzc2Z1bGx5IHVwIHRvICVsbHUuIFByZXZpb3VzIGxvZyByZWNvcmQgdHlwZSAlZCwgaXMgbXVsdGkgJWxsdSBSZWN2IG9mZnNldCAlemQsIHByZXYgJWxsdQBIZXggZHVtcCBzdGFydGluZyAlbGx1IGJ5dGVzIGJlZm9yZSBhbmQgZW5kaW5nICVsbHUgYnl0ZXMgYWZ0ZXIgdGhlIGNvcnJ1cHRlZCByZWNvcmQ6AFNldCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgdG8gaWdub3JlIHRoaXMgZXJyb3IuAFRoZSByZWRvIGxvZyBmaWxlIG1heSBoYXZlIGJlZW4gY29ycnVwdCBhbmQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbG9nIHNjYW4gZGlkIG5vdCBwcm9jZWVkIGZhciBlbm91Z2ggaW4gcmVjb3ZlcnkhIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUgb24geW91ciBJbm5vREIgdGFibGVzIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgb2shIElmIG15c3FsZCBjcmFzaGVzIGFmdGVyIHRoaXMgcmVjb3Zlcnk7ICVzACVsbHUgcGFnZXMgd2l0aCBsb2cgcmVjb3JkcyB3ZXJlIGxlZnQgdW5wcm9jZXNzZWQhAFVwZ3JhZGUgYWZ0ZXIgYSBjcmFzaCBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIHJlZG8gbG9nIHdhcyBjcmVhdGVkIHdpdGggJXMsIGFuZCBpdCBhcHBlYXJzIGNvcnJ1cHRlZC4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzAFVwZ3JhZGUgaXMgbm90IHN1cHBvcnRlZCBhZnRlciBhIGNyYXNoIG9yIHNodXRkb3duIHdpdGggaW5ub2RiX2Zhc3Rfc2h1dGRvd24gPSAyLiBUaGlzIHJlZG8gbG9nIHdhcyBjcmVhdGVkIHdpdGggJXMsIGFuZCBpdCBhcHBlYXJzIGxvZ2ljYWxseSBub24gZW1wdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwAlcwAlcwBSZWRvIGxvZyBmb3JtYXQgaXMgdiVsdS4gVGhlIHJlZG8gbG9nIHdhcyBjcmVhdGVkIGJlZm9yZSBNeVNRTCA4LjAuMzAuAFVua25vd24gcmVkbyBsb2cgZm9ybWF0ICh2JWx1KSBpbiBmaWxlICVzLiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMATm8gdmFsaWQgY2hlY2twb2ludCBmb3VuZCAoY29ycnVwdGVkIHJlZG8gbG9nKS4gWW91IGNhbiB0cnkgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9NiBhcyBhIGxhc3QgcmVzb3J0LgBBcHBseWluZyBhIGJhdGNoIG9mICVsbHUgcmVkbyBsb2cgcmVjb3JkcyAuLi4AJXMAJXMAQXBwbHkgYmF0Y2ggY29tcGxldGVkIQAlcwAlcwAlcwAlcwAlcwAlcwBBbiBvcHRpbWl6ZWQgKHdpdGhvdXQgcmVkbyBsb2dnaW5nKSBEREwgb3BlcmF0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZC4gQWxsIG1vZGlmaWVkIHBhZ2VzIG1heSBub3QgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gdGhlIGRpc2sgeWV0LiBUaGlzIG9mZmxpbmUgYmFja3VwIG1heSBub3QgYmUgY29uc2lzdGVudC4ARXh0ZW5kaW5nIHRhYmxlc3BhY2UgOiAlbHUgc3BhY2UgbmFtZTogJXMgdG8gbmV3IHNpemU6ICVsdSBwYWdlcyBkdXJpbmcgcmVjb3ZlcnkuAENvdWxkIG5vdCBleHRlbmQgdGFibGVzcGFjZTogJWx1IHNwYWNlIG5hbWU6ICVzIHRvIG5ldyBzaXplOiAlbHUgcGFnZXMgZHVyaW5nIHJlY292ZXJ5LgBMb2cgYmxvY2sgJWx1IGF0IGxzbiAlbGx1IGhhcyB2YWxpZCBoZWFkZXIsIGJ1dCBjaGVja3N1bSBmaWVsZCBjb250YWlucyAlbHUsIHNob3VsZCBiZSAlbHUuAFNraXBwZWQgbmVjZXNzYXJ5IHJlZG8gbG9nIGFwcGx5aW5nLCAtLWlubm9kYi1yZWFkLW9ubHkgc2V0IQBMb2cgc2NhbiBwcm9ncmVzc2VkIHBhc3QgdGhlIGNoZWNrcG9pbnQgTFNOICVsbHUuAExvZyBwYXJzaW5nIGJ1ZmZlciBvdmVyZmxvdy4gUmVjb3ZlcnkgbWF5IGhhdmUgZmFpbGVkISBQbGVhc2Ugc2V0IGxvZ19idWZmZXJfc2l6ZSB0byBhIHZhbHVlIGhpZ2hlciB0aGFuICVsdS4AU2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeSB0byBpZ25vcmUgdGhpcyBlcnJvci4ARG9pbmcgcmVjb3Zlcnk6IHNjYW5uZWQgdXAgdG8gbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AERhdGFiYXNlIHdhcyBub3Qgc2h1dGRvd24gbm9ybWFsbHkhAFN0YXJ0aW5nIGNyYXNoIHJlY292ZXJ5LgBUaGUgdXNlciBoYXMgc2V0IFNSVl9GT1JDRV9OT19MT0dfUkVETyBvbiwgc2tpcHBpbmcgbG9nIHJlZG8AQ2Fubm90IHJlc3RvcmUgZnJvbSBteXNxbGJhY2t1cCwgSW5ub0RCIHJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUhAFRoZSByZWRvIGxvZyBmaWxlIHdhcyBjcmVhdGVkIGJ5IG15c3FsYmFja3VwIC0tYXBwbHktbG9nIGF0ICVzLiBUaGUgZm9sbG93aW5nIGNyYXNoIHJlY292ZXJ5IGlzIHBhcnQgb2YgYSBub3JtYWwgcmVzdG9yZS4AT3BlbmluZyBjbG9uZWQgZGF0YWJhc2UAUmVkbyBsb2cgaXMgZnJvbSBhbiBlYXJsaWVyIHZlcnNpb24sIHYlbHUuAFJlZG8gbG9nIGZvcm1hdCB2JWx1IG5vdCBzdXBwb3J0ZWQuIEN1cnJlbnQgc3VwcG9ydGVkIGZvcm1hdCBpcyB2JWx1LgBBcmUgeW91IHN1cmUgeW91IGFyZSB1c2luZyB0aGUgcmlnaHQgcmVkbyBsb2cgZmlsZXMgdG8gc3RhcnQgdXAgdGhlIGRhdGFiYXNlPyBMb2cgc2VxdWVuY2UgbnVtYmVyIGluIHRoZSByZWRvIGxvZyBmaWxlcyBpcyAlbGx1LCBsZXNzIHRoYW4gdGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgaW4gdGhlIGZpcnN0IHN5c3RlbSB0YWJsZXNwYWNlIGZpbGUgaGVhZGVyLCAlbGx1LgBUaGUgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IGluIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBkb2VzIG5vdCBtYXRjaCB0aGUgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IGluIHRoZSByZWRvIGxvZyBmaWxlcyEAQ2FuJ3QgaW5pdGlhdGUgZGF0YWJhc2UgcmVjb3ZlcnksIHJ1bm5pbmcgaW4gcmVhZC1vbmx5LW1vZGUuAFdlIHNjYW5uZWQgdGhlIGxvZyB1cCB0byAlbGx1LiBBIGNoZWNrcG9pbnQgd2FzIGF0ICVsbHUgYW5kIHRoZSBtYXhpbXVtIExTTiBvbiBhIGRhdGFiYXNlIHBhZ2Ugd2FzICVsbHUuIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG5vdyBjb3JydXB0IQBXYWl0aW5nIGZvciByZWN2X3dyaXRlciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wAUmVjb3ZlcnkgcGFyc2luZyBidWZmZXIgZXh0ZW5kZWQgdG8gJXp1LgBPdXQgb2YgbWVtb3J5IHdoaWxlIHJlc2l6aW5nIHJlY292ZXJ5IHBhcnNpbmcgYnVmZmVyLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBDYW4ndCBlbmNyeXB0IGRhdGEgb2YgcmVkbyBsb2cAJXMAJXMARGVjcnlwdGlvbiBvZiByZWRvIGxvZyBibG9jayBhdCBvZmZzZXQgJWxsdSBpbiBmaWxlICVzIGZhaWxlZCBiZWNhdXNlIHRoZXJlJ3Mgbm8ga2V5cmluZyBjb25maWd1cmVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAElPIEVycm9yOiAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBXcml0aW5nIHRhYmxlIG1ldGFkYXRhIHRvICclcycAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAT2xkIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdSB3YXMgZ3JlYXRlciB0aGFuIHRoZSBuZXcgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1LiBQbGVhc2Ugc3VibWl0IGEgYnVnIHJlcG9ydCB0byBodHRwOi8vYnVncy5teXNxbC5jb20AU2VtYXBob3JlIHdhaXQgaGFzIGxhc3RlZCA+ICVsbHUgc2Vjb25kcy4gV2UgaW50ZW50aW9uYWxseSBjcmFzaCB0aGUgc2VydmVyIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBodW5nLgBXYWl0aW5nIGZvciAlbGx1IHRhYmxlKHMpIHRvIGJlIGRyb3BwZWQAV2FpdGluZyBmb3IgY2hhbmdlIGJ1ZmZlciBtZXJnZSB0byBjb21wbGV0ZSBudW1iZXIgb2YgYnl0ZXMgb2YgY2hhbmdlIGJ1ZmZlciBqdXN0IG1lcmdlZDogJWxsdQBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlKHMpIHRvIGJlIGVuY3J5cHRlZCBzaW5jZSAtLWlubm9kYl91bmRvX3RhYmxlc3BhY2VzPTAuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UocykgdG8gYmUgZW5jcnlwdGVkIGluIHJlYWQtb25seS1tb2RlLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLiBGYWlsZWQgdG8gd3JpdGUgaGVhZGVyIHBhZ2UuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UgJyVzJyB0byBiZSBlbmNyeXB0ZWQuIEVycm9yICVkIC0gJXMARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ2FuJ3Qgcm90YXRlIGVuY3J5cHRpb24gb24gdW5kbyB0YWJsZXNwYWNlICclcycuAEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAG9zX2ZpbGVfZ2V0X3N0YXR1cygpIGZhaWxlZCBvbiAnJXMnLiBDYW4ndCBkZXRlcm1pbmUgZmlsZSBwZXJtaXNzaW9ucy4AJXMgY2FuJ3QgYmUgb3BlbmVkIGluICVzIG1vZGUuACclcycgbm90IGEgcmVndWxhciBmaWxlLgBDYW5ub3QgY3JlYXRlICVzAFNldHRpbmcgZmlsZSAlcyBzaXplIHRvICVsbHUgTUIuIFByb2dyZXNzIDogJXUlJQBDYW5ub3QgcmVzaXplIHJlZG8gbG9nIGZpbGUgJXMgdG8gJWxsdSBNQiAoJXMpAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUgKC0taW5ub2RiLXJlYWQtb25seSkuAFJlZG8gbG9nIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgYnV0IHRoZSBrZXlyaW5nIGlzIG5vdCBsb2FkZWQuAEZhaWxlZCB0byBjcmVhdGUgcmVkbyBsb2cgZmlsZSAlcyAoZXJyb3I6ICVkKSBmb3Igc3RhcnQgTFNOICVsbHUAUmVuYW1pbmcgbG9nIGZpbGUgJXMgdG8gJXMATmV3IHJlZG8gbG9nIGZpbGVzIGNyZWF0ZWQsIExTTj0lbGx1AFVuYWJsZSB0byBvcGVuICclcycgKGVycm9yOiAlZCkuAENhbm5vdCBjcmVhdGUgY29uc3RydWN0aW9uIGxvZyBmaWxlICclcycgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDcmVhdGluZyBVTkRPIFRhYmxlc3BhY2UgJXMAU2V0dGluZyBmaWxlICVzIHNpemUgdG8gJWxsdSBNQgBQaHlzaWNhbGx5IHdyaXRpbmcgdGhlIGZpbGUgZnVsbABFcnJvciBpbiBjcmVhdGluZyAlczogcHJvYmFibHkgb3V0IG9mIGRpc2sgc3BhY2UAQ2FuJ3Qgc2V0IGVuY3J5cHRpb24gbWV0YWRhdGEgZm9yIHNwYWNlICVzAENhbm5vdCByZWFkIGZpcnN0IHBhZ2Ugb2YgJyVzJyAtICVzAFVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1IHdhcyBiZWluZyB0cnVuY2F0ZWQgd2hlbiBteXNxbGQgcXVpdC4AQ2Fubm90IHJlY292ZXIgYSB0cnVuY2F0ZWQgdW5kbyB0YWJsZXNwYWNlIGluIHJlYWQtb25seSBtb2RlAFJlY29uc3RydWN0aW5nIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBDYW5ub3QgY3JlYXRlICVzIGJlY2F1c2UgJXMgYWxyZWFkeSB1c2VzIFNwYWNlIElEPSVsdSEgRGlkIHlvdSBjaGFuZ2UgaW5ub2RiX3VuZG9fZGlyZWN0b3J5PwBVTkRPIHRhYmxlc3BhY2UgJXMgbXVzdCBiZSAlcwBFcnJvciBjcmVhdGluZyBmaWxlIGZvciAlcwBFcnJvciByZWFkaW5nIGVuY3J5cHRpb24gZm9yICVzAFVuYWJsZSB0byBvcGVuIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1AE9wZW5lZCAlbGx1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMuAENhbm5vdCBjcmVhdGUgdW5kbyB0YWJsZXNwYWNlcyBzaW5jZSBpbm5vZGJfJXMgaGFzIGJlZW4gc2V0LiBVc2luZyAlbGx1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMuAENhbm5vdCBjb250aW51ZSBJbm5vREIgc3RhcnR1cCBpbiAlcyBtb2RlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMgZm91bmQuAENvdWxkIG5vdCBjcmVhdGUgdW5kbyB0YWJsZXNwYWNlICclcycuAEVycm9yICVkIC0gJXMgLSBvcGVuaW5nIG5ld2x5IGNyZWF0ZWQgdW5kbyB0YWJsZXNwYWNlICclcycuAENyZWF0ZWQgJWxsdSB1bmRvIHRhYmxlc3BhY2VzLgBVbmFibGUgdG8gY3JlYXRlIGVuY3J5cHRlZCB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4gcGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseQBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgaGVhZGVyIHBhZ2UgaW4gdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuAENhbm5vdCBkZWxldGUgb2xkIHVuZG8gdGFibGVzcGFjZXMgYmVjYXVzZSB0aGV5IGNvbnRhaW4gdW5kbyBsb2dzIGZvciBYQSBQUkVQQVJFRCB0cmFuc2FjdGlvbnMuAFVwZ3JhZGluZyAlenUgZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcyB0aGF0IHdlcmUgdHJhY2tlZCBpbiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgdG8gJWx1IG5ldyBpbmRlcGVuZGVudCB1bmRvIHRhYmxlc3BhY2VzLgBEZWxldGluZyAlbGx1IG5ldyBpbmRlcGVuZGVudCB1bmRvIHRhYmxlc3BhY2VzIHRoYXQgd2UganVzdCBjcmVhdGVkLgBXYWl0aW5nIGZvciBwdXJnZSB0byBzdGFydABDcmVhdGluZyBzaGFyZWQgdGFibGVzcGFjZSBmb3IgdGVtcG9yYXJ5IHRhYmxlcwBUaGUgJXMgZGF0YSBmaWxlIG11c3QgYmUgd3JpdGFibGUhAENvdWxkIG5vdCBjcmVhdGUgdGhlIHNoYXJlZCAlcy4AVW5hYmxlIHRvIGNyZWF0ZSB0aGUgc2hhcmVkICVzLgBUaGUgJXMgZGF0YSBmaWxlIGNhbm5vdCBiZSByZS1vcGVuZWQgYWZ0ZXIgY2hlY2tfZmlsZV9zcGVjKCkgc3VjY2VlZGVkIQAlZCB0aHJlYWRzIGNyZWF0ZWQgYnkgSW5ub0RCIGhhZCBub3QgZXhpdGVkIGF0IHNodXRkb3duIQBJbm5vREIgRGF0YWJhc2UgY3JlYXRpb24gd2FzIGFib3J0ZWQgJXN3aXRoIGVycm9yICVzLiBZb3UgbWF5IG5lZWQgdG8gZGVsZXRlIHRoZSBpYmRhdGExIGZpbGUgYmVmb3JlIHRyeWluZyB0byBzdGFydCB1cCBhZ2Fpbi4AUGx1Z2luIGluaXRpYWxpemF0aW9uIGFib3J0ZWQgJXN3aXRoIGVycm9yICVzLgBXYWl0aW5nIGZvciAlenUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZS4AUFVOQ0ggSE9MRSBzdXBwb3J0IGF2YWlsYWJsZQBQVU5DSCBIT0xFIHN1cHBvcnQgbm90IGF2YWlsYWJsZQBTaXplIG9mIElubm9EQidzIHVsaW50IGlzICV6dSBidXQgc2l6ZSBvZiB2b2lkKiBpcyAlenUuIFRoZSBzaXplcyBzaG91bGQgYmUgdGhlIHNhbWUgc28gdGhhdCBvbiBhIDY0LWJpdCBwbGF0Zm9ybXMgeW91IGNhbiBhbGxvY2F0ZSBtb3JlIHRoYW4gNCBHQiBvZiBtZW1vcnkuAERhdGFiYXNlIHVwZ3JhZGUgY2Fubm90IGJlIGFjY29tcGxpc2hlZCBpbiByZWFkLW9ubHkgbW9kZS4ARGF0YWJhc2UgdXBncmFkZSBjYW5ub3QgYmUgYWNjb21wbGlzaGVkIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5ID4gMAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBNeVNRTCB3YXMgYnVpbHQgd2l0aG91dCBhIG1lbW9yeSBiYXJyaWVyIGNhcGFiaWxpdHkgb24gdGhpcyBhcmNoaXRlY3R1cmUsIHdoaWNoIG1pZ2h0IGFsbG93IGEgbXV0ZXgvcndfbG9jayB2aW9sYXRpb24gdW5kZXIgaGlnaCB0aHJlYWQgY29uY3VycmVuY3kuIFRoaXMgbWF5IGNhdXNlIGEgaGFuZy4AQ29tcHJlc3NlZCB0YWJsZXMgdXNlIHpsaWIgJXMAJXMAU3RhcnR1cCBjYWxsZWQgc2Vjb25kIHRpbWUgZHVyaW5nIHRoZSBwcm9jZXNzIGxpZmV0aW1lLiBJbiB0aGUgTXlTUUwgRW1iZWRkZWQgU2VydmVyIExpYnJhcnkgeW91IGNhbm5vdCBjYWxsIHNlcnZlcl9pbml0KCkgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBwcm9jZXNzIGxpZmV0aW1lLgAlcwBVbmFibGUgdG8gY3JlYXRlIG1vbml0b3IgZmlsZSAlczogJXMARGlzYWJsaW5nIGJhY2tncm91bmQgaWJ1ZiBJTyByZWFkIHRocmVhZHMuAENhbm5vdCBpbml0aWFsaXplIEFJTyBzdWItc3lzdGVtAEluaXRpYWxpemluZyBidWZmZXIgcG9vbCwgdG90YWwgc2l6ZSA9ICVsZiVjLCBpbnN0YW5jZXMgPSAlbHUsIGNodW5rIHNpemUgPSVsZiVjIABDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgYnVmZmVyIHBvb2wAQ29tcGxldGVkIGluaXRpYWxpemF0aW9uIG9mIGJ1ZmZlciBwb29sAFNtYWxsIGJ1ZmZlciBwb29sIHNpemUgKCVsbHVNKSwgdGhlIGZsc3RfdmFsaWRhdGUoKSBkZWJ1ZyBmdW5jdGlvbiBjYW4gY2F1c2UgYSBkZWFkbG9jayBpZiB0aGUgYnVmZmVyIHBvb2wgZmlsbHMgdXAuAENvdWxkIG5vdCBvcGVuIG9yIGNyZWF0ZSB0aGUgc3lzdGVtIHRhYmxlc3BhY2UuIElmIHlvdSB0cmllZCB0byBhZGQgbmV3IGRhdGEgZmlsZXMgdG8gdGhlIHN5c3RlbSB0YWJsZXNwYWNlLCBhbmQgaXQgZmFpbGVkIGhlcmUsIHlvdSBzaG91bGQgbm93IGVkaXQgaW5ub2RiX2RhdGFfZmlsZV9wYXRoIGluIG15LmNuZiBiYWNrIHRvIHdoYXQgaXQgd2FzLCBhbmQgcmVtb3ZlIHRoZSBuZXcgaWJkYXRhIGZpbGVzIElubm9EQiBjcmVhdGVkIGluIHRoaXMgZmFpbGVkIGF0dGVtcHQuIElubm9EQiBvbmx5IHdyb3RlIHRob3NlIGZpbGVzIGZ1bGwgb2YgemVyb3MsIGJ1dCBkaWQgbm90IHlldCB1c2UgdGhlbSBpbiBhbnkgd2F5LiBCdXQgYmUgY2FyZWZ1bDogZG8gbm90IHJlbW92ZSBvbGQgZGF0YSBmaWxlcyB3aGljaCBjb250YWluIHlvdXIgcHJlY2lvdXMgZGF0YSEAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBmaWxlcyBiZWNhdXNlIGRhdGEgZmlsZXMgYXJlIGNvcnJ1cHQgb3IgdGhlIGRhdGFiYXNlIHdhcyBub3Qgc2h1dCBkb3duIGNsZWFubHkgYWZ0ZXIgY3JlYXRpbmcgdGhlIGRhdGEgZmlsZXMuAE9ubHkgb25lIHJlZG8gbG9nIGZpbGUgZm91bmQAVGhlIHJlZG8gbG9nIGZpbGUgJXMgc2l6ZSAlbGx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIGlubm9kYl9wYWdlX3NpemUAVGhlIHJlZG8gbG9nIGZpbGUgJXMgaXMgb2YgZGlmZmVyZW50IHNpemUgJWxsdSBieXRlcyB0aGFuIG90aGVyIGxvZyBmaWxlcyAlbGx1IGJ5dGVzIQBVc2UgLS1pbm5vZGItZGlyZWN0b3JpZXMgdG8gZmluZCB0aGUgdGFibGVzcGFjZSBmaWxlcy4gSWYgdGhhdCBmYWlscyB0aGVuIHVzZSAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT0xIHRvIGlnbm9yZSB0aGlzIGFuZCB0byBwZXJtYW5lbnRseSBsb3NlIGFsbCBjaGFuZ2VzIHRvIHRoZSBtaXNzaW5nIHRhYmxlc3BhY2UocykAVGhlIHJlZG8gbG9nIGZpbGUgbWF5IGhhdmUgYmVlbiBjb3JydXB0IGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsb2cgc2NhbiBvciBwYXJzaW5nIGRpZCBub3QgcHJvY2VlZCBmYXIgZW5vdWdoIGluIHJlY292ZXJ5LiBQbGVhc2UgcnVuIENIRUNLIFRBQkxFIG9uIHlvdXIgSW5ub0RCIHRhYmxlcyB0byBjaGVjayB0aGF0IHRoZXkgYXJlIG9rISBJdCBtYXkgYmUgc2FmZXN0IHRvIHJlY292ZXIgeW91ciBJbm5vREIgZGF0YWJhc2UgZnJvbSBhIGJhY2t1cCEAQ2Fubm90IHJlc2l6ZSByZWRvIGxvZyBmaWxlcyBpbiByZWFkLW9ubHkgbW9kZS4gUHJvdmlkZSAtLWlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSA+PSAlbGx1TUIgb3Igc3RhcnQgd2l0aG91dCAtLWlubm9kYi1yZWFkLW9ubHkuAENhbm5vdCBvcGVuIEREIHRhYmxlc3BhY2UuAFN0YXJ0aW5nIHRvIGRlbGV0ZSBhbmQgcmV3cml0ZSByZWRvIGxvZyBmaWxlcy4AVW5kbyBmcm9tIDUuNyBmb3VuZC4gSXQgd2lsbCBiZSBwdXJnZWQAJXMAJXMAVGFibGVzcGFjZSBzaXplIHN0b3JlZCBpbiBoZWFkZXIgaXMgJWx1IHBhZ2VzLCBidXQgdGhlIHN1bSBvZiBkYXRhIGZpbGUgc2l6ZXMgaXMgJWx1IHBhZ2VzAENhbm5vdCBzdGFydCBJbm5vREIuIFRoZSB0YWlsIG9mIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBpcyBtaXNzaW5nLiBIYXZlIHlvdSBlZGl0ZWQgaW5ub2RiX2RhdGFfZmlsZV9wYXRoIGluIG15LmNuZiBpbiBhbiBpbmFwcHJvcHJpYXRlIHdheSwgcmVtb3ZpbmcgaWJkYXRhIGZpbGVzIGZyb20gdGhlcmU/IFlvdSBjYW4gc2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeT0xIGluIG15LmNuZiB0byBmb3JjZSBhIHN0YXJ0dXAgaWYgeW91IGFyZSB0cnlpbmcgdG8gcmVjb3ZlciBhIGJhZGx5IGNvcnJ1cHQgZGF0YWJhc2UuAFRhYmxlc3BhY2Ugc2l6ZSBzdG9yZWQgaW4gaGVhZGVyIGlzICVsdSBwYWdlcywgYnV0IHRoZSBzdW0gb2YgZGF0YSBmaWxlIHNpemVzIGlzIG9ubHkgJWx1IHBhZ2VzAENhbm5vdCBzdGFydCBJbm5vREIuIFRoZSB0YWlsIG9mIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBpcyBtaXNzaW5nLiBIYXZlIHlvdSBlZGl0ZWQgaW5ub2RiX2RhdGFfZmlsZV9wYXRoIGluIG15LmNuZiBpbiBhbiBJbm5vREI6IGluYXBwcm9wcmlhdGUgd2F5LCByZW1vdmluZyBpYmRhdGEgZmlsZXMgZnJvbSB0aGVyZT8gWW91IGNhbiBzZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTEgaW4gbXkuY25mIHRvIGZvcmNlIElubm9EQjogYSBzdGFydHVwIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIHJlY292ZXIgYSBiYWRseSBjb3JydXB0IGRhdGFiYXNlLgAlcyBzdGFydGVkOyBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUAV2FpdGluZyBmb3IgcHVyZ2UgdG8gY29tcGxldGUAV2FpdGluZyBmb3IgZGljdF9zdGF0c190aHJlYWQgdG8gZXhpdABRdWVyeSBjb3VudGVyIHNob3dzICVsbGQgcXVlcmllcyBzdGlsbCBpbnNpZGUgSW5ub0RCIGF0IHNodXRkb3duAFNodXRkb3duIGNvbXBsZXRlZDsgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uACVzACVzACVzACVzACVzACVzACVzACVzACVzAFVuYWJsZSB0byByZWFkIHRoZSBleGlzdGluZyB1bmRvIHRydW5jYXRlIGxvZyBmaWxlICclcycuIFRoZSBlcnJvciBpcyAlcwBVbmRvIHRhYmxlc3BhY2UgJXMgaXMgbWFya2VkIGZvciB0cnVuY2F0ZQAlcwBUcnVuY2F0aW5nIFVORE8gdGFibGVzcGFjZSAlcwAlcwBDYW5ub3QgY3JlYXRlIHRydW5jYXRlIGxvZyBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuACVzAEZhaWxlZCB0byB0cnVuY2F0ZSB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMAQ29tcGxldGVkIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcy4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVHJ5aW5nIHRvIGFjY2VzcyB1cGRhdGUgdW5kbyByZWMgZmllbGQgJWxsdSBpbiBpbmRleCAlcyBvZiB0YWJsZSAlcyBidXQgaW5kZXggaGFzIG9ubHkgJWxsdSBmaWVsZHMuICVzLiBSdW4gYWxzbyBDSEVDSyBUQUJMRSAlcy4gbl9maWVsZHMgPSAlbGx1LCBpID0gJWxsdSwgcHRyID0gJXAuACVzACVzACVzACVzACVzAFJvbGxiYWNrIG9mIG5vbi1wcmVwYXJlZCB0cmFuc2FjdGlvbnMgY29tcGxldGVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoSUQgJWxsdSwgVGhyZWFkIElEICVzKSBraWxsZWQgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1IC0gJXMpIGJ5IHJvbGxpbmcgaXQgYmFjay4AJXMAZ2V0dGltZW9mZGF5KCkgZmFpbGVkOiAlcwBDYW4ndCBjcmVhdGUgVU5ETyB0YWJsZXNwYWNlICVzICVzACVzAFJlc2l6aW5nIHJlZG8gbG9nIGZyb20gJWxsdU0gdG8gJWxsdU0gKExTTj0lbGx1KSBzeW5jaHJvbm91c2x5LiBJZiB0aGlzIHRha2VzIHRvbyBsb25nLCBjb25zaWRlciBzdGFydGluZyB0aGUgc2VydmVyIHdpdGggbGFyZ2UgLS1pbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGFuZCByZXNpemluZyB0aGUgcmVkbyBsb2cgb25saW5lIHVzaW5nIFNFVC4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAT3V0IG9mIHNwYWNlIGluIHRoZSByZWRvIGxvZy4gQ2hlY2twb2ludCBMU046ICVsbHUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwBMb2cgd3JpdGVyIHdhaXRlZCB0b28gbG9uZyBmb3IgcmVkby1hcmNoaXZlciB0byBhZHZhbmNlICgxIHNlY29uZCkuIFRoZXJlIGFyZSB1bmFyY2hpdmVkOiAlbGx1IGJ5dGVzLiBBcmNoaXZlciBMU046ICVsbHUuIEFib3J0ZWQgdGhlIHJlZG8tYXJjaGl2ZXIuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBMb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yIHJlZG8tYXJjaGl2ZXIgdG8gY2F0Y2ggdXAgdW5hcmNoaXZlZDogJWxsdSBieXRlcy4gQXJjaGl2ZXIgTFNOOiAlbGx1LiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AJXMAJXMAJXMAJXMAQ2FuJ3Qgc2V0IHJlZG8gbG9nIGZpbGVzIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHkgbW9kZS4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIGZpbGVzIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nAFN0YXJ0aW5nIHNodXRkb3duLi4uAFdhaXRpbmcgZm9yICVzIHRvIGV4aXQuAFdhaXRpbmcgZm9yIHJvbGxiYWNrIG9mICV6dSByZWNvdmVyZWQgdHJhbnNhY3Rpb25zLCBiZWZvcmUgc2h1dGRvd24uAFdhaXRpbmcgZm9yIG1hc3RlciB0aHJlYWQgdG8gYmUgc3VzcGVuZGVkLgBXYWl0aW5nIGZvciBwYWdlX2NsZWFuZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sLgBTaHV0ZG93biBpcyB3YWl0aW5nIGZvciAlenUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZS4ATXlTUUwgaGFzIHJlcXVlc3RlZCBhIHZlcnkgZmFzdCBzaHV0ZG93biB3aXRob3V0IGZsdXNoaW5nIHRoZSBJbm5vREIgYnVmZmVyIHBvb2wgdG8gZGF0YSBmaWxlcy4gQXQgdGhlIG5leHQgbXlzcWxkIHN0YXJ0dXAgSW5ub0RCIHdpbGwgZG8gYSBjcmFzaCByZWNvdmVyeSEAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMASW52YWxpZCByZWRvIGxvZyBoZWFkZXIgY2hlY2tzdW0uAFVuc3VwcG9ydGVkIHJlZG8gbG9nIGZvcm1hdCAodiVsdSkuIFRoZSByZWRvIGxvZyB3YXMgY3JlYXRlZCBiZWZvcmUgTXlTUUwgNS43LjkAJXMAQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gVGhlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eT0lbGx1TSBpcyB0b28gc21hbGwgZm9yIHRoZSBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5PSVsdS4gVGhlIGNhcGFjaXR5IG9mIHJlZG8gc2hvdWxkIGJlID49ICVsbHVNLiBUbyBnZXQgbXlzcWxkIHJ1bm5pbmcsIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IHRvIGEgc21hbGxlciB2YWx1ZSBvciBpbmNyZWFzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuICVzACVzACVzAFVzZXIgaGFzIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IHRvICVsdS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgU1FMIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgU1FMIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBJTyB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIElPIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogVXBkYXRlcyB0byBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgY2FuIG9ubHkgYmUgZG9uZSBpbiBlaXRoZXIgYXV0b2NvbW1pdHRlZCBzdGF0ZW1lbnRzIG9yIHNpbmdsZS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLCBhbmQgbmV2ZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50IGFzIHVwZGF0ZXMgdG8gdHJhbnNhY3Rpb25hbCB0YWJsZXMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIG91dHNpZGUgdHJhbnNhY3Rpb25hbCBjb250ZXh0LiAgVGhlc2Ugc3RhdGVtZW50cyBhcmUgYWxzbyBub3QgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIHRyaWdnZXIgYmVjYXVzZSBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgbXVsdGktc3RhdGVtZW50IHRyYW5zYWN0aW9ucy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIGluIGZ1bGwgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGxvZ19iaW5fdXNlX3YxX3Jvd19ldmVudHM9MSB3aWxsIGJlIGlnbm9yZWQgYW5kIHJvdyBldmVudHMgd2lsbCBiZSB3cml0dGVuIGluIG5ldyBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlIGFmdGVyLWltYWdlLiBGdWxsIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGJlZm9yZS1pbWFnZSwgc28gdGhlIHNhdmluZyBpbiBkaXNrIHNwYWNlIGR1ZSB0byBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnMgaXMgbGltaXRlZCB0byBsZXNzIHRoYW4gNTAlJS4AQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpLgAlczogTm9ybWFsIHNodXRkb3duLgBDYW4gbm90IHBlcmZvcm0ga2V5cmluZyBtaWdyYXRpb24gOiAlcy4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIG9wdGlvbiB2YWx1ZSAnJXUnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXUnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLiBJZiB0aGVyZSBpcyBleGlzdGluZyBkYXRhIG9uIG1lbWJlciwgaXQgbWF5IGJlIGluY29tcGF0aWJsZSB3aXRoIGdyb3VwIGlmIGl0IHdhcyBjcmVhdGVkIHdpdGggYSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHZhbHVlIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cC4AQW4gb3V0LW9mLW1lbW9yeSBlcnJvciBvY2N1cnJlZCB3aGlsZSBzYXZpbmcgdGhlIHNldCBvZiBHVElEcyBmcm9tIHRoZSBsYXN0IGJpbmFyeSBsb2cgaW50byB0aGUgbXlzcWwuZ3RpZF9leGVjdXRlZCB0YWJsZQBUaGUgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBzZXR0aW5nIGZvciB0aGUgZGF0YSBkaWN0aW9uYXJ5IHdhcyBub3QgZm91bmQuIFN0YXJ0aW5nIHRoZSBzZXJ2ZXIgdXNpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9ICcldScuAEEgY2FwdHVyZSBncm91cCBoYXMgYW4gaW52YWxpZCBuYW1lLgBWYXJpYWJsZSAnJS0uNjRzJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJwBTdG9wcGluZyBzZXJ2aWNlcyBmYWlsZWQgd2l0aCBlcnJvciAiJXMiAFF1ZXJ5IGNhdXNlZCBkaWZmZXJlbnQgZXJyb3JzIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gRXJyb3Igb24gc291cmNlOiBtZXNzYWdlIChmb3JtYXQpPSclcycgZXJyb3IgY29kZT0lZDsgRXJyb3Igb24gcmVwbGljYTphY3R1YWwgbWVzc2FnZT0nJXMnLCBlcnJvciBjb2RlPSVkLiBEZWZhdWx0IGRhdGFiYXNlOiclcycuIFF1ZXJ5OiclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAEZhaWxlZCB0byBjcmVhdGUgJXMARmF0YWwgZXJyb3I6ICVzAFVuZXhwZWN0ZWQgc291cmNlJ3MgaGVhcnRiZWF0IGRhdGE6ICVzAFRoZSBpbmNpZGVudCAlcyBvY2N1cnJlZCBvbiB0aGUgc291cmNlLiBNZXNzYWdlOiAlcwBTb3VyY2UgY29tbWFuZCAlcyBmYWlsZWQ6ICVzAFJlbGF5IGxvZyByZWFkIGZhaWx1cmU6ICVzAFJlbGF5IGxvZyB3cml0ZSBmYWlsdXJlOiAlcwBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBhcHBsaWVyIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AEdvdCBhIHBhY2tldCBiaWdnZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBBY2Nlc3MgdG8gJS42NHMgJyUuNjRzLiUuNjRzJyBpcyByZWplY3RlZC4AVW5rbm93biBlcnJvcgBVbmtub3duIHN5c3RlbSB2YXJpYWJsZSAnJS0uNjRzJwBBIG1lc3NhZ2UgaW50ZW5kZWQgZm9yIGEgY2xpZW50IGNhbm5vdCBiZSBzZW50IHRoZXJlIGFzIG5vIGNsaWVudC1zZXNzaW9uIGlzIGF0dGFjaGVkLiBUaGVyZWZvcmUsIHdlJ3JlIHNlbmRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBlcnJvci1sb2cgaW5zdGVhZDogTVktJTA2ZCAtICVzAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzOyBkaWFnbm9zdGljcyBhcmVhOiBNWS0lMDZkIC0gJS0uNjRzKQBPdXQgb2Ygc29ydCBtZW1vcnksIGNvbnNpZGVyIGluY3JlYXNpbmcgc2VydmVyIHNvcnQgYnVmZmVyIHNpemUhAFRoZSB0YWJsZSAnJS0uMTkycycgaXMgZnVsbCEAQ3JlYXRlIHRhYmxlL3RhYmxlc3BhY2UgJyUtLjE5MnMnIGZhaWxlZCwgYXMgZGlzayBpcyBmdWxsLgBIYW5kbGVyIHJlcG9ydGVkIGVycm9yICVkIC0gJXMASW5jb3JyZWN0IGluZm9ybWF0aW9uIGluIGZpbGU6ICclLS4yMDBzJwBDYW4ndCBvcGVuIGZpbGU6ICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpAENhbid0IGZpbmQgZmlsZTogJyUtLjIwMHMnIChPUyBlcnJubzogJWQgLSAlcykAJyUtLjE5MnMnIGlzIGxvY2tlZCBhZ2FpbnN0IGNoYW5nZSAoT1MgZXJybm86ICVkIC0gJXMpAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQhAEVycm9yIGluIGRpYWdub3N0aWNzIGFyZWE6IE1ZLSUwNmQgLSAlcwBJbmNvcnJlY3QgZGVmaW5pdGlvbiBvZiB0YWJsZSAlcy4lczogZXhwZWN0ZWQgY29sdW1uICclcycgYXQgcG9zaXRpb24gJWQsIGZvdW5kICclcycuAFRoZSBjb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZC4AAFJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBDYW4ndCBleGVjdXRlIGluaXRfcmVwbGljYSBxdWVyeSwgTVktJTA2ZCAtICclcycAQ29sdW1uICVkIG9mIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZnJvbSB0eXBlICclLS4zMnMnIHRvIHR5cGUgJyUtLjMycycAUmVwbGljYSBTUUwgdGhyZWFkIGlnbm9yZWQgdGhlIHF1ZXJ5IGJlY2F1c2Ugb2YgcmVwbGljYXRlLSotdGFibGUgcnVsZXMAQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBBVVRPX1BPU0lUSU9OID0gMSwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04sIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIEdUSUQtdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYsIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBTaW11bGF0ZWQgZXJyb3IAJXMAQXVkaXQgTG9nIGZpbHRlcmluZyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkLgBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcy4ARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZS4ARmlsdGVyIG5hbWUgY2Fubm90IGJlIGVtcHR5LgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgdXNlciBuYW1lLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclcydAJyVzJy4gU1VQRVIgb3IgQVVESVRfQURNSU4gbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uAE5vIGtleXJpbmcgaW5zdGFsbGVkLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBoYXMgbm90IGJlZW4gc2V0OyBpdCB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiBVc2UgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfZ2V0IHRvIG9idGFpbiB0aGUgcGFzc3dvcmQgb3IgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfc2V0IHRvIHNldCBhIG5ldyBvbmUuAENvdWxkIG5vdCBjcmVhdGUgQUVTIGtleS4gT3BlblNTTCdzIEVWUF9CeXRlc1RvS2V5IGZ1bmN0aW9uIGZhaWxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgY2Fubm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5cmluZy4gUGFzc3dvcmQgdXNlZCBzbyBmYXIgaXMgdXNlZCBmb3IgZW5jcnlwdGlvbi4AQ291bGQgbm90IHJlaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsdGVycy4AVXNlciBjYW5ub3QgYmUgZW1wdHkuAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdXNlciBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljLgBTcGVjaWZpZWQgZmlsdGVyIGhhcyBub3QgYmVlbiBmb3VuZC4AQ2Fubm90IHVwZ3JhZGUgc2VydmVyIGVhcmxpZXIgdGhhbiA1LjcgdG8gOC4wACVzIChteXNxbGQgJXMpIGluaXRpYWxpemluZyBvZiBzZXJ2ZXIgaW4gcHJvZ3Jlc3MgYXMgcHJvY2VzcyAlbHUAJXMgKG15c3FsZCAlcykgaW5pdGlhbGl6aW5nIG9mIHNlcnZlciBoYXMgY29tcGxldGVkAENhbm5vdCBib290IHNlcnZlciB2ZXJzaW9uICVsdSBvbiBkYXRhIGRpcmVjdG9yeSBidWlsdCBieSB2ZXJzaW9uICVsbHUuIERvd25ncmFkZSBpcyBub3Qgc3VwcG9ydGVkAFJlY2VpdmVkIFNIVVRET1dOIGZyb20gdXNlciAlcy4gU2h1dHRpbmcgZG93biBteXNxbGQgKFZlcnNpb246ICVzKS4AVGhlIHBsdWdpbiBlbmNvdW50ZXJlZCBhIGNyaXRpY2FsIGVycm9yIGFuZCB3aWxsIGFib3J0OiAlcwBJbnZhbGlkIG1hdGNoIG1vZGUgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBDYW5ub3QgdXBkYXRlIEdUSURfUFVSR0VEIHdpdGggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBydW5uaW5nACclcy4lcycgdGFibGUgZGVmaW5pdGlvbiBoYXMgbm90IGJlZW4gdXBncmFkZWQ7IFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARXhlY3V0aW9uIG9mIHNlcnZlci1zaWRlIFNRTCBzdGF0ZW1lbnQgJyVzJyBmYWlsZWQgd2l0aCBlcnJvciBjb2RlID0gJWQsIGVycm9yIG1lc3NhZ2UgPSAnJXMnLgBObyBwYXRocyBhbGxvd2VkIGZvciBzaGFyZWQgbGlicmFyeS4ARnVuY3Rpb24gJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzLgBHb3QgRXJyb3I6ICVsZCBmcm9tIFNldEV2ZW50LgBFcnJvciBhbGxvY2F0aW5nIFNTTCBCSU8uACVzAE9uZSBvciBzZXZlcmFsIGxvY2F0aW9ucyB3ZXJlIGluYWNjZXNzaWJsZSB3aGlsZSBjaGVja2luZyBQSUQgZmlsZXBhdGguAEN1cnJlbnRseSB1bmtub3duIHZhcmlhYmxlICclcycgd2FzIHJlYWQgZnJvbSB0aGUgcGVyc2lzdGVkIGNvbmZpZyBmaWxlLgBGYXRhbCBlcnJvciBpbiBkZWZhdWx0cyBoYW5kbGluZy4gUHJvZ3JhbSBhYm9ydGVkIQBEdXBsaWNhdGUgdmFyaWFibGUgbmFtZSAnJXMnLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBzeXN0ZW0gdmFyaWFibGVzLgBWYXJpYWJsZSBuYW1lICclcycgbm90IGZvdW5kLgBTb21lICglZCkgdGhyZWFkcyBhcmUgc3RpbGwgYWN0aXZlACVzAFNvdXJjZSB0YWJsZXNwYWNlIGlzIGVuY3J5cHRlZCBidXQgdGFyZ2V0IHRhYmxlc3BhY2UgaXMgbm90LgBXYWl0aW5nIGZvciB0YWJsZXNwYWNlX2FsdGVyX2VuY3J5cHRfdGhyZWFkIHRvIGV4aXQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXM6IENvdWxkIG5vdCBhZGQgc3VwcHJlc3Npb24gcnVsZSBmb3IgY29kZSAiJXMiLiBSdWxlLXNldCBtYXkgYmUgZnVsbCwgb3IgY29kZSBtYXkgbm90IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3ItbG9nIG1lc3NhZ2UuAEludmFsaWQgdmFsdWUgZm9yIGNvbW1hbmQgbGluZSBvcHRpb24gYmluZC1hZGRyZXNzZXM6ICclcycASWdub3JpbmcgdGhlIEBAZ2xvYmFsLnJlbGF5X2xvZ19zcGFjZV9saW1pdCBvcHRpb24gYmVjYXVzZSBAQGdsb2JhbC5yZWxheV9sb2dfcHVyZ2UgaXMgZGlzYWJsZWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBHVElEIGV4ZWN1dGlvbiBpbmZvcm1hdGlvbjogJXMATWVzc2FnZSByZWNlaXZlZCB3aXRob3V0IGEgcHJvcGVyIGdyb3VwIGNvb3JkaW5hdG9yIG1vZHVsZS4AQSBtZW1iZXIgY2Fubm90IGpvaW4gdGhlIGdyb3VwIHdoaWxlIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpcyBydW5uaW5nIGluaXRpYXRlZCBieSAnJXMnLgBBIG1lbWJlciBpcyBqb2luaW5nIHRoZSBncm91cCB3aGlsZSBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaXMgcnVubmluZyBpbml0aWF0ZWQgYnkgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAENhbid0IHN0YXJ0ICVzIGZvciBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpbml0aWF0ZWQgYnkgJyVzJy4AQSBwcmltYXJ5IGVsZWN0aW9uIHdhcyBpbnZva2VkIGJ1dCB0aGUgcmVxdWVzdGVkIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBpbiB0aGUgZ3JvdXAuIFJlcXVlc3QgaWdub3JlZC4ARXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlLiBDb250ZXh0OiAlcwBFcnJvciB3aGlsZSBleGVjdXRpbmcgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbjogJXMAQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyB0ZXJtaW5hdGVkLiAlcwBTdGFydGluZyBncm91cCBvcGVyYXRpb24gbG9jYWwgZXhlY3V0aW9uOiAlcwBUZXJtaW5hdGlvbiBvZiBncm91cCBvcGVyYXRpb24gbG9jYWwgZXhlY3V0aW9uOiAlcwBBIGNvbmZpZ3VyYXRpb24gY2hhbmdlIHdhcyBraWxsZWQgaW4gdGhpcyBtZW1iZXIuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwIGFzIGl0cyBjb25maWd1cmF0aW9uIG1heSBoYXZlIGRpdmVyZ2VkLgBUaGVyZSB3YXMgYW4gaXNzdWUgb24gdGhlIHByaW1hcnkgZWxlY3Rpb24gcHJvY2VzczogJXMgVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHN0b3BwaW5nIGEgcHJldmlvdXMgZWxlY3Rpb24gcHJvY2VzczogJXMASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBpbml0aWFsaXplIHN0YWdlIGxvZ2dpbmcgZm9yIHRoaXMgdGFzay4gVGhlIG9wZXJhdGlvbiB3aWxsIHN0aWxsIHJ1biB3aXRob3V0IHN0YWdlIHRyYWNraW5nLgBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbjogJXMuIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQsIGlmIHNvLCB0cnkgdG8gcmVtb3ZlIGl0AENvdWxkIG5vdCB1bmluc3RhbGwgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9ucy4gVHJ5IHRvIHJlbW92ZSB0aGVtIG1hbnVhbGx5IGlmIHByZXNlbnQuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9ucy4gQ2hlY2sgZm9yIG90aGVyIGVycm9ycyBpbiB0aGUgbG9nIGFuZCB0cnkgdG8gcmVpbnN0YWxsIHRoZSBwbHVnaW4AVGhlIGZ1bmN0aW9uICclcycgZmFpbGVkLiAlcwBEbyBub3Qgc3BlY2lmeSB0aGUgY3VycmVudCBwYXNzd29yZCB3aGlsZSBjaGFuZ2luZyBpdCBmb3Igb3RoZXIgdXNlcnMuAEluY29ycmVjdCBjdXJyZW50IHBhc3N3b3JkLiBTcGVjaWZ5IHRoZSBjb3JyZWN0IHBhc3N3b3JkIHdoaWNoIGhhcyB0byBiZSByZXBsYWNlZC4AQ3VycmVudCBwYXNzd29yZCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIFJFUExBQ0UgY2xhdXNlIGluIG9yZGVyIHRvIGNoYW5nZSBpdC4AVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycAJXMgd2FzIHVuYWJsZSB0byBjcmVhdGUgYSBuZXcgV2luZG93cyByZWdpc3RyeSBrZXkgJXMgZm9yICVzOyBjb250aW51aW5nIHRvIHVzZSB0aGUgcHJldmlvdXMgaWRlbnQuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb3IgaW5zaWRlIGEgcHJvY2VkdXJlIGluIGEgdHJhbnNhY3Rpb25hbCBjb250ZXh0IHdoZW4gQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULgBTZWNvbmRhcnkgZW5naW5lIG9wZXJhdGlvbiBmYWlsZWQuICVzLgBERExzIG9uIGEgdGFibGUgd2l0aCBhIHNlY29uZGFyeSBlbmdpbmUgZGVmaW5lZCBhcmUgbm90IGFsbG93ZWQuAFVuYWJsZSB0byBhbGxvY2F0ZSB0ZW1wb3JhcnkgdGFibGVzcGFjZSBmb3IgdGhpcyBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggc2VjdXJpdHkgY29udGV4dCB0byB1c2VyOiAlcwBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4gLi4gd2l0aCBleHByZXNzaW9uIGFzIERFRkFVTFQuAEVycm9yIGluIHBhcnNpbmcgJXMgJyVzJy4nJXMnIGR1cmluZyB1cGdyYWRlLiAlcwBUaGUgZGVzaWduYXRlZCBkYXRhIGRpcmVjdG9yeSAlcyBpcyB1bnVzYWJsZS4gWW91IGNhbiByZW1vdmUgYWxsIGZpbGVzIHRoYXQgdGhlIHNlcnZlciBhZGRlZCB0byBpdC4AR3JvdXAgc2VhcmNoIHJlYmluZGluZyB2aWEgcm9vdCBETjogJXMgAEVycm9yIGluc3RhbGxpbmcgcGx1Z2luICclcyc6ICVzAEVycm9yIHVuaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMAUGFydGl0aW9uZWQgdGFibGUgJyVzJyBpcyBub3QgYWxsb3dlZCB0byB1c2Ugc2hhcmVkIHRhYmxlc3BhY2UgJyVzJy4gUGxlYXNlIG1vdmUgYWxsIHBhcnRpdGlvbnMgdG8gZmlsZS1wZXItdGFibGUgdGFibGVzcGFjZXMgYmVmb3JlIHVwZ3JhZGUuAENhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHRhYmxlc3BhY2UgbmFtZWQgJyVzJy4AJXM6ICd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIGJ1dCB3aWxsIGJlIGFuIGFsaWFzIGZvciBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgAlczogVGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW5zdGVhZC4AJXM6ICclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgVVRGOE1CMy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4AVGhlIFNTTCBsaWJyYXJ5IGZ1bmN0aW9uICVzIGZhaWxlZC4gVGhpcyBpcyB0eXBpY2FsbHkgY2F1c2VkIGJ5IHRoZSBTU0wgbGlicmFyeSBhbHJlYWR5IGJlaW5nIHVzZWQuIEFzIGEgcmVzdWx0IHRoZSBTU0wgbWVtb3J5IGFsbG9jYXRpb24gd2lsbCBub3QgYmUgaW5zdHJ1bWVudGVkLgBEaXNhYmxpbmcgQEBjb3JlX2ZpbGUgYmVjYXVzZSBAQGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgaXMgZGlzYWJsZWQsIHlldCBNQURWX0RPTlREVU1QIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQBEaXNhYmxpbmcgQEBjb3JlX2ZpbGUgYmVjYXVzZSBAQGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgaXMgZGlzYWJsZWQsIHlldCBtYWR2aXNlKCVwLCV6dSwlcykgZmFpbGVkIHdpdGggJXMAQ291bGQgbm90IGNoYW5nZSBjb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnLiBUaGUgcmVzdWx0aW5nIHNpemUgb2YgaW5kZXggJyVzJyB3b3VsZCBleGNlZWQgdGhlIG1heCBrZXkgbGVuZ3RoIG9mICVkIGJ5dGVzLgBzcWxfbW9kZT0weCUwOHggaGFzIGJlZW4gcmVtb3ZlZCBhbmQgd2lsbCBiZSBpZ25vcmVkAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgcG9vbCBvZiBzaXplICV6dSBieXRlcy4gV2lsbCB3YWl0IGZvciAlenUgc2Vjb25kcyBmb3IgYSB0aHJlYWQgdG8gZnJlZSBhIHJlc291cmNlLgBOdW1iZXIgb2YgcG9vbHM6ICV6dQBVc2luZyB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMgVW5hYmxlIHRvIHNhdmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGFibGVzcGFjZSAnJXMnIHRvIHRoZSBkYXRhIGRpY3Rpb25hcnkAQ2Fubm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2UgJXMgYXQgJXMgYmVjYXVzZSAlZCB1bmRvIHRhYmxlc3BhY2VzIGFscmVhZHkgZXhpc3QuAEVycm9yICVkIG9wZW5pbmcgbmV3bHkgY3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJXMuAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfQlVGX0VSUk9SAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfTUVNX0VSUk9SAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfU1RSRUFNX0VSUk9SACVzAEV4cGVjdGVkIHRvIGZpbmQgdW5kbyB0YWJsZXNwYWNlICclcycgZm9yIFNwYWNlIElEPSVsdSwgYnV0IGZvdW5kICclcycgaW5zdGVhZCEgIERpZCB5b3UgY2hhbmdlIGlubm9kYl91bmRvX2RpcmVjdG9yeT8AQ2Fubm90IHVzZSAlcyBhcyBhbiB1bmRvIHRhYmxlc3BhY2UgYmVjYXVzZSBpdCBkb2VzIG5vdCBlbmQgd2l0aCAnLmlidScuAGliX3VuZG9fdHJ1bmNfZW1wdHlfZmlsZQBpYl91bmRvX3RydW5jX2JlZm9yZV9kZF91cGRhdGUAaWJfdW5kb190cnVuY19iZWZvcmVfZG9uZV9sb2dnaW5nAGliX3VuZG9fdHJ1bmNfYmVmb3JlX3JzZWdzACVzIEZhaWxlZCB0byBmaW5pc2ggdHJ1bmNhdGluZyBVbmRvIFRhYmxlc3BhY2UgJyVzJwBUaGUgc2V0dGluZyBJTk5PREJfVU5ET19UQUJMRVNQQUNFUyBpcyBkZXByZWNhdGVkIGFuZCBpcyBubyBsb25nZXIgdXNlZC4gIElubm9EQiBhbHdheXMgY3JlYXRlcyAyIHVuZG8gdGFibGVzcGFjZXMgdG8gc3RhcnQgd2l0aC4gSWYgeW91IG5lZWQgbW9yZSwgcGxlYXNlIHVzZSBDUkVBVEUgVU5ETyBUQUJMRVNQQUNFLgBUaGUgZGlyZWN0b3J5IGZvciB0YWJsZXNwYWNlICVzIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluY29ycmVjdC4AJXMAQ2xvbmUgZG9ub3IgcmVwb3J0ZWQgOiAlLjUxMnMuAENsb25lIHJlY2VpdmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBkb25vciA6ICUuNTEycy4AQ2xpZW50OiAlLjUxMnMuAFNlcnZlcjogJS41MTJzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcyBzZXJ2aWNlLgBGYWlsZWQgdG8gYWRkIHRocmVhZCBwb29sIHBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZXMuAEZhaWxlZCB0byBzZXQgZGF0YWRpciB0byAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQBUaGUgaW5ub2RiX3VuZG9fZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFuIGFuY2VzdG9yIG9mIHRoZSBkYXRhZGlyLgBGYWlsZWQgdG8gZmV0Y2gga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBDYW4ndCBmaW5kIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAEZldGNoZWQgYW4gaW52YWxpZCBrZXkgZnJvbSBrZXlyaW5nLgBFcnJvciByZWFkaW5nIGEgcmVwbGljYXRpb24gbG9nIGVuY3J5cHRpb24gaGVhZGVyOiAlcy4ARmFpbGVkIHRvIHJvdGF0ZSBzb21lIGxvZ3MgYWZ0ZXIgY2hhbmdpbmcgYmlubG9nIGVuY3J5cHRpb24gc2V0dGluZ3MuIFBsZWFzZSBmaXggdGhlIHByb2JsZW0gYW5kIHJvdGF0ZSB0aGUgbG9ncyBtYW51YWxseS4AS2V5ICVzIGV4aXN0cyB1bmV4cGVjdGVkLgBGYWlsZWQgdG8gZ2VuZXJhdGUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBzdG9yZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHJlbW92ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4AVW5hYmxlIHRvIHJlY292ZXIgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBiaW5sb2cgZW5jcnlwdGlvbiwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcm90YXRlIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXkgYXQgc3RhcnR1cCwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBJZ25vcmluZyBiaW5sb2dfcm90YXRlX2VuY3J5cHRpb25fbWFzdGVyX2tleV9hdF9zdGFydHVwIGJlY2F1c2UgYmlubG9nX2VuY3J5cHRpb24gb3B0aW9uIGlzIGRpc2FibGVkLgBJbnZhbGlkIHZhbHVlIGZvciBjb21tYW5kIGxpbmUgb3B0aW9uIGFkbWluLWFkZHJlc3M6ICclcycAQWRtaW4gaW50ZXJmYWNlIHJlYWR5IGZvciBjb25uZWN0aW9ucywgYWRkcmVzczogJyVzJyAgcG9ydDogJWQAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgYWRtaW4gY29ubmVjdGlvbnMgKGVycm5vPSAlZCkAUkVUQUlOIENVUlJFTlQgUEFTU1dPUkQgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHBhc3N3b3Jkcy4ARElTQ0FSRCBPTEQgUEFTU1dPUkQgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHBhc3N3b3Jkcy4ARW1wdHkgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBhcyBzZWNvbmQgcGFzc3dvcmQgZm9yIHVzZXIgJyVzJ0AnJXMnLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgYXV0aGVudGljYXRpb24gcGx1Z2luIGlzIGJlaW5nIGNoYW5nZWQuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBuZXcgcGFzc3dvcmQgaXMgZW1wdHkuAENhbiBub3QgcmVhZCBhbmQgcHJvY2VzcyB2YWx1ZSBvZiBVc2VyX2F0dHJpYnV0ZXMgY29sdW1uIGZyb20gbXlzcWwudXNlciB0YWJsZSBmb3IgdXNlcjogJyVzQCVzJzsgSWdub3JpbmcgdXNlci4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4ARXJyb3Igc2VuZGluZyB0cmFuc2FjdGlvbiAnJXM6JWxsZCcgcHJlcGFyZWQgbWVzc2FnZSBmcm9tIHNlc3Npb24gJyV1Jy4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uICclczolbGxkJyBmb3IgY29tbWl0IG9uIHNlc3Npb24gJyV1JyBhZnRlciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4AVHJhbnNhY3Rpb24gJyVzOiVsbGQnIGFscmVhZHkgZXhpc3RzIG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgd2hpbGUgYmVpbmcgcmVnaXN0ZXJlZCBhZnRlciBjb25mbGljdCBkZXRlY3Rpb24uAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uICclczolbGxkJyBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIGFmdGVyIGNvbmZsaWN0IGRldGVjdGlvbi4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gJyVzOiVsbGQnIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBFcnJvciBvbiB0cmFuc2FjdGlvbiAnJXM6JWxsZCcgZnJvbSBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3IgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAFRyYW5zYWN0aW9uICclczolbGxkJyBkb2VzIG5vdCBleGlzdCBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIHdoaWxlIHJlY2VpdmluZyByZW1vdGUgdHJhbnNhY3Rpb24gcHJlcGFyZS4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uICclczolbGxkJyBmb3IgZXhlY3V0aW9uIG9uIHNlc3Npb24gJyV1JyBhZnRlciBpdHMgZGVwZW5kZW5jaWVzIGRpZCBjb21wbGV0ZSBjb21taXQuAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIGl0cyBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgY29tbWl0LgBFcnJvciBvbiBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3IgaXRzIGRlcGVuZGVuY2llcyB0byBjb21wbGV0ZSBjb21taXQuAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbi4ARXJyb3Igc2VuZGluZyBzeW5jIGJlZm9yZSBleGVjdXRpb24gbWVzc2FnZSBmcm9tIHNlc3Npb24gJyV1Jy4ARXJyb3Igb24gdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gZm9yIGV4ZWN1dGlvbiBvbiBzZXNzaW9uICcldScgYWZ0ZXIgd2FpdCBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciB3YWl0aW5nIGZvciBncm91cCBleGVjdXRlZCB0cmFuc2FjdGlvbnMgY29tbWl0IG9uIHNlc3Npb24gJyV1Jy4AVGhlcmUncyBubyB1bml0IG9mIG1lYXN1cmUgbmFtZWQgJyVzJy4AVGhlIGZ1bmN0aW9uICVzIHVzZXMgJXMgYXMgYSB1bml0LCBidXQgd2FzIHBhc3NlZCBnZW9tZXRyeSB3aXRob3V0IHVuaXRzICgiU1JJRCAwIikuIENvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLgBDb3VsZCBub3QgcGFyc2Uga2V5LXZhbHVlIHBhaXJzIGluIHByb3BlcnR5IHN0cmluZyAnJXMnAFByb3BlcnR5IGtleSAnJXMnIGlzIGludmFsaWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGUgZ3JvdXBfcmVwbGljYXRpb25fYXBwbGllciBjaGFubmVsIHJlY2VpdmVkIHRyYW5zYWN0aW9ucyBzZXQuIFVuYWJsZSB0byBlbnN1cmUgdGhlIGV4ZWN1dGlvbiBvZiBncm91cCB0cmFuc2FjdGlvbnMgcmVjZWl2ZWQgZHVyaW5nIHJlY292ZXJ5LgBGYWlsZWQgdG8gZW5jcnlwdCBjb250ZW50IHRvIHdyaXRlIGludG8gYmlubG9nIGZpbGU6ICVzLgBDYW5ub3QgZ2V0IHRoZSBzZXJ2ZXIgdmVyc2lvbiBudW1iZXIgZnJvbSB0aGUgZGljdGlvbmFyeSB0YWJsZXNwYWNlIGhlYWRlci4AQ2Fubm90IHNldCB0aGUgc2VydmVyIHZlcnNpb24gbnVtYmVyIGluIHRoZSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgaGVhZGVyLgBVcGdyYWRpbmcgdGhlIHNlcnZlciBmcm9tIHNlcnZlciB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4ATXlTUUwgc2VydmVyIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBUaGUgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBjb3VsZCBub3QgYmUgc2V0IGluIHRoaXMgc2VydmVyOiAnJXMnAEEgcmVxdWVzdCB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwIHdhcyBpc3N1ZWQgd2hlbiB0aGUgbWVtYmVyIGlzIGxlYXZpbmcgdGhlIGdyb3VwLgBUcmlnZ2VyICVzLiVzIGZvciB0YWJsZSAlcy4lcyBpcyBsaXN0ZWQgaW4gd3Jvbmcgb3JkZXIuIFBsZWFzZSBkcm9wIGFuZCByZWNyZWF0ZSBhbGwgdHJpZ2dlcnMgZm9yIHRoZSB0YWJsZS4AJXMAU3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JvdXAgc2VhcmNoLCB7R0F9IG5vdCBmb3VuZABVc2VyIGdyb3VwIHJldHJpZXZhbDogVXNlciBvYmplY3QgaGFzIGdyb3VwIGluZm9ybWF0aW9uAEdyb3VwIGluZm9ybWF0aW9uIGZvdW5kIGluIG11bHRpcGxlIHVzZXIgb2JqZWN0cy4gU2VhcmNoIGZpbHRlciBjb25maWd1cmF0aW9uIGlzIGluY29ycmVjdC4AVXNlciBncm91cCByZXRyaWV2YWw6IG5vIGdyb3VwIGF0dHJpYnV0ZSBmb3VuZC4gSW5jb3JyZWN0IGdyb3VwIHNlYXJjaCBhdHRyaWJ1dGUuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogR3JvdXAgYXR0cmlidXRlIHZhbHVlcyBpcyBOVUxMLiAAVXNlciBncm91cCByZXRyaWV2YWw6IHBhcnNpbmcgRE4gZmFpbGVkLiAAVXNlciBncm91cCByZXRyaWV2YWw6IEdyb3VwIG9iamVjdCBoYXMgdXNlciBpbmZvcm1hdGlvbgBSZXNlcnZlZCBwb3J0IGZvciBsZGFwcyB1c2luZyBsZGFwcwBHZXQgdXNlciBwcm94eQBHZXQgdXNlciBwcm94eTogVXNlciBkb2Vzbid0IGJlbG9uZ3MgdG8gYW55IGdyb3VwLCB1c2VyIG5hbWUgd2lsbCBiZSB0cmVhdGVkIGFzIGF1dGhlbnRpY2F0ZWQgdXNlci4AR2V0IHVzZXIgcHJveHk6IGNvbmZpZ3VyZWQgbWFwcGluZyBpbmZvOiAlcwBHZXQgdXNlciBwcm94eTogVXNlciBkb2Vzbid0IGhhdmUgZ3JvdXAgbWFwcGluZyBpbmZvcm1hdGlvbiwgRmlyc3QgTERBUCBncm91cCB3aWxsIGJlIHRyZWF0ZWQgYXMgYXV0aGVudGljYXRlZCB1c2VyLgBQcm9jZXNzIGdyb3VwIHByb3h5IG1hcHBpbmcAQ2hlY2sgZGVsaW1pdGVyIGFmdGVyIHF1b3RlAFByb2Nlc3NpbmcgZGVsaW1pdGVyAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBzZXBhcmF0b3IgPSBub3QgZm91bmQsIHJlc2V0dGluZyBwb3NpdGlvbgBQcm9jZXNzaW5nIGRlbGltaXRlciwgZmFpbGVkIHRvIGdldCBkYXRhIGZvciA9IHNlcGFyYXRvciB0cnkgZm9yIHNlcGFyYXRvciAsLgBQcm9jZXNzaW5nIGRlbGltaXRlciwgc2VwYXJhdG9yICwgbm90IGZvdW5kLCByZXNldHRpbmcgcG9zaXRpb24AUHJvY2Vzc2luZyBkZWxpbWl0ZXI6IE5vIG1hcHBpbmcgc2VwYXJhdG9yIGlzIGZvdW5kLCBlbmQgb2YgZ3JvdXAgaW5mb3JtYXRpb24AR2V0dGluZyBuZXh0IG1hcHBpbmcgaW5mb3JtYXRpb24AUGFyc2luZyBtYXBwaW5nLCBjdXJyZW50IHN0YXRlOiAlZCAgZGVsaW1pdGVyIGNoYXI6ICVjIABQYXJzaW5nIG1hcHBpbmcgaW5mbywgTERBUCBncm91cDogJXMgTXlTUUwgcHJveHk6ICVzAE1hcHBpbmcgcGFyc2luZyBlcnJvcgBUcmltbWluZyBsZWZ0IHNwYWNlcwBDaGVja2luZyBpZiBjdXJyZW50IGNoYXJhY3RlcnMgaXMgcXVvdGUATm90IGRlc2lyZWQgc3RhdGUgb3IgdW4tZGVmaW5lZCBzdGF0ZXMuAEludmFsaWQgdmFsdWUgZm9yIG5hbWVkX3BpcGVfZnVsbF9hY2Nlc3NfZ3JvdXAuAFJldHJ5IHRoZSBzdGF0ZW1lbnQgdXNpbmcgYSBzZWNvbmRhcnkgc3RvcmFnZSBlbmdpbmUuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZABDYW5ub3Qgc2V0IG1hbmRhdG9yeV9yb2xlczogQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBoYXMgJyVzJyBwcml2aWxlZ2UuAFVuYWJsZSB0byByZWNvdmVyIGJpbmFyeSBsb2cgbWFzdGVyIGtleSwgdGhlIGNvbWJpbmF0aW9uIG9mIG5ld19tYXN0ZXJfa2V5X3NlcW5vPSV1LCBtYXN0ZXJfa2V5X3NlcW5vPSV1IGFuZCBvbGRfbWFzdGVyX2tleV9zZXFubz0ldSBhcmUgd3JvbmcuAEZhaWxlZCB0byByZW1vdmUgYXV4aWxpYXJ5IGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSBjbGVhbnVwIG9mIHRoZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgcm90YXRpb24gcHJvY2VzcyBkaWQgbm90IGZpbmlzaCBhcyBleHBlY3RlZCBhbmQgdGhlIGNsZWFudXAgd2lsbCB0YWtlIHBsYWNlIHVwb24gc2VydmVyIHJlc3RhcnQgb3IgbmV4dCAnQUxURVIgSU5TVEFOQ0UgUk9UQVRFIEJJTkxPRyBNQVNURVIgS0VZJyBleGVjdXRpb24uAEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaXMgc2V0IGFzIG1hbmRhdG9yeV9yb2xlcy4gQ2Fubm90IGdyYW50IHRoZSAnJXMnIHByaXZpbGVnZS4AJyVzJyBwcml2aWxlZ2UgZm9yIGRhdGFiYXNlICclcycgZXhpc3RzIGJvdGggYXMgcGFydGlhbCByZXZva2UgYW5kIG15c3FsLmRiIHNpbXVsdGFuZW91c2x5LiBJdCBjb3VsZCBtZWFuICdteXNxbCcgc2NoZW1hIGlzIGNvcnJ1cHRlZC4AQWNjZXNzIGRlbmllZCBmb3IgQXV0aElkIGAlLjY0c2BAYCUuNjRzYCB0byBkYXRhYmFzZSAnJS0uMTkycycuAEF0IGxlYXN0IG9uZSBwYXJ0aWFsIHJldm9rZSBleGlzdHMgb24gYSBkYXRhYmFzZS4gVGhlIHN5c3RlbSB2YXJpYWJsZSAnQEBwYXJ0aWFsX3Jldm9rZXMnIG11c3QgYmUgc2V0IHRvIE9OLgBBdCBsZWFzdCBvbmUgcGFydGlhbCByZXZva2UgZXhpc3RzIG9uIGEgZGF0YWJhc2UuIFR1cm5pbmcgT04gdGhlIHN5c3RlbSB2YXJpYWJsZSAnQEBwYXJ0aWFsX3Jldm9rZXMnLgBGb3IgdXNlciAnJXMnQCclcycsIG9uZSBvciBtb3JlIHByaXZpbGVnZXMgZ3JhbnRlZCB0aHJvdWdoIG15c3FsLmRiIGZvciBkYXRhYmFzZSAnJXMnLCBjb25mbGljdCB3aXRoIHBhcnRpYWwgcmV2b2tlLiBJdCBjb3VsZCBtZWFuICdteXNxbCcgc2NoZW1hIGlzIGNvcnJ1cHRlZC4ARm9yIHVzZXIgJXMsIGlnbm9yZWQgcmVzdHJpY3Rpb25zIGZvciBwcml2aWxlZ2UocykgJyVzJyBmb3IgZGF0YWJhc2UgJyVzJyBhcyB0aGVzZSBhcmUgbm90IHZhbGlkIGRhdGFiYXNlIHByaXZpbGVnZXMuAEZvciB1c2VyICVzLCBpZ25vcmVkIHJlc3RyaWN0aW9ucyBmb3IgcHJpdmlsZWdlKHMpICclcycgZm9yIGRhdGFiYXNlICclcycgYXMgY29ycmVzcG9uZGluZyBnbG9iYWwgcHJpdmlsZWdlKHMpIGFyZSBub3QgZ3JhbnRlZC4AJyVzJyBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX3Byb3RvY29sX2pvaW4sIHBsZWFzZSB1c2UgYSBNeVNRTCB2ZXJzaW9uIGJldHdlZW4gNS43LjE0IGFuZCB0aGlzIHNlcnZlcidzIHZlcnNpb24AU3RhcnRlZCBhdXRvLXJlam9pbiBwcm9jZWR1cmUgYXR0ZW1wdCAlbHUgb2YgJWx1AFRpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgYSB2aWV3IGNoYW5nZSBldmVudCBkdXJpbmcgdGhlIGF1dG8tcmVqb2luIHByb2NlZHVyZQBBdXRvLXJlam9pbiBwcm9jZWR1cmUgYXR0ZW1wdCAlbHUgb2YgJWx1IGZpbmlzaGVkLiBNZW1iZXIgd2FzJXMgYWJsZSB0byBqb2luIHRoZSBncm91cC4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24gb3B0aW9uIHZhbHVlICclZCcgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclZCcuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFNlcnZlciBzaHV0dGluZyBkb3duIGJlY2F1c2UgdXBncmFkZSBpcyByZXF1aXJlZCwgeWV0IHByb2hpYml0ZWQgYnkgdGhlIGNvbW1hbmQgbGluZSBvcHRpb24gJy0tdXBncmFkZT1OT05FJy4AU2VydmVyIHVwZ3JhZGUgaXMgcmVxdWlyZWQsIGJ1dCBza2lwcGVkIGJ5IGNvbW1hbmQgbGluZSBvcHRpb24gJy0tdXBncmFkZT1NSU5JTUFMJy4AU2VydmVyIHVwZ3JhZGUgc3RhcnRlZCB3aXRoIHZlcnNpb24gJWQsIGJ1dCBzZXJ2ZXIgdXBncmFkZSBvZiB2ZXJzaW9uICVkIGlzIHN0aWxsIHBlbmRpbmcuAEZhaWxlZCB0byB1cGdyYWRlIHNlcnZlci4AU2VydmVyIHVwZ3JhZGUgZnJvbSAnJWQnIHRvICclZCcgJXMuAFRhYmxlICclcycgcmVxdWlyZXMgcmVwYWlyLgBUYWJsZSAnJXMnIHJlcGFpciAlcy4AQ291bGQgbm90IG9wZW4gc2VydmVyIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgZm9yIHdyaXRpbmcuIFBsZWFzZSBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgd3JpdGFibGUuAFVwZ3JhZGluZyB0aGUgc3lzIHNjaGVtYS4AUnVubmluZyBxdWVyaWVzIHRvIHVwZ3JhZGUgTXlTUUwgc2VydmVyLgBVcGdyYWRpbmcgc3lzdGVtIHRhYmxlIGRhdGEuAEZvdW5kIGVtcHR5IHN5cyBkYXRhYmFzZS4gSW5zdGFsbGluZyB0aGUgc3lzIHNjaGVtYS4AQSBzeXMgc2NoZW1hIGV4aXN0cyB3aXRoIG5vIHN5cy52ZXJzaW9uIHZpZXcuIElmIHlvdSBoYXZlIGEgdXNlciBjcmVhdGVkIHN5cyBzY2hlbWEsIHRoaXMgbXVzdCBiZSByZW5hbWVkIGZvciB0aGUgdXBncmFkZSB0byBzdWNjZWVkLgBBIHN5cyBzY2hlbWEgZXhpc3RzIHdpdGggYSBzeXMudmVyc2lvbiB2aWV3LCBidXQgaXQgcmV0dXJucyBubyByZXN1bHRzLgBGb3VuZCBvdXRkYXRlZCBzeXMgc2NoZW1hIHZlcnNpb24gJXMuAFRoZSBzeXMgc2NoZW1hIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSAodmVyc2lvbiAlcykuAEZvdW5kICVkIHN5cyAlcywgYnV0IGV4cGVjdGVkICVkLiBSZS1pbnN0YWxsaW5nIHRoZSBzeXMgc2NoZW1hLgBDaGVja2luZyAnJXMnIHNjaGVtYS4AVG9vIG1hbnkgY29uY3VycmVudCB0cmFuc2FjdGlvbnMgd2hpbGUgY2xlYXJpbmcgdGhlIERETCBMb2cuIFBsZWFzZSBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIFJvbGxiYWNrIFNlZ21lbnRzLgBFcnJvciBpbiBEREwgTG9nIHJlY292ZXJ5IGR1cmluZyBQb3N0LVJlY292ZXJ5IHByb2Nlc3NpbmcuAEVycm9yIGluIFBvc3QtVGFibGVzcGFjZS1FbmNyeXB0aW9uIGR1cmluZyBQb3N0LVJlY292ZXJ5IHByb2Nlc3NpbmcuAEVycm9yIGluIERMTCBMb2cgY2xlYW51cCBkdXJpbmcgUG9zdC1EREwgcHJvY2Vzc2luZy4AJyVzJyBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIHN5c3RlbSBmdW5jdGlvbiB0aGF0IG1heSByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFVwZ3JhZGUgb2YgaGVscCB0YWJsZXMgJXMuAEVycm9yIHdoZW4gd2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byBleGVjdXRlIGxvY2FsIHRyYW5zYWN0aW9ucyBpbiBvcmRlciBhc3N1cmUgdGhlIGdyb3VwIGNoYW5nZSBwcm9wZXIgbG9nZ2luZwBVbmFibGUgdG8gbG9nIHRoZSBncm91cCBjaGFuZ2UgVmlldyBsb2cgZXZlbnQgaW4gaXRzIGV4YWN0aW9uIHBvc2l0aW9uIGluIHRoZSBsb2cuIFRoaXMgd2lsbCBub3QgaG93ZXZlciBhZmZlY3QgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IHByb2Nlc3Mgb3IgdGhlIG92ZXJhbGwgcGx1Z2luIHByb2Nlc3MuAENhbm5vdCBncmFudCByb2xlcyB0byBhbiBhbm9ueW1vdXMgdXNlci4AVW5hYmxlIHRvIGNyZWF0ZSBhIG5ldyBiaW5sb2cgZmlsZTogVGFibGUgYG15c3FsLmd0aWRfZXhlY3V0ZWRgIGNvdWxkbid0IGJlIG9wZW5lZC4gJXMATmV0d29yayBOYW1lc3BhY2VzIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQBVbmtub3duIG5ldHdvcmsgbmFtZXNwYWNlICclcycATmV0d29yayBuYW1lc3BhY2Ugbm90IGFsbG93ZWQgZm9yIHdpbGRjYXJkIGludGVyZmFjZSBhZGRyZXNzAHNldG5zKCkgZmFpbGVkIHdpdGggZXJyb3IgJyVzJwBXaWxkY2FyZCBhZGRyZXNzIHZhbHVlIG5vdCBhbGxvd2VkIGZvciBtdWx0aXZhbHVlZCBiaW5kIGFkZHJlc3MAVGhlIHBhdGggdG8gYSBzcGVjaWFsIG5ldHdvcmsgbmFtZXNwYWNlIGZpbGUgaXMgdG9vIGxvbmcuIChnb3QgJXUgPiBtYXggJXUpAENhbm5vdCBjcmVhdGUgdGFibGVzcGFjZSAnJXMnLiBUaGUgZmlsZXBhdGggaXMgdG9vIGxvbmcgZm9yIHRoaXMgT1MuAFRoZSBsYXN0IGJsb2NrIG9mIHJlZG8gaGFkIGNvcnJ1cHRlZCBmaXJzdF9yZWNfZ3JvdXAgYW5kIGJlY2FtZSBmaXhlZCAoJXUgLT4gJXUpLgBEYXRhIGRpY3Rpb25hcnkgdXBncmFkZSBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnIGNvbXBsZXRlZC4AU2VydmVyIFNTTCBjZXJ0aWZpY2F0ZSBkb2Vzbid0IHZlcmlmeTogJXMAVHJ1bmNhdGVkIGEgdXNlciBuYW1lIGZvciAlcyB0aGF0IHdhcyB0b28gbG9uZyB3aGlsZSByZWFkaW5nIHRoZSBwZXJzaXN0ZWQgdmFyaWFibGVzIGZpbGUAVHJ1bmNhdGVkIGEgaG9zdCBuYW1lIGZvciAlcyB0aGF0IHdhcyB0b28gbG9uZyB3aGlsZSByZWFkaW5nIHRoZSBwZXJzaXN0ZWQgdmFyaWFibGVzIGZpbGUAVGhlIHdhaXRfdGltZW91dCBwZXJpb2Qgd2FzIGV4Y2VlZGVkLCB0aGUgaWRsZSB0aW1lIHNpbmNlIGxhc3QgY29tbWFuZCB3YXMgdG9vIGxvbmcuACclcycgZm91bmQgbm90IGVuY3J5cHRlZCB3aGlsZSAnJXMnIGlzIE9OLiBUcnlpbmcgdG8gZW5jcnlwdCBpdCBub3cuAENMT0NLX01PTk9UT05JQyBpcyB1bnN1cHBvcnRlZCwgc28gZG8gbm90IGNoYW5nZSB0aGUgc3lzdGVtIHRpbWUgd2hlbiBNeVNRTCBpcyBydW5uaW5nICEAY2xvY2tfZ2V0dGltZSgpIGZhaWxlZDogJXMAUGx1Z2luICclcycgaXMgbm90IHRvIGJlIHVzZWQgYXMgYW4gImVhcmx5IiBwbHVnaW4uIERvbid0IGFkZCBpdCB0byAtLWVhcmx5LXBsdWdpbi1sb2FkLCBrZXlyaW5nIG1pZ3JhdGlvbiBldGMuAFBsdWdpbiAnJXMnIGlzIG1hcmtlZCBhcyBub3QgZHluYW1pY2FsbHkgaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byBpbnN0YWxsIGl0LgBTUUxfQ0FMQ19GT1VORF9ST1dTIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyB0d28gc2VwYXJhdGUgcXVlcmllcyBpbnN0ZWFkLgBGT1VORF9ST1dTKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIENPVU5UKCopIGluc3RlYWQuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgaW52b2tlcyBhIHRyaWdnZXIgb3IgYSBzdG9yZWQgZnVuY3Rpb24gdGhhdCBtb2RpZmllcyBhIHRhYmxlIHRoYXQgaGFzIGEgY29sdW1uIHdpdGggYSBERUZBVUxUIGV4cHJlc3Npb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBNZW1iZXIgdmVyc2lvbiBpcyByZWFkIGNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAuAExvY2sgb3JkZXIgZGlzYWJsZWQgKHJlYXNvbjogaW5pdCBmYWlsZWQpLgBLZXlyaW5nIElEIHRpbWVzdGFtcCB2YWx1ZSBpcyBpbnZhbGlkOiAnJXMnAENhbm5vdCBwcm9jZXNzIGF1ZGl0IGxvZyBmaWxlLiBGaWxlIG5hbWUgdGltZXN0YW1wIHZhbHVlIGlzIG1pc3Npbmcgb3IgaW52YWxpZDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZm9ybWF0OiAnJXMnAENhbm5vdCBwcm9jZXNzIGF1ZGl0IGxvZyBmaWxlLiBGaWxlIG5hbWUga2V5cmluZyBJRCB2YWx1ZSBpcyBtaXNzaW5nOiAnJXMnAEF1ZGl0IGxvZyBmaWxlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQ6ICclcycAQ291bGQgbm90IG9wZW4gYXVkaXQgbG9nIGZpbGUgZm9yIHJlYWRpbmc6ICclcycASW52YWxpZCBhdWRpdCBsb2cgZmlsZSBjb250ZW50OiAnJXMnAENhbm5vdCByZWFkIHBhc3N3b3JkOiAnJS4zMnMnLgBDYW5ub3Qgc3RvcmUgcGFzc3dvcmQ6ICclLjMycycuAENhbm5vdCByZW1vdmUgcGFzc3dvcmQ6ICclLjMycycuACdhdWRpdF9sb2cnIHBhc3N3b3JkIGhhcyBiZWVuIGNvcGllZCBpbnRvICclLjMycycgYW5kIHdpbGwgYmUgcmVtb3ZlZCB3aXRoIGZpcnN0IHB1cmdlZCBwYXNzd29yZC4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJS42NHMnQCclLjY0cycuIFJvbGUgbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uOiAnJS4zMnMnAENhbid0IHN0b3JlIGFuIGFycmF5IG9yIGFuIG9iamVjdCBpbiBhIHNjYWxhciBrZXkgcGFydCBvZiB0aGUgaW5kZXggJyUuMTkycycAQ2Fubm90IHVzZSBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnIGR1ZSB0byB0eXBlIG9yIGNvbGxhdGlvbiBjb252ZXJzaW9uAEV4Y2VlZGVkIG1heCBudW1iZXIgb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSB2YWx1ZShzKQBFeGNlZWRlZCBtYXggdG90YWwgbGVuZ3RoIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgYnl0ZXMARGF0YSB0b28gbG9uZyBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBJbnZhbGlkIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycAT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycARW1wdHkgdXNlciBkbiBvciBwYXNzd29yZCBpcyBub3QgYWxsb3dlZCwgbm90IGF0dGVtcHRpbmcgTERBUCBiaW5kLgBHcm91cGluZyBvbiB0ZW1wb3JhbCBpcyBub24tZGV0ZXJtaW5pc3RpYyBmb3IgdGltZXpvbmVzIGhhdmluZyBEU1QuIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gVVRDIGZvciB0aGlzIHF1ZXJ5LgBUaGUgY3VycmVudCBsYXlvdXQgb2YgdGhlIEFDTCB0YWJsZXMgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgc2VydmVyJ3MgZXhwZWN0ZWQgbGF5b3V0LiBUaGV5J3JlIGVpdGhlciBhbHRlcmVkLCBtaXNzaW5nIG9yIG5vdCB1cGdyYWRlZCBmcm9tIGEgcHJldmlvdXMgdmVyc2lvbi4gSG93ZXZlciBhIGJlc3QgZWZmb3J0IGF0dGVtcHQgdG8gcmVhZCBkYXRhIGZyb20gdGhlc2UgdGFibGVzIHdpbGwgc3RpbGwgYmUgbWFkZS4ATE9DS19PUkRFUjogRmFpbGVkIHRvIHdyaXRlIHRvIGZpbGUgPCVzPi4ATE9DS19PUkRFUjogRmFpbGVkIHRvIHJlYWQgZnJvbSBmaWxlIDwlcz4uAExPQ0tfT1JERVIgbWVzc2FnZTogJXMATG9jayBvcmRlciBkZXBlbmRlbmNpZXMgZmlsZSA8JXM+ICglZDolZCkgLSAoJWQ6JWQpIDogJXMATG9jayBvcmRlciBzY2FubmVyOiAoJWQ6JWQpIC0gKCVkOiVkKSA6ICVzAFRoZSBuZXdseSBjcmVhdGVkIGRhdGEgZGlyZWN0b3J5ICVzIGJ5IC0taW5pdGlhbGl6ZSBpcyB1bnVzYWJsZS4gWW91IGNhbiByZW1vdmUgaXQuAE5vLiBvZiBCLXRyZWUgbGV2ZWwgY3JlYXRlZCBmb3IgaW5kZXggJXMgaGFzIGNyb3NzZWQgdGhlIHBlcm1pc3NpYmxlIGxpbWl0LiBJZiBkZWJ1ZyBvcHRpb24gaW5ub2RiX2xpbWl0X29wdGltaXN0aWNfaW5zZXJ0X2RlYnVnIGlzIGJlaW5nIHVzZWQgdHJ5IHR3ZWFraW5nIGl0IHRvIGluY2x1ZGUgbW9yZSByZWNvcmRzIGluIGEgcGFnZS4AJXMAJXMAJXMAQ2xvbmUgcmVtb3ZpbmcgYWxsIHVzZXIgZGF0YSBmb3IgcHJvdmlzaW9uaW5nOiAlcwBOb24gaW5ub2RiIHRhYmxlOiAlcy4lcyBpcyBub3QgY2xvbmVkIGFuZCBpcyBlbXB0eS4AQ2xvbmUgc2h1dHRpbmcgZG93biBzZXJ2ZXIgYXMgUkVTVEFSVCBmYWlsZWQuIFBsZWFzZSBzdGFydCBzZXJ2ZXIgdG8gY29tcGxldGUgY2xvbmUgb3BlcmF0aW9uLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgR1RJRCBwdXJnZWQgc2V0LiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBjb25maWd1cmluZyB0aGUgcmVtb3RlIGNsb25pbmcgcHJvY2VzczogJXMAVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gY2xvbmluZyBmcm9tIGFub3RoZXIgc2VydmVyOiAlcwBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiB0cnlpbmcgdG8gZXZhbHVhdGUgdGhlIGJlc3QgZGlzdHJpYnV0ZWQgcmVjb3Zlcnkgc3RyYXRlZ3kgd2hpbGUgam9pbmluZy4lcwBObyB2YWxpZCBvciBPTkxJTkUgbWVtYmVycyBleGlzdCB0byBnZXQgdGhlIG1pc3NpbmcgZGF0YSBmcm9tIHRoZSBncm91cC4gRm9yIGNsb25pbmcgY2hlY2sgaWYgZG9ub3JzIG9mIHRoZSBzYW1lIHZlcnNpb24gYW5kIHdpdGggY2xvbmUgcGx1Z2luIGluc3RhbGxlZCBleGlzdC4gRm9yIGluY3JlbWVudGFsIHJlY292ZXJ5IGNoZWNrIGlmIHlvdSBoYXZlIGRvbm9ycyB3aGVyZSB0aGUgcmVxdWlyZWQgZGF0YSB3YXMgbm90IHB1cmdlZCBmcm9tIHRoZSBiaW5hcnkgbG9ncy4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIHBsdWdpbiBjb3VsZCBub3Qga2lsbCB0aGUgcGx1Z2luIHJvdXRpbmUgZm9yICVzLiAlcwBUaGlzIG1lbWJlciB3aWxsIHN0YXJ0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHVzaW5nIGNsb25lLiBJdCBpcyBkdWUgdG8gdGhlIG51bWJlciBvZiBtaXNzaW5nIHRyYW5zYWN0aW9ucyBiZWluZyBoaWdoZXIgdGhhbiB0aGUgY29uZmlndXJlZCB0aHJlc2hvbGQgb2YgJWxsdS4AVGhpcyBtZW1iZXIgd2lsbCBzdGFydCBkaXN0cmlidXRlZCByZWNvdmVyeSB1c2luZyBjbG9uZS4gSXQgaXMgZHVlIHRvIG5vIE9OTElORSBtZW1iZXIgaGFzIHRoZSBtaXNzaW5nIGRhdGEgZm9yIHJlY292ZXJpbmcgaW4gaXRzIGJpbmFyeSBsb2dzLgBEaXN0cmlidXRlZCByZWNvdmVyeSB3aWxsIHRyYW5zZmVyIGRhdGEgdXNpbmc6ICVzAER1ZSB0byBzb21lIGlzc3VlIG9uIHRoZSBwcmV2aW91cyBzdGVwIGRpc3RyaWJ1dGVkIHJlY292ZXJ5IGlzIG5vdyBleGVjdXRpbmc6ICVzAER1ZSB0byBhIGNyaXRpY2FsIGNsb25pbmcgZXJyb3Igb3IgbGFjayBvZiBkb25vcnMsIGRpc3RyaWJ1dGVkIHJlY292ZXJ5IGNhbm5vdCBiZSBleGVjdXRlZC4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAFRoZSAnJXMnIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIHNlcnZlciB3aWxsIGF0dGVtcHQgdG8gY2xvbmUgYW5vdGhlciBzZXJ2ZXIAVW5rbm93biB0YWJsZSAnJS0uMTI5cycATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gcGF0aCBsZW5ndGggZXhjZWVkaW5nICVkIGNoYXJhY3RlcnMuIFBhdGg6ICclcycuAFhBOiBGYWlsZWQgdG8gdGFrZSBNREwgTG9jayBiYWNrdXAgb2YgUFJFUEFSRUQgWEEgdHJhbnNhY3Rpb24gZHVyaW5nIGNsaWVudCBkaXNjb25uZWN0LgBTVVBFUiBwcml2aWxlZ2Ugb3IgQVVESVRfQURNSU4gcm9sZSByZXF1aXJlZCBmb3IgJyVzJ0AnJXMnIHVzZXIuAEludmFsaWQgYXJndW1lbnQgdHlwZQBJbnZhbGlkIGFyZ3VtZW50IGNvdW50AGF1ZGl0X2xvZyBwbHVnaW4gaGFzIG5vdCBiZWVuIGluc3RhbGxlZCB1c2luZyBJTlNUQUxMIFBMVUdJTiBzeW50YXguAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHR5cGUuAEZhaWxlZCB0byB3cml0ZSB0byAlczogJXMgKCVzKQBVcGdyYWRpbmcgZnJvbSBzZXJ2ZXIgdmVyc2lvbiAlZCB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9PSAxIG9uIGEgY2FzZSBzZW5zaXRpdmUgZmlsZSBzeXN0ZW0gbWF5IGNhdXNlIGlzc3VlcywgYW5kIGlzIHRoZXJlZm9yZSBwcm9oaWJpdGVkLiBUbyB1cGdyYWRlIGFueXdheSwgcmVzdGFydCB0aGUgbmV3IHNlcnZlciB2ZXJzaW9uIHdpdGggdGhlIGNvbW1hbmQgbGluZSBvcHRpb24gJ3VwZ3JhZGU9Rk9SQ0UnLiBXaGVuIHVwZ3JhZGUgaXMgY29tcGxldGVkLCBwbGVhc2UgZXhlY3V0ZSAnUkVOQU1FIFRBQkxFIDxwYXJ0X3RhYmxlX25hbWU+IFRPIDxuZXdfdGFibGVfbmFtZT47IFJFTkFNRSBUQUJMRSA8bmV3X3RhYmxlX25hbWU+IFRPIDxwYXJ0X3RhYmxlX25hbWU+OycgZm9yIGVhY2ggb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcy4gUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4ASW5jb3JyZWN0IGVudmlyb25tZW50IHZhcmlhYmxlICVzLCBpbnZhbGlkIHBvcnQ6ICVzAFRoZSBzZXJ2ZXIgd2FzIGF1dG9tYXRpY2FsbHkgc2V0IGludG8gb2ZmbGluZSBtb2RlIGFmdGVyIGFuIGVycm9yIHdhcyBkZXRlY3RlZC4AQSBtZXNzYWdlIHNlbnQgdGhyb3VnaCB0aGUgR3JvdXAgUmVwbGljYXRpb24gbWVzc2FnZSBkZWxpdmVyIHNlcnZpY2Ugd2FzIG5vdCBkZWxpdmVyZWQgc3VjY2Vzc2Z1bGx5LiBUaGUgc2VydmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4gVHJ5IHRvIGFkZCB0aGUgc2VydmVyIGJhY2sgdG8gdGhlIGdyb3VwIGFuZCBjaGVjayBpZiB0aGUgcHJvYmxlbSBwZXJzaXN0cywgb3IgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgaW4gdGhlIGxvZyBmb3IgaGludHMgb2Ygd2hhdCBjb3VsZCBiZSB0aGUgcHJvYmxlbS4ASW52YWxpZCBTT1VSQ0VfQ09NUFJFU1NJT05fQUxHT1JJVEhNUyAnJS4xOTJzJyBmb3VuZCBpbiByZXBvc2l0b3J5IGZvciBjaGFubmVsICclLjE5MnMnLiBSZXNldHRpbmcgdG8gJ3VuY29tcHJlc3NlZCcgKG5vIGNvbXByZXNzaW9uKS4ASW52YWxpZCBTT1VSQ0VfWlNURF9DT01QUkVTU0lPTl9MRVZFTCBmb3VuZCBpbiByZXBvc2l0b3J5IGZvciBjaGFubmVsICclLjE5MnMnLiBSZXNldHRpbmcgdG8gJXUuAE9wdGlvbiAtLXByb3RvY29sLWNvbXByZXNzaW9uLWFsZ29yaXRobXMgaXMgcmVzZXQgdG8gZGVmYXVsdCB2YWx1ZS4ARmF0YWwgZXJyb3Igd2hpbGUgY29tcHJlc3Npbmcgb3V0Z29pbmcgZGF0YSAtICVzACVzAFVua25vd24ga2V5cmluZ19hd3NfcmVnaW9uICclLjE5MnMnLiBDb25uZWN0aW9uIHRvIEFXUyBLTVMgbWF5IGZhaWwuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIGlzIG5vdCBhbiBleGlzdGluZyB1c2VyLiBDb3JyZWN0IHRoaXMgYmVmb3JlIHN0YXJ0aW5nIHJlcGxpY2F0aW9uIHRocmVhZHMuAEludmFsaWQsIGNvcnJ1cHRlZCBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgd2FzIGZvdW5kIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFVzZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB0byBjb3JyZWN0IHRoZSBjb25maWd1cmF0aW9uLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyB1c2VyIGRvZXMgbm90IGhhdmUgUkVQTElDQVRJT05fQVBQTElFUiBwcml2aWxlZ2UuIENvcnJlY3QgdGhpcyBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2F0aW9uIHRocmVhZHMuAFRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIGNoYW5uZWwgJyUuMTkycycgd291bGQgbmVlZCBGSUxFIHByaXZpbGVnZSB0byBleGVjdXRlIGEgTE9BRCBEQVRBIElORklMRSBzdGF0ZW1lbnQgcmVwbGljYXRlZCBpbiBzdGF0ZW1lbnQgZm9ybWF0LiBDb25zaWRlciB1c2luZyBiaW5sb2dfZm9ybWF0PVJPVyBvbiBzb3VyY2UuIElmIHRoZSByZXBsaWNhdGVkIGV2ZW50cyBhcmUgdHJ1c3RlZCwgcmVjb3ZlciBmcm9tIHRoZSBmYWlsdXJlIGJ5IHRlbXBvcmFyaWx5IGdyYW50aW5nIEZJTEUgdG8gdGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUi4AUmVwbGljYSBTUUwgdGhyZWFkJXMgaW5pdGlhbGl6ZWQsIHN0YXJ0aW5nIHJlcGxpY2F0aW9uIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzLCByZWxheSBsb2cgJyVzJyBwb3NpdGlvbjogJXMsIHVzZXI6ICclLjY0cydAJyUuMjU1cycsIHJvbGVzOiAlLjUxMnMAQ2Fubm90IGdlbmVyYXRlIHBhc3N3b3JkOiAnJS4zMnMnAEZhaWxlZCB0byBnZW5lcmF0ZSBhIHJhbmRvbSBwYXNzd29yZCBmb3Igcm9vdC4gUHJvYmFiYWJseSBub3QgZW5vdWdoIGVudGhyb3B5LgBJZ25vcmluZyAtLXBsdWdpbi1sb2FkW19hZGRdIGxpc3QgYXMgdGhlIHNlcnZlciBpcyBydW5uaW5nIHdpdGggLS1pbml0aWFsaXplKC1pbnNlY3VyZSkuAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4gQXV0aElkKHMpIHNldCBpbiB0aGUgbWFuZGF0b3J5X3JvbGVzIGFyZSBpZ25vcmVkLgBEaXJlY3RvcnkgJyVzJyB3aWxsIG5vdCBiZSBzY2FubmVkIGJlY2F1c2UgaXQgaXMgYSBoaWRkZW4gZGlyZWN0b3J5LgBTZXJ2ZXIgd2FzIG5vdCBhYmxlIHRvIGZpbmQgYSByb3RhdGUgZXZlbnQgZnJvbSBzb3VyY2Ugc2VydmVyIHRvIGluaXRpYWxpemUgcmVsYXkgbG9nIHJlY292ZXJ5IGZvciBjaGFubmVsICclcycuIFNraXBwaW5nIHJlbGF5IGxvZyByZWNvdmVyeSBmb3IgdGhlIGNoYW5uZWwuAFJvbGxpbmcgYmFjayBMT0IgZm9yIHRyYW5zYWN0aW9uICVsbHUgdW5kbyBudW1iZXIgJWxsdSA6IGN1cnJlbnQgaW5kZXggbGVuZ3RoICVsbHUuIChpdGVyYXRpb24gJWxsdSkARXJyb3IgaW4gcHJvY2Vzc2luZyAocG9zc2libHkgZGVwcmVjYXRlZCkgZXhwcmVzc2lvbiBvciBmdW5jdGlvbiAnJS4xMjhzJyBmb3IgZ2VuZXJhdGVkIGNvbHVtbiAlLjY0cy4lLjY0cy4lLjY0cwBUaGUgcXVldWUgZXZlbnQgZmFpbGVkIGZvciBjaGFubmVsICclcycgYXMgYW4gaW52YWxpZCBldmVudCBhY2NvcmRpbmcgdG8gUkVRVUlSRV9ST1dfRk9STUFUIHdhcyBmb3VuZC4AVGhlIGFwcGxpY2F0aW9uIG9mIHJlbGF5IGV2ZW50cyBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBhbiBpbnZhbGlkIGV2ZW50IGFjY29yZGluZyB0byBSRVFVSVJFX1JPV19GT1JNQVQgd2FzIGZvdW5kLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgY2FuJ3QgYmUgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AgdW5sZXNzIFJFUVVJUkVfUk9XX0ZPUk1BVCBpcyBhbHNvIHNldCB0byAlZC4AQW4gdW5leHBlY3RlZCBldmVudCBzZXF1ZW5jZSB3YXMgZGV0ZWN0ZWQgYnkgdGhlIFNRTCB0aHJlYWQgd2hpbGUgYXBwbHlpbmcgYW4gZXZlbnQuAFVwZGF0aW5nIHBhcnRpdGlvbiBmaWxlIG5hbWUgJyVzJyB0byAnJXMnIGFuZCBhbGwgb3RoZXIgcGFydGl0aW9uIGZpbGVzIGR1cmluZyB1cGdyYWRlAFVwZGF0aW5nIHBhcnRpdGlvbiBmaWxlIG5hbWUgJyVzJyB0byAnJXMnIGFuZCBhbGwgb3RoZXIgcGFydGl0aW9uIGZpbGVzIGR1cmluZyBkb3duZ3JhZGUAVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgZm9yIGltcG9ydABVbmFibGUgdG8gb3BlbiBwYXJ0aXRpb24gZmlsZSB3aXRoIG5ldyBuYW1lICclcycuIFBsZWFzZSBjaGVjayBpZiBpbm5vZGJfZGlyZWN0b3JpZXMgaXMgc2V0IHRvIGluY2x1ZGUgYWxsIGV4dGVybmFsIGZpbGUgcGF0aHMAJXMgREQgSUQ6ICVsbHUgLSBQYXJ0aXRpb24gdGFibGVzcGFjZSAldSwgbmFtZSAnJXMnIGlzIGNvcnJlY3RlZCB0byAnJXMnACVzIEREIElEOiAlbGx1IC0gVGFibGVzcGFjZSAldSwgbmFtZSAnJXMnLCAnJXMnIGlzIG1vdmVkIHRvICclcycAJXMgREQgSUQ6ICVsbHUgLSBQYXJ0aXRpb24gdGFibGVzcGFjZSAldSwgbmFtZSAnJXMnLCAnJXMnIGlzIHVwZGF0ZWQgdG8gJyVzJwAlcyBUb28gbWFueSBmaWxlcyBoYXZlIGJlZW4gbW92ZWQsIGRpc2FibGluZyBsb2dnaW5nIG9mIGRldGFpbGVkIG1lc3NhZ2VzAEVsZWN0ZWQgcHJpbWFyeSBtZW1iZXIgJXM6ICVzAFNjaGVtYSBuYW1lICclcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AVGFibGUgbmFtZSAnJXMuJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFNjaGVtYSBuYW1lICclcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMsIHVzZWQgYnkgZm9yZWlnbiBrZXkgJyVzJyBpbiB0YWJsZSAnJXMuJXMnLCBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBUYWJsZSBuYW1lICclcy4lcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMsIHVzZWQgYnkgZm9yZWlnbiBrZXkgJyVzJyBpbiB0YWJsZSAnJXMuJXMnLCBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBUYWJsZSBQYXJ0aXRpb246ICVzIGlzIG5vdCBmb3VuZCBpbiBJbm5vREIgZGljdGlvbmFyeQBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGJsb2NrZWQgZm9yICVzIGRheShzKSAoJXMgZGF5KHMpIHJlbWFpbmluZykgZHVlIHRvICV1IGNvbnNlY3V0aXZlIGZhaWxlZCBsb2dpbnMuIFVzZSBGTFVTSCBQUklWSUxFR0VTIG9yIEFMVEVSIFVTRVIgdG8gcmVzZXQuACVzAFVwZ3JhZGUgY2Fubm90IHByb2NlZWQgZHVlIHRvIGFuIGV4aXN0aW5nIHByZXBhcmVkIFhBIHRyYW5zYWN0aW9uLgBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBrZXlfaW5mbyB3aGVuIG1pZ3JhdGluZyB0YWJsZSAlcy4lcwBBcHBsaWVyIG1ldGFkYXRhIGluZm9ybWF0aW9uIGZvciBjaGFubmVsICclcycgd2FzIGZvdW5kIGFmdGVyIGEgY2xvbmUgb3BlcmF0aW9uLiBSZWxheSBsb2cgcmVjb3Zlcnkgd2lsbCBiZSBleGVjdXRlZCB0byBhZGp1c3QgcG9zaXRpb25zIGFuZCBmaWxlIGluZm9ybWF0aW9uIGZvciB0aGlzIG5ldyBzZXJ2ZXIuIFNob3VsZCB0aGF0IGF1dG9tYXRpYyBwcm9jZWR1cmUgZmFpbCBwbGVhc2UgYWRqdXN0IHRoZSBwb3NpdGlvbnMgdGhyb3VnaCAnQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTycARmFpbGVkIHRvIGRlbGV0ZSA1LjcgdW5kbyB0YWJsZXNwYWNlOiAlcyBkdXJpbmcgdXBncmFkZQBFbXB0eSBkb3VibGV3cml0ZSBmaWxlOiAlcwBVc2luZyAnJXMnIGZvciBkb3VibGV3cml0ZQBFcnJvciByZWFkaW5nIGRvdWJsZXdyaXRlIGJ1ZmZlciBmcm9tIHRoZSBzeXN0ZW0gdGFibGVzcGFjZQBDYW5ub3QgY3JlYXRlIGRvdWJsZXdyaXRlIGJ1ZmZlcjogeW91IG11c3QgaW5jcmVhc2UgeW91ciBidWZmZXIgcG9vbCBzaXplLiBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLgBUaGUgcGFnZSBpbiB0aGUgZG91Ymxld3JpdGUgZmlsZSBpcyBjb3JydXB0LiBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLiBZb3UgY2FuIHRyeSB0byByZWNvdmVyIHRoZSBkYXRhYmFzZSB3aXRoIGlubm9kYl9mb3JjZV9yZWNvdmVyeT02AFRoZSBkb3VibGV3cml0ZSBmaWxlbmFtZSAnJXMnIGlzIGluY29ycmVjdC4AJXMARG91Ymxld3JpdGUgZmlsZSBjcmVhdGUgZmFpbGVkOiAlcwBEQkxXUlRocmVhZDogcHRocmVhZF9zZXRhZmZpbml0eSgpIGZhaWxlZCEAJXMAJXMARG91Ymxld3JpdGUgZmlsZSByZWFkIGZhaWxlZDogJXMARHVtcCBvZiB0aGUgZGF0YSBmaWxlIHBhZ2U6ACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAERvdWJsZXdyaXRlIGxvYWQgZmlsZSAlcyBzaXplICVsbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgcGFnZSBzaXplICV6dQBEb3VibGV3cml0ZSBmaWxlICVzIHRydW5jYXRlIGZhaWxlZABEb3VibGV3cml0ZSBmaWxlICVzIGZhaWxlZCB0byB3cml0IHplcm9zAERvdWJsZXdyaXRlIG9wZW4gb3IgY3JlYXRlIGZpbGUgJXMgc2l6ZSAlbGx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBjb25maWd1cmVkIHBhZ2Ugc2l6ZSAlenUAJXMAJXMAJXMAJXMAJXMAQ291bGQgbm90IGZsdXNoIGFsbCBHVElEcyBkdXJpbmcgc2xvdyBzaHV0ZG93bi4gV2lsbCByZWNvdmVyIEdUSURzIHdoZW4gc2VydmVyIHJlc3RhcnRzLgBGYWlsZWQgdG8gZGVsZXRlIDUuNyBzdGF0IHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEluc3RhbGxpbmcgbmRiaW5mbyBzY2hlbWEgdmVyc2lvbiAlcwBJbnN0YWxsZWQgbmRiaW5mbyBzY2hlbWEgaXMgY3VycmVudC4gTm90IHVwZ3JhZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgbmRiaW5mbyBzY2hlbWEuACVzAElubm9EQiBpbml0aWFsaXphdGlvbiBoYXMgc3RhcnRlZC4ASW5ub0RCIGluaXRpYWxpemF0aW9uIGhhcyBlbmRlZC4AQ291bGQgbm90IGZpbmQgYXBwcm9wcmlhdGUgcmVzZXQgcG9pbnRzLgBVbmFibGUgdG8gZmx1c2guIFBhZ2UgYXJjaGl2aW5nIGRhdGEgbWF5IGJlIGNvcnJ1cHQgaW4gY2FzZSBvZiBhIGNyYXNoLgBQYWdlIGFyY2hpdmVyJ3MgZG91Ymxld3JpdGUgYnVmZmVyIGZvciAlbGQgaXMgbm90IHZhbGlkLgBQYWdlIGFyY2hpdmVyIHN5c3RlbSdzIHJlY292ZXJ5IGZhaWxlZC4ASW52YWxpZCBhcmNoaXZlZCBmaWxlIG5hbWUgZm9ybWF0LiBUaGUgYXJjaGl2ZWQgZmlsZSBpcyBzdXBwb3NlZCB0byBoYXZlIHRoZSBmb3JtYXQgJXMgKyBbMC05XSouAFggUGx1Z2lucyBVTklYIHNvY2tldCBtdXN0IHVzZSBkaWZmZXJlbnQgZmlsZSB0aGFuIE15U1FMIHNlcnZlci4gWCBQbHVnaW4gd29uJ3QgYmUgYWNjZXNzaWJsZSB0aHJvdWdoIFVOSVggc29ja2V0ACVzAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaXMgaWdub3JlZCBieSB0aGUgcGFydGl0aW9uaW5nIGZ1bmN0aW9uLiBVc2Ugb2YgcHJlZml4ZWQgY29sdW1ucyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVW5kbyBUcnVuY2F0aW9uIGlzIG9jY3VycmluZyB0b28gb2Z0ZW4uIENvbnNpZGVyIGluY3JlYXNpbmcgLS1pbm5vZGItbWF4LXVuZG8tbG9nLXNpemUuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGlzIHN0YXJ0aW5nLgBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJXMgYmVjYXVzZSB0aGUgZGlyZWN0b3J5IGlzIG5vdCBhIHZhbGlkIGxvY2F0aW9uLiAlcwBTY2FubmVkIGZpbGUgJyVzJyBmb3IgdGFibGVzcGFjZSAlcyBjYW5ub3QgYmUgb3BlbmVkIGJlY2F1c2UgaXQgaXMgbm90IGluIGEgc3ViLWRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIHNjaGVtYS4AQ2Fubm90IGZpbmQgdW5kbyB0YWJsZXNwYWNlICVzIHdpdGggZmlsZW5hbWUgJyVzJyBhcyBpbmRpY2F0ZWQgYnkgdGhlIERhdGEgRGljdGlvbmFyeS4gRGlkIHlvdSBtb3ZlIG9yIGRlbGV0ZSB0aGlzIHRhYmxlc3BhY2U/IEFueSB1bmRvIGxvZ3MgaW4gaXQgY2Fubm90IGJlIHVzZWQuAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIHJlY292ZXJ5IHNvY2tldCBlbmRwb2ludHMgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQsIGNvbW1hIHNlcGFyYXRlZCwgbGlzdCBvZiBlbmRwb2ludHMgKElQOnBvcnQpLgBUaGUgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgb24gZW5kcG9pbnQgJyVzJy4gT25seSBlbmRwb2ludHMgdGhhdCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZyBvbiBhcmUgdmFsaWQgcmVjb3ZlcnkgZW5kcG9pbnRzLgBSZWNlaXZlZCBpbnZhbGlkIHJlY292ZXJ5IGVuZHBvaW50cyBjb25maWd1cmF0aW9uIGZyb20gZG9ub3IuIFRoaXMgbWVtYmVyIGlzIG5vdCBhIHZhbGlkIGRvbm9yIGZvciByZWNvdmVyeSwgc28gaXQgd2lsbCBiZSBza2lwcGVkLgBGYWlsZWQgdG8gcmV0cmlldmUgSVAgYWRkcmVzc2VzIGZyb20gZW5hYmxlZCBob3N0IG5ldHdvcmsgaW50ZXJmYWNlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgVExTIGZvciBjaGFubmVsOiAlcy4gU2VlIGJlbG93IGZvciB0aGUgZGVzY3JpcHRpb24gb2YgZXhhY3QgaXNzdWUuAFZhbGlkYXRpb24gb2YgdmFsdWUgJyVzJyBzZXQgdG8gYE15c3FseF9iaW5kX2FkZHJlc3NgIGZhaWxlZDogJXMuIFNraXBwaW5nIHRoaXMgdmFsdWUuAFZhbHVlICclcycgc2V0IHRvIGBNeXNxbHhfYmluZF9hZGRyZXNzYCwgWCBQbHVnaW4gY2FuJ3QgYmluZCB0byBpdC4gU2tpcHBpbmcgdGhpcyB2YWx1ZS4AU2VydmVyIHdhcyBraWxsZWQgd2hlbiBJbm5vREIgcmVkbyBsb2dnaW5nIHdhcyBkaXNhYmxlZC4gRGF0YSBmaWxlcyBjb3VsZCBiZSBjb3JydXB0LiBZb3UgY2FuIHRyeSB0byByZXN0YXJ0IHRoZSBkYXRhYmFzZSB3aXRoIGlubm9kYl9mb3JjZV9yZWNvdmVyeT02AElubm9EQiBjYW5ub3QgZG8gY29sZCBzaHV0ZG93biAnaW5ub2RiX2Zhc3Rfc2h1dGRvd24gPSAyJyBhbmQgaXMgZm9yY2luZyAnaW5ub2RiX2Zhc3Rfc2h1dGRvd24gPSAxJyBhcyByZWRvIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIElubm9EQiB3b3VsZCBmbHVzaCBhbGwgZGlydHkgcGFnZXMgdG8gZW5zdXJlIHBoeXNpY2FsIGRhdGEgY29uc2lzdGVuY3kuAElubm9EQiByZWRvIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIEFsbCBkYXRhIGNvdWxkIGJlIGxvc3QgaW4gY2FzZSBvZiBhIHNlcnZlciBjcmFzaC4ASW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBlbmFibGVkLiBEYXRhIGlzIG5vdyBzYWZlIGFuZCBjYW4gYmUgcmVjb3ZlcmVkIGluIGNhc2Ugb2YgYSBzZXJ2ZXIgY3Jhc2guAENoYW5uZWwgJXMgY29uZmlndXJlZCB0byBzdXBwb3J0IFRMUy4gRW5jcnlwdGVkIGNvbm5lY3Rpb25zIGFyZSBub3cgc3VwcG9ydGVkIGZvciB0aGlzIGNoYW5uZWwuAE5vIFRMUyBjb25maWd1cmF0aW9uIHdhcyBnaXZlbiBmb3IgY2hhbm5lbCAlczsgcmUtdXNpbmcgVExTIGNvbmZpZ3VyYXRpb24gb2YgY2hhbm5lbCAlcy4AU2tpcHBpbmcgSW5ub0RCIHRhYmxlc3BhY2UgcGF0aCB2YWxpZGF0aW9uLiBNYW51YWxseSBtb3ZlZCB0YWJsZXNwYWNlIGZpbGVzIHdpbGwgbm90IGJlIGRldGVjdGVkIQBVcGdyYWRlIGZhaWxlZCBiZWNhdXNlIGRhdGFiYXNlIGNvbnRhaW5zIGRpc2NhcmRlZCB0YWJsZXNwYWNlcy4AVGhlIHVzZXIgbmFtZSAnJXMnIGV4Y2VlZHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgY2hhcmFjdGVycyAlZCBhbmQgaXMgdHJ1bmthdGVkLgBUaGUgaG9zdCBuYW1lICclcycgZXhjZWVkcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjaGFyYWN0ZXJzICVkIGFuZCBpcyB0cnVua2F0ZWQuAFJvbGxiYWNrIG9mIG5vbi1wcmVwYXJlZCB0cmFuc2FjdGlvbnMgbm90IGNvbXBsZXRlZCwgZHVlIHRvIGZhc3Qgc2h1dGRvd24ARm91bmQgYW4gZW50cnkgaW4gdGhlICdyb2xlX2VkZ2VzJyB0YWJsZSB3aXRoIGVtcHR5IGF1dGhvcml6YXRpb24gSUQ7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdyb2xlX2VkZ2VzJyB0YWJsZSB3aXRoIHVua25vd24gYXV0aG9yaXphdGlvbiBJRCAnJXMnOyBTa2lwcGVkAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAnZGVmYXVsdF9yb2xlcycgdGFibGUgd2l0aCBlbXB0eSBhdXRob3JpemF0aW9uIElEOyBTa2lwcGVkAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAnZGVmYXVsdF9yb2xlcycgdGFibGUgd2l0aCB1bmtub3duIGF1dGhvcml6YXRpb24gSUQgJyVzJzsgU2tpcHBlZABDb3VsZG4ndCBpbnNlcnQgZW50cnkgaW4gZGRsIGxvZyBmb3IgZGRsLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byBhY3RpdmUgaW1wbGljaXRseS4AVGhlIHN0YXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBpcyBzZXQgdG8gJ2FjdGl2ZScgYnkgQUxURVIgVEFCTEVTUEFDRS4AVGhlIHN0YXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBpcyBzZXQgdG8gJ2luYWN0aXZlJyBieSBBTFRFUiBUQUJMRVNQQUNFLgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnZW1wdHknLgBEZWxheWluZyB0cnVuY2F0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgZHVlIHRvIGNsb25lIGFjdGl2aXR5LgBEZWxheWluZyB0cnVuY2F0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgZHVlIHRvIGEgbWV0YWRhdGEgbG9jay4ASW5qZWN0ZWQgZGVidWcgY3Jhc2ggcG9pbnQ6ICVzAEluamVjdGVkIGRlYnVnIGZhaWx1cmUgcG9pbnQ6ICVzAFRpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3IgYSB2aWV3IGNoYW5nZSBldmVudCBkdXJpbmcgdGhlIGxlYXZlIHN0ZXAgYmVmb3JlIGEgYXV0by1yZWpvaW4gYXR0ZW1wdC4ARmFpbGVkIHRvIGF1dG9tYXRpY2FsbHkgcmUtY29ubmVjdCB0byBhIGRpZmZlcmVudCBzb3VyY2UsIGZvciBjaGFubmVsICclcycsIGJlY2F1c2UgJXMuIFRvIGZpeCB0aGlzICVzLgBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIFVERiBmdW5jdGlvbnMuIENoZWNrIGZvciBvdGhlciBlcnJvcnMgaW4gdGhlIGxvZwBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIFVERiBmdW5jdGlvbjogJXMuIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQsIGlmIHNvLCB0cnkgdG8gcmVtb3ZlIGl0LgBDb3VsZCBub3QgdW5pbnN0YWxsIFVERiBmdW5jdGlvbnMuIFRyeSB0byByZW1vdmUgdGhlbSBtYW51YWxseSBpZiBwcmVzZW50LgBBbiBlbXB0eSBvciBpbGxlZ2FsIHByaXZpbGVnZSBpZGVudGlmaWVyIHdhcyBpZ25vcmVkIHdoZW4gZ2xvYmFsIHByaXZpbGVnZXMgd2VyZSByZWFkIGZyb20gZGlzay4AJXMAQSB0bXBkaXIgdGVtcG9yYXJ5IHBhdGggIiVzIiBpcyB0b28gbG9uZyAoPiAlenUpIGZvciB0aGlzIE9TLiBUaGlzIHdvdWxkIG5vdCBsZWF2ZSBlbm91Z2ggc3BhY2UgZm9yIGEgdGVtcG9yYXJ5IGZpbGVuYW1lIG9mIGxlbmd0aCAlenUgd2l0aGluIGl0LgBFcnJvci1sb2cgZGVzdGluYXRpb24gIiVzIiBpcyBub3QgYSBmaWxlLiBDYW4gbm90IHJlc3RvcmUgZXJyb3IgbG9nIG1lc3NhZ2VzIGZyb20gcHJldmlvdXMgcnVuLgBOb25lIG9mIHRoZSBsb2ctc2lua3Mgc2VsZWN0ZWQgd2l0aCAtLWxvZy1lcnJvci1zZXJ2aWNlcz0uLi4gcHJvdmlkZXMgYSBsb2ctcGFyc2VyLiBUaGUgc2VydmVyIHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSB0aGUgcHJldmlvdXMgcnVucycgZXJyb3ItbG9ncyBhdmFpbGFibGUgaW4gcGVyZm9ybWFuY2Vfc2NoZW1hLmVycm9yX2xvZy4AVGhlIHNjaGVtYSAiJS42NHMiIHJlZmVyZW5jZWQgYnkgJS4xNnMgIiUuMTI4cyIgZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjbGVhbiB1cCBhbnkgb3JwaGFuICUuMTZzIGJlZm9yZSB1cGdyYWRpbmcuAENyZWF0ZWQgdW5kbyB0YWJsZXNwYWNlICclcycuAERyb3BwZWQgdW5kbyB0YWJsZXNwYWNlICclcycuAFRoZSBJbm5vREIgRW5jcnlwdGlvbiBNYXN0ZXIgS2V5IGhhcyBiZWVuIHJvdGF0ZWQgaW4gJWQgdGFibGVzcGFjZXMuAEZhaWxlZCB0byBkZWNvbXByZXNzIGEgREJMV1IgcGFnZSAoZXJyPSVkKS4gIFRoZSBvcmlnaW5hbCBzaXplIGlzICVkLiBSZXBvcnRpbmcgdGhlIGRibHdyIHBhZ2UgYXMgY29ycnVwdGVkLgBEZWNyeXB0aW5nIGEgcGFnZSBpbiBkb3VibGV3cml0ZSBmaWxlIGZhaWxlZDogJXMuAEVuY3J5cHRpb24ga2V5IG1pc3Npbmc6ICVzLgBJL08gZXJyb3Igd2hpbGUgd3JpdGluZyB0byBmaWxlOiAlcy4gUmV0cnlpbmcgLi4uAEZhaWxlZCB0byB3cml0ZSBkYXRhIHRvIGZpbGU6ICVzAExvZyBjb21wb25lbnQgJXMgZmFpbGVkIHRvIGluaXRpYWxpemUuAFRoZSBNb25pdG9yIElPIHRocmVhZCBmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycsIHRoZW5jZSBpdCB3aWxsIHRyeSB0byBjb25uZWN0IHRvIGFub3RoZXIgc291cmNlLgBUaGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycgaGFzIGpvaW5lZCB0aGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSwgYW5kIHNvIGFkZGVkIGl0cyBlbnRyeSBpbnRvIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBUaGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycgaGFzIGxlZnQgdGhlIGdyb3VwIChncm91cF9uYW1lOiAlcyksIGFuZCBzbyByZW1vdmVkIGl0cyBlbnRyeSBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBUaGUgTW9uaXRvciBJTyB0aHJlYWQgZGV0ZWN0ZWQgdGhhdCB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgZ3JvdXAgbWFqb3JpdHksIHRoZW5jZSB0aGUgY2hhbm5lbCAnJXMnIHdpbGwgdHJ5IHRvIGNvbm5lY3QgdG8gYW5vdGhlciBzb3VyY2UuAFRoZSBJTyB0aHJlYWQgZGV0ZWN0ZWQgdGhhdCB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgZ3JvdXAgbWFqb3JpdHksIHRoZW5jZSB0aGUgY2hhbm5lbCAnJXMnIHdpbGwgdHJ5IHRvIGNvbm5lY3QgdG8gYW5vdGhlciBzb3VyY2UuACVzIG9uIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJy4AUmVwbGljYSBNb25pdG9yIElPIHRocmVhZCBleGl0aW5nLgBUaGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSBmb3IgdGhlIGNoYW5uZWwgJyVzJyBoYXMgYmVlbiByZW1vdmVkLCBhbmQgc28gcmVtb3ZlZCBpdHMgZW50cnkgZnJvbSByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkIGFuZCBhbGwgdGhlIGdyb3VwIG1lbWJlcnMgZnJvbSByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4AVGhlIGdyb3VwIChncm91cF9uYW1lOiAlcykgZm9yIHRoZSBjaGFubmVsICclcycgaGFzIGJlZW4gYWRkZWQsIGFuZCBzbyBhZGRlZCBpdHMgZW50cnkgaW4gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfbWFuYWdlZCBhbmQgc291cmNlIHRvIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBFcnJvciByZWFkaW5nIGZhaWxvdmVyIHNvdXJjZXMgZm9yIGNoYW5uZWwgJyVzJyBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBFcnJvciAlcyB0aGUgY2hhbm5lbCAnJXMnLCB0aGUgb3BlcmF0aW9uIHdpbGwgYmUgYXV0b21hdGljYWxseSByZXRyaWVkLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz0nJXMnLCB3aGljaCBpcyBpbnZhbGlkIHdoZW4gR1RJRF9NT0RFIDw+IE9OLiBJZiB5b3UgaW50ZW5kIHRvIHVzZSBHVElEX01PREUgPSBPTiBldmVyeXdoZXJlLCBjaGFuZ2UgdG8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBPRkYgYW5kIHVzZSB0aGUgcHJvY2VkdXJlIGZvciBlbmFibGluZyBHVElEcyBvbmxpbmUgKHNlZSB0aGUgZG9jdW1lbnRhdGlvbikuIElmIHlvdSBpbnRlbmQgdG8gdXNlIEdUSURzIG9uIHRoaXMgcmVwbGljYSBhbmQgY2Fubm90IGVuYWJsZSBHVElEcyBvbiB0aGUgc291cmNlLCBlbmFibGUgR1RJRF9NT0RFID0gT04gYW5kIGxlYXZlIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+LiBJZiB5b3UgaW50ZW5kIHRvIG5vdCB1c2UgR1RJRHMgYXQgYWxsIGluIHRoZSByZXBsaWNhdGlvbiB0b3BvbG9neSwgY2hhbmdlIHRvIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPU9GRiBhbmQgbGVhdmUgR1RJRF9NT0RFID0gJyVzJy4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9JyVzJyB3aGljaCBpcyBlcXVhbCB0byBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLiBUbyBmaXggdGhpcyBpc3N1ZSwgZWl0aGVyIGNoYW5nZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAgb3IgdXNlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUy4AVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyB0aGUgc2FtZSBhcyB0aGUgVVVJRCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgaW4gYSBzZXJ2ZXIgY2hhbm5lbABUaGUgaW50ZWdlciBjb21wb25lbnQgb2YgdGhlIEdUSUQgbnVtYmVyIGlzIGhpZ2guIFN1Z2dlc3QgcmVzdGFydGluZyB0aGUgc2VydmVyIHdpdGggYSBuZXcgc2VydmVyX3V1aWQgdG8gcHJldmVudCBpdCBmcm9tIHJlYWNoaW5nIHRoZSBtYXhpbXVtIG51bWJlciAyXjYzLTEsIHdoaWNoIHdpbGwgbWFrZSBpdCBpbXBvc3NpYmxlIHRvIHdyaXRlIHRoZSBiaW5hcnkgbG9nIGFuZCBpbnZva2UgdGhlIGJlaGF2aW9yIHNwZWNpZmllZCBieSBiaW5sb2dfZXJyb3JfYWN0aW9uLgAlcwAlcwAlcwAlczogV2FybmluZyBMZXZlbCAxICglbGx1IE1pQik6IG1vdW50IHBvaW50ID0gJyVzJywgYXZhaWxhYmxlID0gJWxsdSBNaUIsIHRvdGFsID0gJWxsdSBNaUIsIHVzZWQgPSAlLjJmJSUsIGxvdyBsaW1pdCA9ICVsbHUgTWlCLCBjcml0aWNhbCBsZXZlbCA9ICVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDIgKCVsbHUgTWlCKTogbW91bnQgcG9pbnQgPSAnJXMnLCBhdmFpbGFibGUgPSAlbGx1IE1pQiwgdG90YWwgPSAlbGx1IE1pQiwgdXNlZCA9ICUuMmYlJSwgbG93IGxpbWl0ID0gJWxsdSBNaUIsIGNyaXRpY2FsIGxldmVsID0gJWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMyAoJWxsdSBNaUIpOiBtb3VudCBwb2ludCA9ICclcycsIGF2YWlsYWJsZSA9ICVsbHUgTWlCLCB0b3RhbCA9ICVsbHUgTWlCLCB1c2VkID0gJS4yZiUlLCBsb3cgbGltaXQgPSAlbGx1IE1pQiwgY3JpdGljYWwgbGV2ZWwgPSAlbGx1IE1pQgBJbm5vREI6IFNpemUgb2YgdGFibGVzcGFjZSAlcyBpcyBtb3JlIHRoYW4gdGhlIG1heGltdW0gc2l6ZSBhbGxvd2VkLgBUaGUgZ3JvdXBfcmVwbGljYXRpb25fYXBwbGllciBjaGFubmVsIGlzIHN0aWxsIHJ1bm5pbmcsIG1vc3QgbGlrZWx5IGl0IGlzIHdhaXRpbmcgZm9yIGEgZGF0YWJhc2UvdGFibGUgbG9jaywgd2hpY2ggaXMgcHJldmVudGluZyB0aGUgY2hhbm5lbCBmcm9tIHN0b3BwaW5nLiBQbGVhc2UgY2hlY2sgZGF0YWJhc2UvdGFibGUgbG9ja3MsIGluY2x1ZGluZyB0aGUgb25lcyBjcmVhdGVkIGJ5IGJhY2t1cCB0b29scy4ARGV0ZWN0ZWQgbWlzY29uZmlndXJhdGlvbjogcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgY29uZmlndXJlZCB3aXRoIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxLCBidXQgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIGEgdmFsdWUgb3RoZXIgdGhlbiAtLWd0aWQtbW9kZSA9IE9OLiBFaXRoZXIgcmVjb25maWd1cmUgcmVwbGljYXRpb24gdXNpbmcgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMCBGT1IgQ0hBTk5FTCAnJS4xOTJzJywgb3IgY2hhbmdlIEdUSURfTU9ERSB0byB2YWx1ZSBPTiwgYmVmb3JlIHN0YXJ0aW5nIHRoZSByZXBsaWNhIHJlY2VpdmVyIHRocmVhZC4AQ291bGQgbm90IGFjcXVpcmUgcmVxdWlyZWQgY29tcG9uZW50IHNlcnZpY2VzLgBBdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIGZ1bmN0aW9uKHMpIGZhaWxlZC4AQXV0b21hdGljIHJlZ2lzdHJhdGlvbiBvZiBQZXJmb3JtYW5jZSBzY2hlbWEgdGFibGUocykgZmFpbGVkLgAlcwBGYWlsZWQgdG8gYXV0by1wcnVuZSBmaWxlICclcycsIEVycm9yICglZCk6ICVzAEZpbGUgJyVzJyBhdXRvLXBydW5lZABSZWNlaXZlZCBhbiBlcnJvciB3aGlsZSBwcm9jZXNzaW5nIGNvbXBvbmVudHMgZnJvbSBtYW5pZmVzdCBmaWxlOiAlcwBSZWNlaXZlZCBhbiBlcnJvciB3aGlsZSB1bmxvYWRpbmcgY29tcG9uZW50cyByZWFkIGZyb20gbWFuaWZlc3QgZmlsZTogJXMATWFuaWZlc3QgZmlsZSAnJXMnIGlzIG5vdCByZWFkLW9ubHkuIEZvciBiZXR0ZXIgc2VjdXJpdHksIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCB0aGUgZmlsZSBpcyByZWFkLW9ubHkuAE5vIHN1aXRhYmxlICclcycgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3VuZCB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LgBLZXlyaW5nIGNvbXBvbmVudCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAFRoZSBjb21wb25lbnQgaXMgbm90IGluaXRpYWxpemVkIHByb3Blcmx5LiBFcnJvcjogJXMuIE1ha2Ugc3VyZSB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgcHJvcGVyIGFuZCB1c2UgQUxURVIgSU5TVEFOQ0UgUkVMT0FEIEtFWVJJTkcgdG8gcmVpbml0aWFsaXplIHRoZSBjb21wb25lbnQuAEtleXJpbmcgY29tcG9uZW50IGVuY291bnRlcmVkIGFuIGV4Y2VwdGlvbiB3aGlsZSBleGVjdXRpbmcgOiAnJXMnIEFQSSBvZiBzZXJ2aWNlOiAnJXMnAEZhaWxlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciAnJXMnIHdoaWxlIGV4ZWN1dGluZzogJyVzJyBBUEkgb2Ygc2VydmljZTogJyVzJwBFbXB0eSBvciAwIHZhbHVlcyBmb3IgQUVTIGVuY3J5cHRpb24gbW9kZSBhbmQvb3IgYmxvY2sgc2l6ZSBhcmUgbm90IHBlcm1pdHRlZC4AQSB2YWxpZCBkYXRhIGlkZW50aWZpZXIgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIGtleSByZXF1aXJlZCBmb3IgdGhlIEFFUyBvcGVyYXRpb24uAEtleSBpZGVudGlmaWVkIGJ5IERhdGEgSUQ6ICclcycgYW5kIEF1dGggSUQ6ICclcycgaXMgbm90IG9mIHR5cGUgQUVTLgBFbmNvdW50ZXJlZCBlcnJvcjogJyVzJyB3aGlsZSBleGVjdXRpbmcgJyVzJyBBUEkgb2Yga2V5cmluZ19hZXMgc2VydmljZS4gS2V5IGRldGFpbHMgYXJlIERhdGEgSUQ6ICclcycgYW5kIEF1dGggSUQ6ICclcycuAENvdWxkIG5vdCBmaW5kIHRoZSBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4ATWF4aW11bSBwZXJtaXNzaWJsZSBzaXplIG9mIGRhdGEgaXMgJyV6dScgYml0cwBFcnJvciB3cml0aW5nIGRhdGEgZm9yIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuIEVpdGhlciBkYXRhIGFscmVhZHkgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARXJyb3IgcmVtb3ZpbmcgZGF0YSBmb3IgRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4gRWl0aGVyIGRhdGEgZG9lcyBub3QgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARXJyb3IgZ2VuZXJhdGluZyBkYXRhIGZvciBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLiBFaXRoZXIgZGF0YSBhbHJlYWR5IGV4aXN0cyB3aXRoIHNhbWUgaWRlbnRpZmllciBvciBrZXlyaW5nIGJhY2tlbmQgZW5jb3VudGVyZWQgYW4gZXJyb3IuAEZhaWxlZCB0byBnZXQgbWV0YWRhdGEgZnJvbSBjdXJyZW50IGtleXMgbWV0YWRhdGEgaXRlcmF0b3IgcG9zaXRpb24uAEtleSBhbmQgdmFsdWUgbGVuZ3RoIHBhcmFtZXRlcnMgbXVzdCBub3QgYmUgbnVsbC4ASW5ub2RiIGNvdWxkIG5vdCBhY3F1aXJlIHNlcnZpY2UgOiAlcwBDb2x1bW4gJXMgb2YgdHlwZSBHRU9NRVRSWSBpcyBpbiBvbGQgKDUuNikgZm9ybWF0IHdoaWNoIGNvdWxkIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS4gVG8gY2hhbmdlIHRoZSBmb3JtYXQgdG8gbGF0ZXN0LCBwbGVhc2UgY29uc2lkZXIgcmVidWlsZGluZyB0aGUgdGFibGUgYWZ0ZXIgdGhlIHVwZ3JhZGUuACd3YWl0X3RpbWVvdXQnIHBlcmlvZCBvZiAlcyBzZWNvbmRzIHdhcyBleGNlZWRlZCBmb3IgJXMuIFRoZSBpZGxlIHRpbWUgc2luY2UgbGFzdCBjb21tYW5kIHdhcyB0b28gbG9uZy4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgd2lsbCBiZSBydW4uAFRoZSBtZW1iZXIgYWN0aW9uICIlcyIgZm9yIGV2ZW50ICIlcyIgd2l0aCBwcmlvcml0eSAiJXUiIGZhaWxlZCwgdGhpcyBlcnJvciBpcyBpZ25vcmVkIGFzIGluc3RydWN0ZWQuIFBsZWFzZSBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgZXJyb3IgbG9nIGZvciBoaW50cyBhYm91dCB3aGF0IGNvdWxkIGhhdmUgY2F1c2VkIHRoaXMgZmFpbHVyZS4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgZmFpbGVkLiBQbGVhc2UgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgaW4gdGhlIGVycm9yIGxvZyBmb3IgaGludHMgYWJvdXQgd2hhdCBjb3VsZCBoYXZlIGNhdXNlZCB0aGlzIGZhaWx1cmUuAFVuYWJsZSB0byBwYXJzZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBwcmltYXJ5LgBVbmFibGUgdG8gdXBkYXRlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHdpdGggdGhlIG9uZSBzZW50IGJ5IHRoZSBwcmltYXJ5LiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVW5hYmxlIHRvIHJlYWQgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVGhpcyBtZW1iZXIgam9pbmVkIGEgZ3JvdXAgb24gd2hpY2ggYWxsIG1lbWJlcnMgZG8gbm90IHN1cHBvcnQgbWVtYmVyIGFjdGlvbnMsIGFzIHN1Y2ggaXQgZGlkIHJlc2V0IGl0cyBtZW1iZXIgY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCBvbmUuAFVuYWJsZSB0byByZXNldCB0byBtZW1iZXIgYWN0aW9ucyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBVbmFibGUgdG8gcGFyc2UgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gc2VudCBieSB0aGUgZ3JvdXAgb24gbWVtYmVyIGpvaW4uAFVuYWJsZSB0byB1cGRhdGUgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBUaGUgZ3JvdXAgbWVtYmVycyB3ZXJlIHVuYWJsZSB0byBzZW5kIHRoZWlyIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nIG9uIGFsbCBtZW1iZXJzLgBNZW1iZXIgYWN0aW9uIGVuYWJsZWQ6ICIlcyIsIHR5cGU6ICIlcyIsIGV2ZW50OiAiJXMiLCBwcmlvcml0eTogIiV1IiwgZXJyb3JfaGFuZGxpbmc6ICIlcyIuAE1lbWJlciBhY3Rpb24gZGlzYWJsZWQ6ICIlcyIsIHR5cGU6ICIlcyIsIGV2ZW50OiAiJXMiLCBwcmlvcml0eTogIiV1IiwgZXJyb3JfaGFuZGxpbmc6ICIlcyIuAE1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gd2FzIHJlc2V0LgBBY2NlcHRlZCBhIGNvbm5lY3Rpb24gd2l0aCBkZXByZWNhdGVkIHByb3RvY29sICclcycgZm9yIGFjY291bnQgYCVzYEBgJXNgIGZyb20gaG9zdCBgJXNgLiBDbGllbnQgc3VwcGxpZWQgdXNlcm5hbWUgYCVzYABBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZCBmb3IgY2hhbm5lbCAlcwBVc2VyIHByb2ZpbGUgJyVzJyBsb2FkZWQuIEZpcmV3YWxsIHVzZXIgcHJvZmlsZXMgYXJlIGRlcHJlY2F0ZWQsIGNvbnNpZGVyIG1pZ3JhdGluZyB0byBncm91cCBwcm9maWxlcy4ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCBVVUlELgBWYXJpYWJsZSAnZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCcgY2Fubm90IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyVzJy4gSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBVVUlEIG9mICdncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lJyBmb3IgdGhlIFVVSUQgb2YgVmlld19jaGFuZ2VfbG9nX2V2ZW50cywgcGxlYXNlIHNldCAnZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCcgdG8gQVVUT01BVElDLgBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuIFBsZWFzZSBjaGFuZ2UgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCB0byBBVVRPTUFUSUMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgJyVzJyBpcyB0aGUgc2FtZSBhcyB0aGUgVVVJRCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgaW4gYSBzZXJ2ZXIgY2hhbm5lbABncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGlzIGluY29tcGF0aWJsZSB3aXRoIGdyb3VwLiBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkICVzIG1hdGNoZXMgc2VydmVyX3V1aWQgJXMuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBvcHRpb24gdmFsdWUgJyVzJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9JyVzJyB3aGljaCBpcyBlcXVhbCB0byBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLiBUbyBmaXggdGhpcyBpc3N1ZSwgZWl0aGVyIGNoYW5nZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBvciB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuAFVuYWJsZSB0byBnZW5lcmF0ZSBzaWRubyBmb3IgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHVwZGF0aW5nIGdyb3VwX2d0aWRfZXhlY3V0ZWQgR1RJRCBzZXQgd2l0aCB2aWV3IGNoYW5nZSB1dWlkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBhZGQgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgc2lkbm8gaW4gdGhlIGdyb3VwX2d0aWRfc2lkX21hcCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gaGFuZGxlIHRoZSBkb25vcidzIHZpZXcgY2hhbmdlIHV1aWQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBjb21wb25lbnQuIFBvc3NpYmxlIG91dCBvZiBtZW1vcnkgZXJyb3IuAFVuYWJsZSB0byByZXRyaWV2ZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGR1cmluZyBzZXJ2ZXIgY2hlY2tzIG9uIHJlcGxpY2F0aW9uIG9wZXJhdGlvbnMuAEJvdGggYXVkaXRfbG9nX21heF9zaXplIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBhcmUgc2V0IHRvIG5vbi16ZXJvLiBhdWRpdF9sb2dfbWF4X3NpemUgdGFrZXMgcHJlY2VkZW5jZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgaXMgaWdub3JlZABhdWRpdF9sb2dfcm90YXRlX29uX3NpemUgaXMgbm90IGdyYW51bGFyIGVub3VnaCBmb3IgdGhlIHZhbHVlIG9mIGF1ZGl0X2xvZ19tYXhfc2l6ZSBzdXBwbGllZC4gU2hvdWxkIGJlIGF0IGxlYXN0ICVkIHRpbWVzIHNtYWxsZXIuAEludmFsaWQgdGFibGUgZGVmaW5pdGlvbiBmb3IgJyVzLiVzJy4AJXMAQ2Fubm90IGluc3RhbGwgdGhlICUuMTkycyBwbHVnaW4gd2hlbiB0aGUgJS4xOTJzIHBsdWdpbiBpcyBpbnN0YWxsZWQuAFRoZSB2YXJpYWJsZSAlcyBoYXMgYmVlbiByZW5hbWVkIHRvICVzLCBhbmQgdGhlIG9sZCBuYW1lIGRlcHJlY2F0ZWQuIE9ubHkgdGhlIG9sZCBuYW1lIHdhcyBmb3VuZCBpbiB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlIGZpbGUuIE5leHQgdGltZSB0aGUgZmlsZSBpcyBzYXZlZCwgYm90aCBuYW1lcyB3aWxsIGJlIHN0b3JlZC4gSXNzdWUgYW55IFNFVCBQRVJTSVNUIGNvbW1hbmQgdG8gc2F2ZSB0aGUgZmlsZSwgZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIGFuZCBwcmVwYXJlIHRoZSBwZXJzaXN0ZWQgY29uZmlndXJhdGlvbiBmb3Igd2hlbiB0aGUgdmFyaWFibGUgaXMgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLgAlZCBlcnJvciBsb2dnaW5nIGNvbXBvbmVudChzKSBmYWlsZWQgdG8gZmx1c2guIEZvciBmaWxlLWJhc2VkIGxvZ3MgdGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHBhdGggb3IgcGVybWlzc2lvbnMgb2YgdGhlIGxvZy1maWxlIGhhdmUgY2hhbmdlZC4gRmFpbHVyZSB0byBmbHVzaCBmaWxlZC1iYXNlZCBsb2dzIG1heSBhZmZlY3QgbG9nLXJvdGF0aW9uLgBUYWJsZXNwYWNlIGtleSBmb3IgJXMgaGFzIGJlZW4gcmUtZW5jcnlwdGVkIHVzaW5nIHRoZSBsYXRlc3QgSW5ub0RCIG1hc3RlciBrZXkuIEhvd2V2ZXIsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWJ1aWxkIHRoZSB0YWJsZSBmb3IgYmV0dGVyIHNlY3VyaXR5LgBUYWJsZXNwYWNlIGtleSBmb3IgJXMgaGFzIGJlZW4gcmUtZW5jcnlwdGVkIHVzaW5nIHRoZSBsYXRlc3QgSW5ub0RCIG1hc3RlciBrZXkuIEhvd2V2ZXIsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWVuY3J5cHQgdGhlIHRhYmxlc3BhY2UgZm9yIGJldHRlciBzZWN1cml0eS4AUGFnZSBBcmNoaXZlcidzIGRvdWJsZXdyaXRlIGJ1ZmZlciBpbml0aWFsaXNhdGlvbiBmYWlsZWQuIFBhZ2UgdHJhY2tpbmcgaXMgYXQgcmlzayBvZiBsb3NpbmcgdHJhY2tlZCBpbmZvcm1hdGlvbi4AVGhlcmUgaXMgbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIHRoZSByZWRvIGxvZyBkdXJpbmcgcmVjb3ZlcnkgdG8gcGVyZm9ybSBwZW5kaW5nIGlidWYgbWVyZ2VzLiBQbGVhc2UgcmV0cnkgc3RhcnRpbmcgTXlTUUwgd2l0aCAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT00LgBUaGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIHJlZG8gbG9nIGR1cmluZyByZWNvdmVyeSwgcmVzdG9yZSBmcm9tIGJhY2t1cCAob3IgcmV0cnkgd2l0aCAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02KS4AYXVkaXRfbG9nX2Zvcm1hdF91bml4X3RpbWVzdGFtcCBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBhdWRpdF9sb2dfZm9ybWF0ID0gSlNPTi4AUmV0cnkgdGhlIHN0YXRlbWVudCB1c2luZyB0aGUgcHJpbWFyeSBzdG9yYWdlIGVuZ2luZS4AUGFyYWxsZWwgaW5pdGlhbGl6YXRpb24gb2YgcnNlZyBjb21wbGV0ZQBUaW1lIHRha2VuIHRvIGluaXRpYWxpemUgcnNlZyB1c2luZyAldSB0aHJlYWQ6ICV1IG1zLgBEREwgZmFpbGVkIHRvIGNyZWF0ZSBhIHRocmVhZCB0byBsb2FkIGFuIGluZGV4LCBmYWxsIGJhY2sgdG8gc2luZ2xlIHRocmVhZABEZWJ1Z19jaGVja19ub19sYXRjaGluZyBmYWlsZWQsIHNsb3QtPnR5cGU9JWQARmFpbGVkIHRvIGVzdGFibGlzaCBNeVNRTCBjbGllbnQgY29ubmVjdGlvbiBpbiBHcm91cCBSZXBsaWNhdGlvbi4gRXJyb3IgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24uIFBsZWFzZSByZWZlciB0byB0aGUgbWFudWFsIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdSBjb25maWd1cmVkIEdyb3VwIFJlcGxpY2F0aW9uIHByb3Blcmx5IHRvIHdvcmsgd2l0aCBNeVNRTCBQcm90b2NvbCBjb25uZWN0aW9ucy4ARmFpbGVkIHRvIGVzdGFibGlzaCBNeVNRTCBjbGllbnQgY29ubmVjdGlvbiBpbiBHcm91cCBSZXBsaWNhdGlvbi4gRXJyb3Igc2VuZGluZyBjb25uZWN0aW9uIGRlbGVnYXRpb24gY29tbWFuZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBtYW51YWwgdG8gbWFrZSBzdXJlIHRoYXQgeW91IGNvbmZpZ3VyZWQgR3JvdXAgUmVwbGljYXRpb24gcHJvcGVybHkgdG8gd29yayB3aXRoIE15U1FMIFByb3RvY29sIGNvbm5lY3Rpb25zLgBVbmFibGUgdG8gcmVhZCB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiBkdXJpbmcgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2UuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlcicsICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFRoaXMgbWVtYmVyIGpvaW5lZCBhIGdyb3VwIG9uIHdoaWNoIGFsbCBtZW1iZXJzIGRvIG5vdCBzdXBwb3J0IHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGludGVncmF0aW9uIG9uIEdyb3VwIFJlcGxpY2F0aW9uLCBhcyBzdWNoIGl0IGRpZCByZXNldCBpdHMgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCBvbmUuAFVuYWJsZSB0byByZXNldCB0byByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlcicsICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFVuYWJsZSB0byBwYXJzZSB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBncm91cCBvbiBtZW1iZXIgam9pbi4AVW5hYmxlIHRvIHNldCBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSIG9uIGEgbm9uLWV4aXN0ZW50IG9yIG1pc2NvbmZpZ3VyZWQgcmVwbGljYXRpb24gY2hhbm5lbCAnJXMnLCBwbGVhc2UgY3JlYXRlIHRoZSBjaGFubmVsIGFuZCByZWpvaW4gdGhlIHNlcnZlciB0byB0aGUgZ3JvdXAuAFVuYWJsZSB0byByZWdpc3RlciB0aGUgbGlzdGVuZXIgJ3JlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX2NvbmZpZ3VyYXRpb24nIHRvIHRoZSBzZXJ2aWNlICdncm91cF9yZXBsaWNhdGlvbl9tZXNzYWdlX3NlcnZpY2VfcmVjdicuAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgc2tpcCB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgaGFuZGxpbmcgdW50aWwgdGhpcyBzZXJ2ZXIgaXMgYmFjayB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuAFRoaXMgc2VydmVyIGlzIGJhY2sgdG8gdGhlIGdyb3VwIG1ham9yaXR5LiBSZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBoYW5kbGluZyBpcyByZXN1bWVkLgBFcnJvciBpbmNyZW1lbnRpbmcgbWVtYmVyIGFjdGlvbiBjb25maWd1cmF0aW9uIHZlcnNpb24gZm9yICVzLiVzIHRhYmxlLgBUaGUgJyVzJyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoaXMgc2VydmVyIGlzIGEgZ3JvdXAgc2Vjb25kYXJ5LgBDbG9uZSBEREwgTm90aWZpY2F0aW9uOiAlcwBDbG9uZSBEREwgQVBQTFk6ICVzAENsb25lIERETCBJbnZhbGlkYXRlIDogJXMARW5jcnlwdGlvbiBrZXkgaXMgbG9hZGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ASWdub3JpbmcgZW5jcnlwdGlvbiBJTkZPIHNpemUgaW4gcmVkbyBsb2c6ICV6dSwgZXhwZWN0ZWQ6ICV6dQBPcHRpb24gLS1hdXRoZW50aWNhdGlvbi1wb2xpY3kgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIFBsZWFzZSBjaGVjayBpZiB0aGUgc3BlY2lmaWVkIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgYXJlIHZhbGlkLgBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBkdXJpbmcgcmVnaXN0cmF0aW9uLgBCdWZmZXIgdG9vIHNtYWxsIHRvIGhvbGQgcmVnaXN0cmF0aW9uIGNoYWxsZW5nZSByZXNwb25zZS4ARklETyBkZXZpY2UgYXV0aGVudGljYXRvciBkYXRhIGNvcnJ1cHQuAEZJRE8gZGV2aWNlIHNpZ25hdHVyZSBjb3JydXB0LgBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBkdXJpbmcgYXV0aGVudGljYXRpb24uAE91dCBvZiBtZW1vcnkuAENhbid0IGluaXRpYWxpemUgbG9nZ2luZyBzZXJ2aWNlLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBHVElEX09OTFk9MSwgd2hpY2ggaXMgaW52YWxpZCB3aGVuIEdUSURfTU9ERSA8PiBPTi4gSWYgeW91IGludGVuZCB0byBkaXNhYmxlIEdUSURzIGluIHRoZSByZXBsaWNhdGlvbiB0b3BvbG9neSwgY2hhbmdlIEdUSURfT05MWSB0byAwLgBUaGUgcmVwbGljYXRpb24gcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgbWF5IGJlIG91dC1vZi1kYXRlIG9uIGNoYW5uZWwgJyUuMTkycycsIGR1ZSB0byB0aGUgdXNlIG9mIEdUSURfT05MWT0xLiBUaGUgb3V0LW9mLWRhdGUgcG9zaXRpb25zIGNhbiBzdGlsbCBiZSB1c2VkIGluIHNvbWUgY2FzZXMgc28sIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGVtLCB3ZSBzdWdnZXN0IHRoYXQgeW91IHN0YXJ0IHRoZSByZXBsaWNhdGlvbiB0byByZWNlaXZlIGFuZCBhcHBseSBhdCBsZWFzdCBvbmUgdHJhbnNhY3Rpb24sIHdoaWNoIHdpbGwgc2V0IHRoZSBwb3NpdGlvbnMgdG8gdmFsaWQgdmFsdWVzLgBDb3VsZCBub3Qgb3BlbiByZWxheSBsb2c6ICVzAEF1dGhlbnRpY2F0aW9uIHBsdWdpbiBub3QgaW5pdGlhbGl6ZWQuAENhbm5vdCB1c2UgdGhlIGdlbmVyYXRlZCBwcml2YXRlIGtleSBmaWxlLgBVbmF2YWlsYWJsZSBwdWJsaWMga2V5IHdpdGggZmluZ2VycHJpbnQgJXMgZm9yIHVzZXIgJXMgaW4gdGVuYW5jeSAlcyAuAENhbm5vdCBvYnRhaW4gdGhlIE9DSSBjb25maWd1cmF0aW9uIGZyb20gdGhlIElNRFMgc2VydmljZS4AQ2Fubm90IGluaXRpYWxpemUgdGhlIElBTSBzZXJ2aWNlLgBJbnZhbGlkIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBkZXRhaWxzIGZvciB1c2VyOiBgJXNgQGAlc2AuAE5vbmUgb2YgdGhlIGdyb3VwcyByZXR1cm5lZCBieSBJQU0gbWF0Y2hlcyBhbnkgb2YgdGhlIGVudHJpZXMgZnJvbSBhdXRoZW50aWNhdGlvbiBzdHJpbmcuAFVzZXIgaXMgbm90IHBhcnQgb2YgYW55IGdyb3Vwcy4gSG93ZXZlciwgYWNjb3VudCBpcyBjb25maWd1cmVkIHRvIHVzZSBncm91cCBtYXBwaW5nLgBSZWNlaXZlZCBPcGVuU1NMIGVycm9yOiAlcyB3aGlsZSBhdXRoZW50aWNhdGluZyB1c2VyICVzIHdpdGggZmluZ2VycHJpbnQgJXMgaW4gdGVuYW5jeSAlcyAuACVzOiBXYXJuaW5nIExldmVsIDEgKCVsbHUgTWlCKTogYXZhaWxhYmxlPSVsbHUgTWlCLCB0b3RhbD0lbGx1IE1pQiwgdXNlZD0lLjJmJSUsIG15c3FsZD0lbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAyICglbGx1IE1pQik6IGF2YWlsYWJsZT0lbGx1IE1pQiwgdG90YWw9JWxsdSBNaUIsIHVzZWQ9JS4yZiUlLCBteXNxbGQ9JWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMyAoJWxsdSBNaUIpOiBhdmFpbGFibGU9JWxsdSBNaUIsIHRvdGFsPSVsbHUgTWlCLCB1c2VkPSUuMmYlJSwgbXlzcWxkPSVsbHUgTWlCAFRoZSBtZW1iZXIgJXM6JXUsIHdpdGggVVVJRDogJXMsIHdhcyBzZXQgYXMgdGhlIHNpbmdsZSBwcmVmZXJyZWQgY29uc2Vuc3VzIGxlYWRlci4AU29tZXRoaW5nIHdlbnQgd3JvbmcgdHJ5aW5nIHRvIHNldCB0aGUgbWVtYmVyICVzOiV1LCB3aXRoIFVVSUQ6ICVzLCBhcyB0aGUgc2luZ2xlIHByZWZlcnJlZCBjb25zZW5zdXMgbGVhZGVyLiBQbGVhc2UgcXVlcnkgdGhlIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9jb21tdW5pY2F0aW9uX2luZm9ybWF0aW9uIHRhYmxlIHRvIHNlZSB3aGV0aGVyIHRoZSBvcGVyYXRpb24gdG9vayBlZmZlY3QsIGkuZS4gd2hldGhlciB0aGUgcHJlZmVycmVkIGNvbnNlbnN1cyBsZWFkZXIgbWF0Y2hlcyB0aGUgY3VycmVudCBwcmltYXJ5LiBJZiBub3QsIGNvbnNpZGVyIGVsZWN0aW5nIGEgZGlmZmVyZW50IHByaW1hcnkgdG8gdHJ5IGFnYWluLiBQbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBhbmQgR0NTX0RFQlVHX1RSQUNFIGZvciBtb3JlIGluZm9ybWF0aW9uIHRoYXQgbWF5IGhlbHAgdW5kZXJzdGFuZGluZyB3aGF0IHdlbnQgd3JvbmcuAEFsbCBtZW1iZXJzIHdlcmUgc2V0IGFzIGNvbnNlbnN1cyBsZWFkZXJzLgBTb21ldGhpbmcgd2VudCB3cm9uZyB0cnlpbmcgdG8gc2V0IGFsbCBtZW1iZXJzIGFzIGNvbnNlbnN1cyBsZWFkZXJzLiBQbGVhc2UgcXVlcnkgdGhlIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9jb21tdW5pY2F0aW9uX2luZm9ybWF0aW9uIHRhYmxlIHRvIHNlZSB3aGV0aGVyIHRoZSBvcGVyYXRpb24gdG9vayBlZmZlY3QsIGkuZS4gd2hldGhlciB0aGUgY29uc2Vuc3VzIGxlYWRlcnMgbWF0Y2ggYWxsIG1lbWJlcnMuIElmIG5vdCwgY29uc2lkZXIgcmVzZXR0aW5nIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIHByb3RvY29sIHRvIGEgdmVyc2lvbiA8IDguMC4yMiwgb3Igc3dpdGNoIHRvIHNpbmdsZS1wcmltYXJ5IG1vZGUgYW5kIGJhY2sgYWdhaW4gdG8gbXVsdGktcHJpbWFyeSBtb2RlLCB0byB0cnkgYWdhaW4uIFBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGFuZCBHQ1NfREVCVUdfVFJBQ0UgZm9yIG1vcmUgaW5mb3JtYXRpb24gdGhhdCBtYXkgaGVscCB1bmRlcnN0YW5kaW5nIHdoYXQgd2VudCB3cm9uZy4AVGhpcyBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fcGF4b3Nfc2luZ2xlX2xlYWRlciBvcHRpb24gdmFsdWUgb2YgJyVkJyB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCdzIHZhbHVlICgnJWQnKS4gVGhpcyBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEludmFsaWQgYW5kL29yIGNvcnJ1cHRlZCBtdWx0aSBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBpbiBVc2VyX2F0dHJpYnV0ZXMgY29sdW1uIGluIG15c3FsLnVzZXIgdGFibGUuICIlcyIuAFBsdWdpbiAnJS0uMTkycycgaXMgbm90IGxvYWRlZDsgSWdub3JpbmcgdXNlcgAlczogVGhlIGNoYXJhY3RlciBzZXQgJXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyAlcyBpbnN0ZWFkLgAlczogJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCAlcy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nICVzIHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAE1pc3NpbmcgZGF0YSBkaXJlY3RvcnkgZm9yIElDVSByZWd1bGFyIGV4cHJlc3Npb25zOiAlcy4ATW9yZSB0aGFuIDkwJSUgb2YgZmlsZXMgb3BlbmVkIG91dCBvZiB0aGUgaW5ub2RiX29wZW5fZmlsZXMgbGltaXQgYXJlIGZpbGVzIHRoYXQgYXJlIG5vdCBlYXN5IHRvIGNsb3NlLiBUaGUgcGVyZm9ybWFuY2Ugb2Ygc3lzdGVtIG1heSBkZWdyYWRlLiBDb25zaWRlciBpbmNyZWFzaW5nIHZhbHVlIG9mIHRoZSBpbm5vZGJfb3Blbl9maWxlcyBzeXN0ZW0gdmFyaWFibGUuIFRoZXJlIGFyZSAlenUgc3VjaCBmaWxlcyBvcGVuZWQgb3V0IG9mIHRoZSB0b3RhbCBsaW1pdCBmb3IgYWxsIGZpbGVzIG9wZW5lZCBvZiAlenUuAFRyeWluZyB0byBvcGVuIGEgZmlsZSBmb3IgJWxsZCBzZWNvbmRzLiBDb25maWd1cmF0aW9uIG9ubHkgYWxsb3dzIGZvciAlenUgb3BlbiBmaWxlcy4gQ29uc2lkZXIgc2V0dGluZyBpbm5vYmFzZV9vcGVuX2ZpbGVzIGhpZ2hlci4AQ29ubmVjdGlvbiBjbG9zZWQuIEdsb2JhbCBjb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBDb25uZWN0aW9uIGNsb3NlZC4gQ29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4AQXVkaXQgTG9nIGlzIGRpc2FibGVkLiBFbmFibGUgaXQgd2l0aCBhdWRpdF9sb2dfZGlzYWJsZSA9IGZhbHNlLgBPcHRpb24gLS10bHMtdmVyc2lvbiBvciAtLWFkbWluLXRscy12ZXJzaW9uIGlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlICVzLgBSZWxheSBsb2cgcmVjb3Zlcnkgb24gY2hhbm5lbCB3aXRoIEdUSURfT05MWT0xLiBUaGUgY2hhbm5lbCB3aWxsIHN3aXRjaCB0byBhIG5ldyByZWxheSBsb2cgYW5kIHRoZSBHVElEIHByb3RvY29sIHdpbGwgYmUgdXNlZCB0byByZXBsaWNhdGUgdW5hcHBsaWVkIHRyYW5zYWN0aW9ucy4ATnVtYmVyIG9mIFNUQU5EQllfU0VSVkVSIHZhbHVlcyBleGNlZWRlZCBtYXhpbXVtIGxpbWl0IG9mIDY0LgBTb3VyY2Uga2V5cmluZyBkb2VzIG5vdCBoYXZlIGFueSBrZXlzIHRvIG1pZ3JhdGUuAENhbm5vdCBwZXJzaXN0IFNFTlNJVElWRSBzeXN0ZW0gdmFyaWFibGVzIGJlY2F1c2Uga2V5cmluZyBjb21wb25lbnQgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZSBhbmQgcGVyc2lzdF9zZW5zaXRpdmVfdmFyaWFibGVzX2luX3BsYWludGV4dCBpcyBzZXQgdG8gT0ZGLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQga2V5cmluZyBzZXJ2aWNlcyBhcmUgYWN0aXZlIGFuZCByZXF1aXJlZCBrZXlzIGFyZSBhdmFpbGFibGUuAENhbm5vdCBpbnRlcnByZXQgcGVyc2lzdGVkIFNFTlNJVElWRSBzeXN0ZW0gdmFyaWFibGVzLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQga2V5cmluZyBzZXJ2aWNlcyBhcmUgYWN0aXZlIGFuZCByZXF1aXJlZCBrZXlzIGFyZSBhdmFpbGFibGUuAEtleXJpbmcgaGFzIHRvIGJlIGxvYWRlZCB0aHJvdWdoIG1hbmlmZXN0IGZpbGUgaW4gb3JkZXIgdG8gc3VwcG9ydCBzZWN1cmUgc3RvcmFnZSBmb3IgcGVyc2lzdGVkIHZhcmlhYmxlcwBDb3VsZCBub3QgZmluZCBtYXN0ZXIga2V5ICVzIGluIGtleXJpbmcAQSBuZXcgbWFzdGVyIGtleSAlcyBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkAEZhaWxlZCB0byBlbmNyeXB0ICVzIHVzaW5nICVzAEZhaWxlZCB0byBkZWNyeXB0ICVzIHVzaW5nICVzAFBlcnNpc3RpbmcgU0VOU0lUSVZFIHZhcmlhYmxlcyBpbiBlbmNyeXB0ZWQgZm9ybSByZXF1aXJlcyBrZXlyaW5nIGNvbXBvbmVudCBsb2FkZWQgdGhyb3VnaCBtYW5pZmVzdCBmaWxlLgBVc2luZyBqZW1hbGxvYy5kbGwgZm9yIG15X21hbGxvYyBhbmQgdXQ6Om1hbGxvYyBldGMuACVzLgAlcy4AJXMuAFBhc3N3b3JkIGZvciB0aGUgYWNjb3VudCAnJS0uNDhzJ0AnJS0uNjRzJyBoYXMgZXhwaXJlZC4gVG8gbG9nIGluLCBlaXRoZXIgY2hhbmdlIGl0IHVzaW5nIGEgY2xpZW50IHRoYXQgc3VwcG9ydHMgZXhwaXJlZCBwYXNzd29yZHMgb3Igc2VuZCB0aGUgY2hhbmdlIHJlcXVlc3QgdG8gYW4gYWRtaW5pc3RyYXRvci4AVGhyZWFkIHBvb2wgcGx1Z2luIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggcGFyYW1ldGVyczogJXMAdGhyZWFkX3Bvb2xfZGVkaWNhdGVkX2xpc3RlbmVycyBjYW5ub3QgYmUgc2V0IHVubGVzcyB0aHJlYWRfcG9vbF9tYXhfdHJhbnNhY3Rpb25zX2xpbWl0ID4gMAAlcwAlcwBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBlbXB0eSwgd2hpY2ggaW5kaWNhdGVzIGl0IHdhcyBub3QgZ2VuZXJhdGVkIGJ5IElubm9EQiBvciBiZWNvbWUgY29ycnVwdGVkLiBQbGVhc2UgcmVzdG9yZSB0aGUgY29ycmVjdCBmaWxlIG9yIHRyeSByZWNvdmVyaW5nIHdpdGhvdXQgdGhlIHJlZG8gZmlsZXMsIGluIHJlYWQtb25seSBtb2RlLCBieSBwcm92aWRpbmcgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9Ni4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgaXMgc21hbGxlciB0aGFuICVsbHUgYnl0ZXMsIHdoaWNoIGluZGljYXRlcyBpdCB3YXMgbm90IGdlbmVyYXRlZCBieSBJbm5vREIgb3IgYmVjb21lIGNvcnJ1cHRlZC4gUGxlYXNlIHJlc3RvcmUgdGhlIGNvcnJlY3QgZmlsZS4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgaXMgbGFyZ2VyIHRoYW4gJWxsdSBieXRlcywgd2hpY2ggaW5kaWNhdGVzIGl0IHdhcyBub3QgZ2VuZXJhdGVkIGJ5IElubm9EQiBvciBiZWNvbWUgY29ycnVwdGVkLiBQbGVhc2UgcmVzdG9yZSB0aGUgY29ycmVjdCBmaWxlLgBGYWlsZWQgdG8gcmVhZCBoZWFkZXIgb2YgdGhlIHJlZG8gbG9nIGZpbGUgJXMALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIHJlZG8gbG9nIGRpcmVjdG9yeSAlcyBoYXMgcmVkbyBsb2cgZmlsZXMgaW5zaWRlLiBBYm9ydGluZy4ARmFpbGVkIHRvIGxpc3QgcmVkbyBsb2cgZmlsZXMgaW4gdGhlIHJlZG8gbG9nIGRpcmVjdG9yeSAlcwBOZWl0aGVyIGZvdW5kICVzIHN1YmRpcmVjdG9yeSwgbm9yICVzKiBmaWxlcyBpbiAlcwBDYW5ub3QgcmVzdG9yZSBjbG9uZWQgZGF0YSBkaXJlY3RvcnksIElubm9EQiBydW5uaW5nIGluIHJlYWQtb25seSBtb2RlIQBFcnJvciAlZCBlbmNvdW50ZXJlZCB3aGVuIHdyaXRpbmcgdG8gdGhlIHJlZG8gbG9nIGZpbGU6ICVzLgBSZWRvIGxvZyB3cml0ZXIgaXMgd2FpdGluZyBmb3IgYSBuZXcgcmVkbyBsb2cgZmlsZS4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAEZvdW5kIGNoZWNrcG9pbnQgTFNOICVsbHUgaW4gYSByZWRvIGxvZyBmaWxlICVzLCBidXQgdGhlIGZpbGUgcmVwcmVzZW50cyByYW5nZSBvZiBMU04gdmFsdWVzIFslbGx1LCAlbGx1KSwgc28gdGhlIGZpbGUgaXMgY29ycnVwdGVkLgBSZWRvIGxvZyBpcyBydW5uaW5nIG91dCBvZiBmcmVlIHNwYWNlLCBwYXVzaW5nIHVzZXIgdGhyZWFkcy4uLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AUmVkbyBsb2cgcmVjbGFpbWVkIHNvbWUgZnJlZSBzcGFjZSwgcmVzdW1pbmcgdXNlciB0aHJlYWRzLgBJZ25vcmVkIGRlcHJlY2F0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaW5ub2RiX2xvZ19maWxlX3NpemUuIFVzZWQgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAElnbm9yZWQgZGVwcmVjYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwLiBVc2VkIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSBpbnN0ZWFkLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIHdoZW4gaW5ub2RiLWZvcmNlLXJlY292ZXJ5ID4gMC4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyBpbiByZWFkLW9ubHkgbW9kZSAoLS1pbm5vZGItcmVhZC1vbmx5KS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyBvbiBjbG9uZWQgZGF0YSBkaXJlY3RvcnkuIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgYmVjYXVzZSB0aGV5IGFyZSBtYXJrZWQgYXMgdW5pbml0aWFsaXplZC4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyB3aGVuIHRoZSByZWRvIGxvZyBpcyBjb3JydXB0ZWQuIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgd2hlbiB0aGVyZSBpcyBub24tcGVyc2lzdGVkIEREIG1ldGFkYXRhIGluIHJlZG8uIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMsIGJlY2F1c2UgSW5ub0RCIGZhaWxlZCB0byByZWFjaCBzdGF0ZSBpbiB3aGljaCByZWRvIGxvZyBpcyBsb2dpY2FsbHkgZW1wdHkuIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAEZhaWxlZCB0byByZXNpemUgdGhlIHJlZG8gbG9nIHN5bmNocm9ub3VzbHksIGJlY2F1c2UgSW5ub0RCIGZhaWxlZCB0byByZWFjaCBzdGF0ZSBpbiB3aGljaCByZWRvIGxvZyBpcyBsb2dpY2FsbHkgZW1wdHkuIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAFRoZSByZWRvIGxvZyBmaWxlICVzIGNvbWVzIGZyb20gb3RoZXIgZGF0YSBkaXJlY3RvcnkgdGhhbiByZWRvIGxvZyBmaWxlICVzLgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBoYXMgaW52YWxpZCBzdGFydF9sc24gJWxsdS4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgaGFzIHN0YXJ0X2xzbiAlbGx1IGJ1dCBleHBlY3RlZCAlbGx1IChlbmRfbHNuIG9mIHRoZSBwcmV2aW91cyByZWRvIGxvZyBmaWxlKS4ATWlzc2luZyByZWRvIGxvZyBmaWxlICVzICh3aXRoIHN0YXJ0X2xzbiA9ICVsbHUpLgBUaGUgbGF0ZXN0IGZvdW5kIGNoZWNrcG9pbnQgaXMgYXQgbHNuID0gJWxsdSBpbiByZWRvIGxvZyBmaWxlICVzLgBVc2VyIGhhcyBzZXQgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IHRvICVsbHVNLgBSZWRvIGxvZyBoYXMgYmVlbiByZXF1ZXN0ZWQgdG8gcmVzaXplIGZyb20gJWxsdU0gdG8gJWxsdU0uAFJlZG8gbG9nIHJlc2l6ZSBoYXMgYmVlbiBjYW5jZWxsZWQuAFJlZG8gbG9nIGhhcyBiZWVuIHJlc2l6ZWQgdG8gJWxsdU0uAFVwZ3JhZGluZyByZWRvIGxvZzogJWxsdU0sIExTTj0lbGx1LgBNYXJrZWQgdGhlIGN1cnJlbnQgcmVkbyBsb2cgZmlsZSAlcyBhcyBpbmNvbXBsZXRlLgBGYWlsZWQgdG8gcmVtb3ZlIHJlZG8gbG9nIGZpbGUgJXMuAEZhaWxlZCB0byByZW5hbWUgJXMgd2hlbiBjcmVhdGluZyByZWRvIGxvZyBmaWxlICVzIChlcnJvcjogJWQpAFJlZG8gbG9nIGZpbGVzIGNyZWF0ZWQgYnkgdW5rbm93biBjcmVhdG9yICVzLgBGb3VuZCBleGlzdGluZyByZWRvIGxvZyBmaWxlcywgYnV0IGF0IGxlYXN0IG9uZSBpcyBtaXNzaW5nLiBJdCBpcyB1bmtub3duIGlmIHJlY292ZXJ5IGNvdWxkIHJlYWNoIHBoeXNpY2FsbHkgY29uc2lzdGVudCBzdGF0ZS4gUGxlYXNlIGNvbnNpZGVyIHJlc3RvcmluZyBmcm9tIGJhY2t1cCBvciBwcm92aWRpbmcgLS1pbm5vZGItZm9yY2UtcmVjb3ZlcnkgPiAwLgBGb3VuZCByZWRvIGxvZyBmaWxlICVzIHdoaWNoIGhhcyBmb3JtYXQgKHYlbHUpIGFuZCBpcyBzdG9yZWQgb3V0c2lkZSAjaW5ub2RiX3JlZG8uAEZvdW5kIHJlZG8gbG9nIGZpbGUgJXMgd2hpY2ggaGFzIGZvcm1hdCAodiVsdSkgYW5kIGlzIHN0b3JlZCBpbnNpZGUgI2lubm9kYl9yZWRvLgBGb3VuZCByZWRvIGxvZyBmaWxlcyB3aXRoIGRpZmZlcmVudCBmb3JtYXRzOiAlcyBoYXMgZm9ybWF0IHYlbHUsICVzIGhhcyBmb3JtYXQgdiVsdS4ATWlzc2luZyBpYl9sb2dmaWxlMCBpbiB0aGUgZGlyZWN0b3J5ICVzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBzZXJ2aWNlcyByZXF1aXJlZCB0byBoYW5kbGUgcmVkbyBsb2cgUEZTIHRhYmxlcy4ARmFpbGVkIHRvIGNyZWF0ZSByZWRvIGxvZyBQRlMgdGFibGVzLgBUcnVuY2F0aW5nIHJlZG8gbG9nIGZpbGUgJXMuLi4ARmFpbGVkIHRvIHJlc2l6ZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcyB0byAlbGx1IE1CICglcykuAEZhaWxlZCB0byByZW1vdmUgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMuAEZhaWxlZCB0byByZW5hbWUgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMgdG8gJXMuAEZhaWxlZCB0byBtYXJrIHVudXNlZCByZWRvIGxvZyBmaWxlICVzIGFzIGluIHVzZSAoYnkgcmVuYW1pbmcgdG8gJXMpLgBGYWlsZWQgdG8gbWFyayByZWRvIGxvZyBmaWxlICVzIGFzIHVudXNlZCAoYnkgcmVuYW1pbmcgdG8gJXMpLgBPcHRpb24gaW5ub2RiX2RlZGljYXRlZF9zZXJ2ZXIgaXMgaWdub3JlZCBmb3IgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LCBiZWNhdXNlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSwgaW5ub2RiX2xvZ19maWxlX3NpemUgb3IgaW5ub2RiX2xvZ19maWxlc19pbl9ncm91cCBpcyBzcGVjaWZpZWQgZXhwbGljaXRseS4gUmVkbyBsb2cgY2FwYWNpdHk6ICVsbHVNLgBEZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBpbm5vZGJfbG9nX2ZpbGVfc2l6ZSBhbmQvb3IgaW5ub2RiX2xvZ19maWxlc19pbl9ncm91cCBoYXZlIGJlZW4gdXNlZCB0byBjb21wdXRlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eT0lbGx1LiBQbGVhc2UgdXNlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSBpbnN0ZWFkLgBUaGlzIG1lbWJlciB3YXMgdW5hYmxlIHRvIGxvZyB0aGUgVmlld19jaGFuZ2VfbG9nX2V2ZW50IGludG8gdGhlIGJpbmFyeSBsb2csIGhlbmNlIGl0IHdpbGwgbGVhdmUgdGhlIGdyb3VwLiBQbGVhc2UgY2hlY2sgdGhhdCB0aGVyZSBpcyBhdmFpbGFibGUgZGlzayBzcGFjZSBhbmQgYWRkIHRoZSBtZW1iZXIgYmFjayB0byB0aGUgZ3JvdXAuAEZvdW5kIGludmFsaWQgZXZlbnQgc2VxdWVuY2Ugd2hpbGUgcmVjb3ZlcmluZyBmcm9tIGJpbmFyeSBsb2cgZmlsZSAnJXMnLCBiZXR3ZWVuIHBvc2l0aW9ucyAlbGx1IGFuZCAlbGx1OiAlcy4gVGhlIHJlY292ZXJ5IHByb2Nlc3Mgd2FzIHN0b3BwZWQgZWFybHkgYW5kIG5vIHRyYW5zYWN0aW9uIHdhcyByZWNvdmVyZWQuIFNpZGUgZWZmZWN0cyBtYXkgYmUgdHJhbnNhY3Rpb25zIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIHRoZSBiaW5hcnkgbG9nIGFuZCB0aGUgc3RvcmFnZSBlbmdpbmVzLCBvciB0cmFuc2FjdGlvbnMga2VwdCBieSBzdG9yYWdlIGVuZ2luZXMgaW4gYSBwcmVwYXJlZCBzdGF0ZSAocG9zc2libHkgaG9sZGluZyBsb2NrcykuIEVpdGhlciBmaXggdGhlIGlzc3VlcyB3aXRoIHRoZSBiaW5hcnkgbG9nIG9yLCB0byByZWxlYXNlIHBvc3NpYmx5IGFjcXVpcmVkIGxvY2tzLCBkaXNhYmxlIHRoZSBiaW5hcnkgbG9nIGR1cmluZyBzZXJ2ZXIgcmVjb3ZlcnkuIE5vdGUgdGhhdCBkaXNhYmxpbmcgdGhlIGJpbmFyeSBsb2cgbWF5IGxlYWQgdG8gbG9zcyBvZiB0cmFuc2FjdGlvbnMgdGhhdCB3ZXJlIGFscmVhZHkgYWNrbm93bGVkZ2VkIGFzIHN1Y2Nlc3NmdWwgdG8gY2xpZW50IGNvbm5lY3Rpb25zIGFuZCBtYXkgaGF2ZSBiZWVuIHJlcGxpY2F0ZWQgdG8gb3RoZXIgc2VydmVycyBpbiB0aGUgdG9wb2xvZ3kuAFN0b3JhZ2UgZW5naW5lcyBmYWlsZWQgdG8gcmVjb3ZlciBvbmUgb3IgbW9yZSB0cmFuc2FjdGlvbnMuIFRoZSByZWNvdmVyeSBwcm9jZXNzIHdhcyBzdG9wcGVkIGVhcmx5LCBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBmb3IgdGhlIGRldGFpbHMgb24gZmFpbGVkIHRyYW5zYWN0aW9ucy4gU2lkZSBlZmZlY3RzIG1heSBiZSB0cmFuc2FjdGlvbnMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGJldHdlZW4gdGhlIGJpbmFyeSBsb2cgYW5kIHRoZSBzdG9yYWdlIGVuZ2luZXMsIG9yIHRyYW5zYWN0aW9ucyBrZXB0IGJ5IHN0b3JhZ2UgZW5naW5lcyBpbiBhIHByZXBhcmVkIHN0YXRlIChwb3NzaWJseSBob2xkaW5nIGxvY2tzKS4gRWl0aGVyIGZpeCB0aGUgaXNzdWVzIHdpdGggdGhlIHN0b3JhZ2UgZW5naW5lIChvdXQtb2YtbWVtb3J5LCBubyBkaXNrIHNwYWNlLCBldGMpIG9yLCB0byByZWxlYXNlIHBvc3NpYmx5IGFjcXVpcmVkIGxvY2tzIGhlbGQgYnkgWEEgdHJhbnNhY3Rpb25zLCBkaXNhYmxlIHRoZSBiaW5hcnkgbG9nIGR1cmluZyBzZXJ2ZXIgcmVjb3ZlcnkgYW5kIGNoZWNrIGNvbnNpc3RlbmN5IGJldHdlZW4gc3RvcmFnZSBlbmdpbmVzIGFuZCBiaW5hcnkgbG9nIGZpbGVzLgBDcmFzaCByZWNvdmVyeSBmaW5pc2hlZCBpbiAlcyBlbmdpbmUuICVzAEZhaWxlZCB0byBjb21taXQgJXMgaW4gJXMsIHdpdGggZmFpbHVyZSBjb2RlICVzLgBGYWlsZWQgdG8gcm9sbGJhY2sgJXMgaW4gJXMsIHdpdGggZmFpbHVyZSBjb2RlICVzLgBGYWlsZWQgdG8gcHJlcGFyZSAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAENhbm5vdCByZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZCBieSBhbm90aGVyIGNvbXBvbmVudC4AQ2Fubm90IHVucmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4AQ2Fubm90IHJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkLgBDYW5ub3QgdW5yZWdpc3RlciBmdW5jdGlvbiAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBJbnZhbGlkIGFyZ3VtZW50cyB0byBmdW5jdGlvbiAnJXMnLiBFeHBlY3RlZCB2YWx1ZXM6ICVzLgBJbnZhbGlkIGFsZ29yaXRobSB2YWx1ZSAnJS4yMHMnIGluIGZ1bmN0aW9uICVzLgBJbnZhbGlkIGtleSBsZW5ndGggJyVkJyBmb3IgZnVuY3Rpb24gJyVzJyB3aXRoIGFsZ29yaXRobSAnJS4yMHMnLiBQbGVhc2UgcHJvdmlkZSBhIHZhbHVlIGJldHdlZW4gWyVkLCAlZF0uAEZhaWxlZCB0byBnZW5lcmF0ZSBwcml2YXRlIGtleSBvZiBsZW5ndGggJyVkJyB3aXRoIGFsZ29yaXRobSAnJS4yMHMnIGluIGZ1bmN0aW9uICclcycuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBGYWlsZWQgdG8gZ2VuZXJhdGUgcHVibGljIGtleSB3aXRoIGFsZ29yaXRobSAnJS4yMHMnIGZvciBnaXZlbiBwcml2YXRlIGtleSBpbiBmdW5jdGlvbiAnJXMnLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4ASW52YWxpZCBkYXRhIGxlbmd0aCAnJWQnIChpbiBieXRlcykgZm9yIGZ1bmN0aW9uICclcycgd2l0aCBhbGdvcml0aG0gJyUuMjBzJy4gVGhlIG1heGltdW0gc3VwcG9ydCBkYXRhIGxlbmd0aCBmb3IgZ2l2ZW4gcHJpdmF0ZSBrZXkgaXMgJWQgKGluIGJ5dGVzKS4AQ291bGQgbm90IGVuY3J5cHQgZGF0YSBpbiBmdW5jdGlvbiAnJXMnIHVzaW5nIGFsZ29yaXRobSAnJS4yMHMnLiBEYXRhIGxlbmd0aCB3YXMgJyVkJyBieXRlcy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAENvdWxkIG5vdCBkZWNyeXB0IGRhdGEgaW4gZnVuY3Rpb24gJyVzJyB1c2luZyBhbGdvcml0aG0gJyUuMjBzJy4gRGF0YSBsZW5ndGggd2FzICclZCcgYnl0ZXMuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBDb3VsZCBub3Qgc2lnbiBkYXRhIGluIGZ1bmN0aW9uICclcycgdXNpbmcgYWxnb3JpdGhtICclLjIwcycgYW5kIGRpZ2VzdCB0eXBlICclLjIwcycuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4AUmVjZWl2ZWQgT3BlblNTTCBlcnJvciBpbiBmdW5jdGlvbiAnJXMnIGZvciBhbGdvcml0aG0gJyVzJzogJyVzJwBJbiBmdW5jdGlvbiAnJXMnIHdpdGggYWxnb3JpdGhtICclcyc6IGluc3VmZmljaWVudCBvdXRwdXQgYnVmZmVyIGxlbmd0aCAnJXp1Jy4gUmVxdWlyZWQgbGVuZ3RoICclenUnLgAlcyVzAFNldHRpbmcgc2Vzc2lvbiB2YWx1ZXMgZm9yIHN5c3RlbSB2YXJpYWJsZXMgb25seSBtYWtlcyBzZW5zZSBpbiBhIHVzZXIgc2Vzc2lvbiAoZmFpbGVkIHRvIHNldCAnJS4yNTZzJykuAEJ1aWxkSURbc2hhMV09JXMARmFpbGVkIHRvIHJlZ2lzdGVyIGR5bmFtaWMgcHJpdmlsZWdlICVzLgBSZWRvIGxvZyB3cml0ZXIgaXMgd2FpdGluZyBmb3IgJXMgcmVkbyBsb2cgY29uc3VtZXIgd2hpY2ggaXMgY3VycmVudGx5IHJlYWRpbmcgTFNOPSVsbHUgcHJldmVudGluZyByZWNsYW1hdGlvbiBvZiBzdWJzZXF1ZW50IHBvcnRpb24gb2YgdGhlIHJlZG8gbG9nLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AJXMAUmVjb3Zlcnk6IEdlbmVyYXRpbmcgaW5kZXggaW5mb3JtYXRpb24gZm9yIElOU1RBTlQgRERMIFRhYmxlIGluIDguMC4yOSBmb3JtYXQARmFpbGVkIHRvIHN3aXRjaCByZXNvdXJjZSBncm91cC4gJXMARmFpbGVkIHRvIHN3aXRjaCByZXNvdXJjZSBncm91cC4gQ291bGQgbm90IGFjcXVpcmUgcmVzb3VyY2UgZ3JvdXBzIGdsb2JhbCBsb2NrLgBGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiBDb3VsZCBub3QgYWNxdWlyZSBsb2NrIG9uIHJlc291cmNlIGdyb3VwICVzLgBGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiBVbmFibGUgdG8gYXBwbHkgcmVzb3VyY2UgZ3JvdXAgY29udHJvbGxlciAlcy4ARmFpbGVkIHRvIGNsZWFyIGluc3RhbnQgZHJvcCBjb2x1bW4gbWV0YWRhdGEgZm9yIHRhYmxlICVzAENhbm5vdCBvcGVuIHNpZ25pbmcga2V5IGZpbGUgJXMuAE91dCBvZiBtZW1vcnkhIENhbm5vdCBjcmVhdGUgcHJpdmF0ZSBrZXkuAENhbm5vdCByZWFkIHNpZ25pbmcga2V5IGZpbGUgJXMuAEluY29tcGxldGUga2V5OiBtaXNzaW5nIE5hbWUvVHlwZSBmb3IgdGhlIEtleTogJXMuAER1cGxpY2F0ZSBrZXkgZm91bmQgaW4ga2V5cmluZyB3aXRoIE5hbWU6ICVzIGFuZCBPd25lcjogJXMuAEVycm9yIHBhcnNpbmcgSlNPTiByZXNwb25zZSAlcy4ASW52YWxpZCBKU09OIHJlc3BvbnNlIQBIVFRQIHJlcXVlc3QgZmFpbGVkIHdpdGggZXJyb3I6ICclcycAVmFyaWFibGUgdGhyZWFkX3Bvb2wuJXMgd2FzIHVwZGF0ZWQ6ICVzACVzAFN0YXR1cyBjb2RlICV1OiBDb21wbGV0ZWQAU3RhdHVzIGNvZGUgJXU6ICV1JSUgY29tcGxldGUAU3RhdHVzIGNvZGUgJXU6ICVzAEludmFsaWQgdmFsdWUgc2V0IHRvIHRocmVhZF9wb29sX3F1ZXJ5X3RocmVhZHNfcGVyX2dyb3VwLiBWYWxpZCB2YWx1ZSByYW5nZSBpcyAldSAtICV1LgBRdWVyeSB0aHJlYWRzIGNvdW50KCV1KSBleGNlZWRzIHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQoJXUpIHBlciBncm91cC4gUGxlYXNlIHVzZSBxdWVyeSB0aHJlYWRzIGNvdW50IHBlciBncm91cCBzbWFsbGVyIG9yIGVxdWFsIHRvIG1heCB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0IHBlciBncm91cABGb3VuZCBwYWdlIHR5cGUgbWlzbWF0Y2guIEV4cGVjdGVkICV1LCBmb3VuZCAldSwgaW4gcGFnZTogc3BhY2VfaWQ9JWx1IHBhZ2Vfbm89ICVsdQBwcmVhZGVyOiB0aHJlYWRfaWQ9JXp1LCBuX3RocmVhZHM9JXp1LCBuX2N0eD0lenUsIG9uZV9yYW5nZV9wZXJfdGhyZWFkPSVzLCBuX2luZGV4PSV6dSwgaW5kZXhfbGlzdD0lcywgZXJyPSV6dQBidWxrbG9hZDogc3BhY2VfaWQ9JXp1LCB0YWJsZT0lcywgaW5kZXg9JXMsIGhlaWdodD0lenUsIG5fZXh0ZW50cz0lenUsIG5fcGFnZXM9JXp1AGJ1bGtmbHVzaGVyOiBzbGVlcF9jb3VudD0lenUsIHNsZWVwX2R1cmF0aW9uPSV6dSBtaWxsaXNlY29uZHMsIHRvdGFsX3NsZWVwPSV6dSBtaWxsaXNlY29uZHMsIHBhZ2VzX2ZsdXNoZWQ9JXp1ACVzOiBPdmVyIDY3IHBlcmNlbnQgb2YgdGhlIGJ1ZmZlciBwb29sIChjdXJyX3NpemU9JXp1IE1CKSBpcyBvY2N1cGllZCBieSBsb2NrIGhlYXBzIG9yIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4IG9yIEJVRl9CTE9DS19NRU1PUlkgcGFnZXMuIENoZWNrIHRoYXQgeW91ciB0cmFuc2FjdGlvbnMgZG8gbm90IHNldCB0b28gbWFueSByb3cgbG9ja3MuIE1heWJlIHlvdSBzaG91bGQgbWFrZSB0aGUgYnVmZmVyIHBvb2wgYmlnZ2VyPy4gU3RhcnRpbmcgdGhlIElubm9EQiBNb25pdG9yIHRvIHByaW50IGRpYWdub3N0aWNzLgAlczogT3ZlciA5NSBwZXJjZW50IG9mIHRoZSBidWZmZXIgcG9vbCAoY3Vycl9zaXplPSV6dSBNQikgaXMgb2NjdXBpZWQgYnkgbG9jayBoZWFwcyBvciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleCBvciBCVUZfQkxPQ0tfTUVNT1JZIHBhZ2VzLiBDaGVjayB0aGF0IHlvdXIgdHJhbnNhY3Rpb25zIGRvIG5vdCBzZXQgdG9vIG1hbnkgcm93IGxvY2tzLiBNYXliZSB5b3Ugc2hvdWxkIG1ha2UgdGhlIGJ1ZmZlciBwb29sIGJpZ2dlcj8uIFdlIGludGVudGlvbmFsbHkgZ2VuZXJhdGUgYSBzZWcgZmF1bHQgdG8gcHJpbnQgYSBzdGFjayB0cmFjZSBvbiBMaW51eCEAJXM6IHRhYmxlPSVzLCBpbmRleD0lcywgbl91bmlxPSV6dSwgbl9maWVsZHM9JXp1LCBsaHM9KCVzKSwgcmhzPSglcykARmFpbGVkIHRvIGFwcGx5IHJvdyBldmVudCB3aXRoICVkIGNvbHVtbnMsIG9yaWdpbmF0aW5nIGZyb20gYSBzZXJ2ZXIgb2YgdmVyc2lvbiAlcyBvbiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJywgd2hpY2ggaGFzICVkIGNvbHVtbnMsIG9uZSBvZiB3aGljaCBpcyBhIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleS4gUmVwbGljYXRpb24gaXMgdW5zdXBwb3J0ZWQgd2hlbiB0aGUgc291cmNlIHNlcnZlciBpcyBvbGRlciB0aGFuIDguMC4zMCwgdGhlIHJlcGxpY2EgdGFibGUgaGFzIGEgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5LCBhbmQgdGhlcmUgaXMgYSBkaWZmZXJlbmNlIGluIGNvbHVtbiBjb3VudCwgbm90IGNvdW50aW5nIHRoZSByZXBsaWNhJ3MgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5LiBBbGlnbiB0aGUgdGFibGUgc2NoZW1hcyBvbiBzb3VyY2UgYW5kIHJlcGxpY2EsIGFuZCByZXN0YXJ0IHJlcGxpY2F0aW9uLgBCdWxrIGV4ZWN1dG9yOiAlcwBCdWxrIGxvYWRlcjogJXMAVGhlIGZpcnN0IGZpbGUgYmVpbmcgbG9hZGVkIGNvbnRhaW5lZCBsZXNzIGxpbmVzIHRoYW4gdGhlIGlnbm9yZSBjbGF1c2UAQnVsayByZWFkZXI6ICVzAEJ1bGsgcmVhZGVyIGZhaWxlZCB0byBpbml0aWFsaXplIGxpYmN1cmwAQnVsayByZWFkZXIgZ290IGxpYmN1cmwgZXJyb3I6ICVzAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciByZXNwb25zZSBmcm9tIHNlcnZlcjogJWxkAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciBpbiBjb21tdW5pY2F0aW9uIHdpdGggc291cmNlIHNlcnZlciwgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzAE1pc3NpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGF0IHJvdyAlbGQgaW4gZmlsZSAlcy4gQWRkIE9QVElPTkFMTFkgdG8gdGhlIEVOQ0xPU0VEIEJZIGNsYXVzZSB0byBhbGxvdyB0aGlzIGlucHV0LgBUaGUgbnVtYmVyIG9mIGlucHV0IGNvbHVtbnMgdGhhdCBuZWVkIHRvIGJlIGJ1ZmZlcmVkIGZvciBwYXJzaW5nIGV4Y2VlZGVkIHByZWRlZmluZWQgYnVmZmVyIG1heCBzaXplIGZvciBmaWxlICclcycuAFRoZSBjb2x1bW4gZGF0YSB0aGF0IG5lZWRlZCB0byBiZSBjb3BpZWQgZHVlIHRvIGVzY2FwZWQgY2hhcmFjdGVycyBleGNlZWRlZCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwgY29weSBidWZmZXIgZm9yIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIHJvdyB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGVuZGluZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBOVUxMIGVzY2FwZSAoXE4pIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgY29sdW1uIHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnIHJlc3VsdGluZyBpbiBpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZS4ASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycATlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnACVzOiBMT0FEIEJVTEsgREFUQSB0aHJlYWQgZmFpbHVyZSAoZXJyPSVsdSksIHRhYmxlPSVzLCBpbmRleD0lcwAlczogRmFpbGVkIHRvIG1lcmdlIHN1Yi10cmVlcyBpbiBMT0FEIEJVTEsgREFUQSwgdGFibGU9JXMsIGluZGV4PSVzLCBkZXRhaWxzPSVzAExPQUQgQlVMSyBEQVRBOiBCdWZmZXIgcG9vbCBzaXplIGlzICV6dS4gUmVkdWNpbmcgY29uY3VycmVuY3kgZnJvbSAlenUgdG8gJXp1LiB0YWJsZT0lcy4AQysrIEV4Y2VwdGlvbiBjYXVnaHQgd2hpbGUgJXMgdGhlICVzIHBsdWdpbjogWyVzXQBSZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGFwcGVhcnMgdG8gYmUgY29ycnVwdGVkLiBPbiBHcm91cCBSZXBsaWNhdGlvbiBjaGFubmVsICclcycsIHNldHRpbmcgUkVRVUlSRV9UQUJMRV9QUklNQVJZX0tFWV9DSEVDSyB0byAnR0VORVJBVEUnIGlzIG5vdCBhbGxvd2VkLiBSdW4gUkVTRVQgUkVQTElDQSBBTEwgdG8gcmVzZXQgaXQuAFJlY29yZCBoYXMgYm90aCBpbnN0YW50IGFuZCB2ZXJzaW9uIGJpdCBzZXQuAFRoaXMgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgb3B0aW9uIHZhbHVlIG9mIDEgYW5kIGl0IGlzIHRyeWluZyB0byBqb2luIGEgZ3JvdXAgd2l0aCBDb21tdW5pY2F0aW9uIFByb3RvY29sIFZlcnNpb24gYmVsb3cgOC4wLjI3LiBJbiBvcmRlciB0byBqb2luIHRoaXMgZ3JvdXAsIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgdmFsdWUgbXVzdCBiZSBjb25maWd1cmVkIHRvIHRoZSB2YWx1ZSAwLiBUaGlzIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASWdub3JlZCB0aGUgaW5ub2RiLXJlZG8tbG9nLWNhcGFjaXR5IG9wdGlvbiBpbiB0aGUgSW5ub2RiIHJlYWQtb25seSBtb2RlLiBTZXJ2ZXIgaXMgdXNpbmcgYWN0aXZlIHJlZG8gbG9nIGZpbGVzLgBVbmV4cGVjdGVkIElOU1RBTlRMWSBBZGRlZCAvIERyb3BwZWQgY29sdW1uOiAnJXMnIGF0IHBvc2l0aW9uICVsdSBmb3IgVGFibGUgJyVzJywgSW5kZXggJyVzJyB3aGlsZSBnZXR0aW5nIFByaW1hcnkgS2V5IGZvciByb3cgbG9nZ2luZwAlcwBDb2x1bW4gbmFtZSAlcyBhbmQgaW50ZXJuYWxseSBnZW5lcmF0ZWQgSU5TVEFOVCBEUk9QIGNvbHVtbiBuYW1lICVzIGlzIGNhdXNpbmcgYSBjb25mbGljdC4ARmllbGQgbnVtYmVyOiAlbGx1IHRvbyBsYXJnZSwgVG90YWwgZmllbGRzIGluIFJlY29yZDogJXp1LgAlcwBUaGUgY29ubmVjdGlvbiBoYXMgdGltZWQgb3V0IGFmdGVyICVsdSByZXRyaWVzIGNvbm5lY3RpbmcgdG8gJyVzQCVzOiVkJyVzLCBhbmQgdGhlcmVmb3JlIHRoZSBNeVNRTCBzZXJ2ZXIgaXMgZ29pbmcgdG8gYXR0ZW1wdCBhbiBhc3luY2hyb25vdXMgcmVwbGljYXRpb24gY29ubmVjdGlvbiBmYWlsb3ZlciwgdG8gJyVzQCVzOiVkJwBUaGUgUmVwbGljYSB3aGljaCB3YXMgY29ubmVjdGVkIHRvIHNvdXJjZSAnJXM6JWQnLCBpcyBub3cgY29ubmVjdGVkIHRvIG5ldyBzb3VyY2UgJyVzOiVkJywgYnV0IHN0aWxsIGhhcyB0aGUgc2FtZSBzZXJ2ZXJfdXVpZCAlcy4AVGhlIHNlcnZlcl91dWlkIGZvciBzb3VyY2Ugc2VydmVyICclczolZCcgaGFzIGNoYW5nZWQgZnJvbSAlcyB0byAlcy4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgeW91IGhhdmUgY2hhbmdlZCBpdCBtYW51YWxseS4AVGhlIHNvdXJjZSBzZXJ2ZXIgaGFzIGNoYW5nZWQgZnJvbSAnJXM6JWQnIHdpdGggc2VydmVyX3V1aWQgJXMsIHRvICclczolZCcgd2l0aCBzZXJ2ZXJfdXVpZCAlcy4AUmVwbGljYSByZWNlaXZlciB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnIHdpdGggc2VydmVyX3V1aWQ9JXMsIHNlcnZlcl9pZD0lZC4gU3RhcnRpbmcgcmVwbGljYXRpb24gZnJvbSBmaWxlICclcycsIHBvc2l0aW9uICclcycuAFJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyB3aXRoIHNlcnZlcl91dWlkPSVzLCBzZXJ2ZXJfaWQ9JWQuIFN0YXJ0aW5nIEdUSUQtYmFzZWQgcmVwbGljYXRpb24uAExvYWRlcjo6YnVpbGRfYWxsKCk6IENvbXBsZXRlZCBidWlsZGluZyAlenUgaW5kZXhlcyBmb3Igb2xkX3RhYmxlPSVzLCBuZXdfdGFibGU9JXMsIGVycj0lenUuAEJ1aWxkZXI6OmZpbmlzaCgpOiBDb21wbGV0ZWQgYnVpbGRpbmcgaW5kZXg9JXMgb2YgdGFibGU9JXMsIGVycj0lenUuACVzOiAnJXMnIGlzIGEgdXNlciBkZWZpbmVkIGNvbGxhdGlvbi4gVXNlciBkZWZpbmVkIGNvbGxhdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBhIGNvbXBpbGVkIGNvbGxhdGlvbiBpbnN0ZWFkLgBCdWlsZGVyOjppbml0KCk6IEluaXRpYWxpemUgZm9yIGJ1aWxkaW5nIGluZGV4PSVzIG9mIHRhYmxlPSVzLCBuX3RocmVhZHM9JXp1LCBzb3J0IGJ1ZmZlciBzaXplPSV6dSBieXRlcywgaS9vIGJ1ZmZlciBzaXplPSV6dSBieXRlcy4AU0VMRUNUIENPVU5UKCopIEZST00gdGFibGU9JXMsIG5fdGhyZWFkcz0lenUsIG5fcGFydGl0aW9ucz0lenUuAEluZGV4IGxvZyB2ZXJzaW9uICV1IGRpZCBub3QgbWF0Y2guIE1heCBpbmRleCB2ZXJzaW9uIGlzICV1LiBSZWNvdmVyeSBjYW4ndCBjb250aW51ZS4gUGxlYXNlIG1ha2Ugc3VyZSBzZXJ2ZXIgaXMgbm90IHN0YXJ0aW5nIHVwIHdpdGggdGhlIGRhdGFkaXIgZ2VuZXJhdGVkIGluIGZ1dHVyZSB2ZXJzaW9uLgBNdWx0aXBsZSBrZXlyaW5nIGNvbXBvbmVudCBVUk5zICclcycgZm91bmQgaW4gbWFuaWZlc3QgZmlsZSAnJXMnLiBPbmx5IG9uZSBrZXlyaW5nIGNvbXBvbmVudCBjYW4gYmUgbG9hZGVkIGF0IGEgdGltZS4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaGFzIGJlZW4gc3RhcnRlZC4ATWluaW11bSByZWNvcmQgZmxhZyBpcyB3cm9uZ2x5IHNldCB0byByZWMgb24gcGFnZSAnJWx1JyBhdCBsZXZlbCAnJWx1JyBmb3IgaW5kZXggJyVzJyBvZiB0YWJsZSAnJXMnLgBNaW5pbXVtIHJlY29yZCBmbGFnIGlzIG5vdCBzZXQgdG8gZmlyc3QgcmVjIG9uIHBhZ2UgJyVsdScgYXQgbGV2ZWwgJyVsdScgZm9yIGluZGV4ICclcycgb2YgdGFibGUgJyVzJy4AU3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgc2xvdCAnJWQnIGZvciBjb21wb25lbnQgJyVzJy4AU3VjY2Vzc2Z1bGx5IGRlLXJlZ2lzdGVyZWQgc2xvdCAnJWQnIGZyb20gY29tcG9uZW50ICclcycuAENhbm5vdCBmcmVlIHJlc291cmNlcyBzdG9yZWQgYnkgY29tcG9uZW50ICclcycgaW4gdGhyZWFkIHdpdGggSUQ6ICclZCcuIENvbXBvbmVudCBmYWlsZWQgdG8gZnJlZSByZXF1aXJlZCByZXNvdXJjZXMuAFRyYW5zYWN0aW9uIElEOiAlbHUgZm91bmQgZm9yIHJlc3VycmVjdGluZyBpbnNlcnRzAFRyYW5zYWN0aW9uIElEOiAlbHUgZm91bmQgZm9yIHJlc3VycmVjdGluZyB1cGRhdGVzAElkZW50aWZpZWQgdGFibGUgSUQ6ICVsdSB0byBhY3F1aXJlIGxvY2sAQWNxdWlyZWQgbG9jayBvbiB0YWJsZSBJRDogJWx1LCBuYW1lOiAlcwBSZWNvcmRzIHJlYWQ6ICVsdSAtIFBhZ2VzIHJlYWQ6ICVsdQBUb3RhbCByZWNvcmRzIHJlc3VycmVjdGVkOiAlbHUgLSBUb3RhbCBwYWdlcyByZWFkOiAlbHUgLSBUb3RhbCB0YWJsZXMgYWNxdWlyZWQ6ICVsdQBSZXN1cnJlY3RlZCAlbHUgdHJhbnNhY3Rpb25zIGRvaW5nIGluc2VydHMuAFJlc3VycmVjdGVkICVsdSB0cmFuc2FjdGlvbnMgZG9pbmcgdXBkYXRlcy4ASW52YWxpZCBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcyc6ICVzLgBVbmtub3duIHVzZXIvdGVuYW5jeSAodXNlcjogJXMgdGVuYW5jeTogJXMpIGZvdW5kIGluIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJy4AVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3Igc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnIDogJXMuAENvdWxkIG5vdCBkb3dubG9hZCBJRERQIFB1YmxpYyBrZXkuIFBsZWFzZSBjaGVjayBpZiBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcycgaXMgdmFsaWQuAE5vbmUgb2YgdGhlIGdyb3VwcyBleHRyYWN0ZWQgZnJvbSBzZWN1cml0eSB0b2tlbiBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcyBmcm9tIGF1dGhlbnRpY2F0aW9uIHN0cmluZy4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBwcml2aWxlZ2UgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQuAENhbm5vdCB1bnJlZ2lzdGVyIHByaXZpbGVnZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBFcnJvciB3aGlsZSBleGVjdXRpbmcgVURGICVzLgBFcnJvciB3aGlsZSBleGVjdXRpbmcgVURGICVzOiAlcy4AJXMgZmFpbGVkLgAlcyBmYWlsZWQgd2l0aCAldS4ATG9jayBmYWlsZWQgYXQgJXMgOiAldS4ATG9jayBmcm9tICVzIDogJXUgZmFpbGVkIHRvIHVubG9jay4ATWFza2luZyBjb21wb25lbnQgZXJyb3I6ICclcycuACVzIGZhaWxlZC4AJXMgZmFpbGVkIGJlY2F1c2UgJXMuAENyZWF0aW9uIG9mIHJhbmRvbSBjb250ZXh0IGZhaWxlZC4AQ3JlYXRpb24gb2YgcmFuZG9tIGNvbnRleHQgZmFpbGVkIGJlY2F1c2UgJXMuAENhbm5vdCBhY2Nlc3MgJXMuJXMgdGFibGUuAENhbm5vdCByZWNvdmVyIGZyb20gZGV0ZWN0X29ubHkgZG91Ymxld3JpdGUgYnVmZmVyIGFzIHBhZ2UgJXUgZnJvbSBiYXRjaCBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHRlZC4ARGF0YWJhc2UgcGFnZSBjb3JydXB0aW9uIG9mIHRhYmxlc3BhY2UgJXMgc3BhY2VfaWQ6ICV1IHBhZ2VfbnVtOiAldS4gQ2Fubm90IHJlY292ZXIgaXQgZnJvbSB0aGUgZG91Ymxld3JpdGUgYnVmZmVyIGJlY2F1c2UgaXQgd2FzIHdyaXR0ZW4gaW4gZGV0ZWN0X29ubHktZG91Ymxld3JpdGUgbW9kZS4AaW5pdF9jb25uZWN0IHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIHVzZXI6ICVzIGhvc3Q6ICVzIGR1ZSB0byBtdWx0aS1mYWN0b3IgcmVnaXN0cmF0aW9uIHJlcXVpcmVkIHNhbmRib3hpbmcARXhlY3V0aW9uIG9mIGFsdGVyIHRhYmxlICVzICVzIGZhaWxlZCBiZWNhdXNlICVzLgBUUCBjb25uIChwb3J0OiBtYW5hZ2VkKGRlbHRhKSwgYWN0aXZlLCBvcGVuZWQsIGNsb3NlZCwgYWRkZWQsIGRyb3BwZWQpOiAlcwBTY2hlZHVsZWQgcnVuIG9mIHRhc2sgJXMgZmFpbGVkAEludmFsaWQgZmx1c2ggaW50ZXJ2YWwgc3BlY2lmaWVkOiAlbHUuIFZhbGlkIHZhbHVlcyBhcmUgMCAob2ZmKSBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJWQuIEFkanVzdGluZyB0byAlZABDb3VsZCBub3QgcHVyZ2UgYmluYXJ5IGxvZ3Mgc2luY2UgYW5vdGhlciBzZXNzaW9uIGlzIGV4ZWN1dGluZyBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAuIFdhaXQgZm9yIHRoYXQgc2Vzc2lvbiB0byByZWxlYXNlIHRoZSBsb2NrLgBNdWx0aS12YWx1ZXMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBNeVNRTCBmb3JtYXQ6ICVzAEhlYXAgcmVxdWlyZWQgdG8gY29udmVydCBjb2x1bW5zIGlzIG5vdCBwcmVzZW50LgBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRlOiBDYW5ub3QgZG93bmdyYWRlIGZyb20gJXUgdG8gJXUuIFRhcmdldCBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBpcyBsb3dlciB0aGFuIHRoZSBzZXJ2ZXIgZG93bmdyYWRlIHRocmVzaG9sZCAldS4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgdXBncmFkZTogQ2Fubm90IHVwZ3JhZGUgZnJvbSAldSB0byAldS4gVGFyZ2V0IE15U1FMIHNlcnZlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gdGhlIHNlcnZlciB1cGdyYWRlIHRocmVzaG9sZCAldS4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgdXBncmFkZTogQ2Fubm90IHVwZ3JhZGUgZnJvbSAldSB0byAldS4gVXBncmFkZSB0byBuZXh0IG1ham9yIHZlcnNpb24gaXMgb25seSBhbGxvd2VkIGZyb20gdGhlIGxhc3QgTFRTIHJlbGVhc2UsIHdoaWNoIHZlcnNpb24gJXUgaXMgbm90LgBJbnZhbGlkIE15U1FMIHNlcnZlciBkb3duZ3JhZGU6IENhbm5vdCBkb3duZ3JhZGUgZnJvbSAldSB0byAldS4gRG93bmdyYWRlIGlzIG9ubHkgcGVybWl0dGVkIGJldHdlZW4gcGF0Y2ggcmVsZWFzZXMuAEZhaWxlZCB0byBnZXQgdGhlIGRhdGEgZGljdGlvbmFyeSBwcm9wZXJ0eSAlcy4ARmFpbGVkIHRvIHNldCB0aGUgZGF0YSBkaWN0aW9uYXJ5IHByb3BlcnR5ICVzLgBTZXJ2ZXIgZG93bmdyYWRlIGZyb20gJyVkJyB0byAnJWQnICVzLgAlcyBpbmZvcm1hdGlvbiBzY2hlbWEgZnJvbSB2ZXJzaW9uICV1IHRvICV1LgAlcyBwZXJmb3JtYW5jZSBzY2hlbWEgZnJvbSB2ZXJzaW9uICV1IHRvICV1LgBWYWx1ZSBmb3Igb3B0aW9uICclcycgY29udGFpbnMgY2lwaGVyICclcycgdGhhdCBpcyBlaXRoZXIgYmxvY2tlZCBvciBkZXByZWNhdGVkIChhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UpLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4ARERMIGZhaWxlZCBhcyBCdWlsZGVyIGlzIGFscmVhZHkgZnJlZWQuIEJ1aWxkZXI6IHN0YXRlPSV1LCBlcnJvcl9zdGF0ZT0ldS4gSW5kZXg6IGlkPSV6dSwgbmFtZT0nJXMnLCBzcGFjZV9pZD0ldSwgcGFnZT0ldS4gVGFibGU6IG9sZF9uYW1lPSclcycsIG5ld19uYW1lPSclcycuAE1lbWJlciBpZGVudGlmaWVkICVzOiAnJXMnIGRvZXMgbm90IGV4aXN0IG9uIEdyb3VwIFJlcGxpY2F0aW9uIG1lbWJlcnNoaXAgZHVyaW5nICVzLgBEZXByZWNhdGVkICclcycgdXNlZCAlcyB0aW1lcywgbGFzdCB0aW1lIHVzZWQgJyVzJy4AV2FpdGluZyBmb3IgJXUgY29ubmVjdGlvbnMgdG8gYmUgY2xvc2VkLgBXYWl0aW5nIGZvciBUSERzIGluIHBhcnRpdGlvbiAldSB0byBiZSBjbG9zZWQsICV1IHN0aWxsIGxlZnQuICV1IFRIRHMgbGVmdCBpbiB0b3RhbCBmb3IgYWxsIHBhcnRpdGlvbnMuAEluZGV4ICVzIG9mICVzLiVzIGV4Y2VlZHMgbGltaXQgb2YgJWx1IGJ5dGVzIHBlciBjb2x1bW4uAEZhaWxlZCB0byB1cGRhdGUgZGF0YSBkaXJlY3RvcnkgZmxhZyBmb3IgZGQgdGFibGUgd2l0aCB0YWJsZXNwYWNlIGlkICclbGx1JyB3aGVuIGliZCBmaWxlIGZvciAnJXMnIGlzIG1vdmVkIHRvIG5ldyBsb2NhdGlvbiAnJXMnIGR1cmluZyBzZXJ2ZXIgc2h1dGRvd24AJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsIGZvdW5kIGF0ICclcycgb3V0c2lkZSBkZWZhdWx0IGRhdGEgZGlyZWN0b3J5LiBJdCBpcyBlaXRoZXIgbW92ZWQgb3IgaXMgY3JlYXRlZCB3aXRoICdEQVRBIERJUkVDVE9SWScAVXBvbiByZWNvbm5lY3Rpb24gd2l0aCB0aGUgcmVwbGljYSwgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBkdW1wIHRocmVhZCBmb3IgJXMgPCVzPiwgYW4gZXhpc3RpbmcgZHVtcCB0aHJlYWQgd2l0aCB0aGUgc2FtZSAlcyB3YXMgZGV0ZWN0ZWQuIFRoZSBzb3VyY2UgaXMgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIGR1bXAgdGhyZWFkICgldSksIHdoaWNoIGlzIG5vcm1hbCBhbmQgZXhwZWN0ZWQuAFRoZSB0cmFuc2FjdGlvbiAnJS0uMTkycycgd2lsbCBjb21taXQgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdCB0byBpdHMgc291cmNlIHRvIGZvbGxvdyB0aGUgZ3JvdXAgZ2xvYmFsIG9yZGVyLgBDYW4gbm90IG9wZW4gdGFibGUgYCVzYC5gJXNgOyBmdW5jdGlvbnMgaW4gY29uc3RyYWludHMsIHBhcnRpdGlvbnMsIG9yIHZpcnR1YWwgY29sdW1ucyBtYXkgaGF2ZSBmYWlsZWQuACVzAEZhaWxlZCB0byBjcmVhdGUgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpIHN0YXJ0ZWQuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpIHN0b3BwZWQuAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZCBoYXMgcmVjZWl2ZWQgS0lMTCByZXF1ZXN0LgBUaHJlYWRzIGFyZSB1bmFibGUgdG8gcmVzZXJ2ZSBzcGFjZSBpbiByZWRvIGxvZyB3aGljaCBjYW4ndCBiZSByZWNsYWltZWQgZHVlIHRvIHRoZSAnJXMnIGNvbnN1bWVyIHN0aWxsIGxhZ2dpbmcgYmVoaW5kIGF0IExTTiA9ICVsbHUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBUaGUgcmVkbyBsb2cgYXJjaGl2ZXIgaXMgYWJvcnRlZCBhcyBpdCB3YXMgbGFnZ2luZyBiZWhpbmQgYXQgTFNOID0gJWxsdSBhbmQgdW5hYmxlIHRvIGFkdmFuY2UgZm9yIG1vcmUgdGhhbiAyIHNlY29uZHMuIENvbnNpZGVyIGluY3JlYXNpbmcgdGhlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AVHJ5aW5nIHRvIGFkZCBvciBkcm9wIGNvbHVtbihzKSBpbiB0YWJsZSAnJXMnIGZvciB3aGljaCB0aGUgY3VycmVudCByZWNvcmQgc2l6ZSBpcyAlenUgd2hpY2ggaXMgbW9yZSB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSAoJXp1KSBmb3IgYSByZWNvcmQuIFRoZXJlZm9yZSBBREQgb3IgRFJPUCBjb2x1bW4gd2l0aCBBTEdPUklUSE0gPSBJTlNUQU5UIGlzIG5vdCBhbGxvd2VkLgBDYW5ub3QgYWRkICV6dSBmaWVsZChzKSBpbiB0YWJsZSAnJXMnIGJlY2F1c2UgYWZ0ZXIgYWRkaW5nIGl0LCB0aGUgcmVjb3JkIHNpemUgd291bGQgYmUgJXp1IHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUgKCV6dSkgZm9yIGEgcmVjb3JkLgAlcwAlcwAlcwBidWxrZmx1c2hlcjogRmFpbGVkIHRvIHB1bmNoIGhvbGU6IHRhYmxlPSVzLCBpbmRleD0lcywgc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dSwgZGlza19wYWdlX3NpemU9JXp1LCBob2xlX3NpemU9JXp1LCBmaWxlPSVzLCBlcnI9JXp1ACVzIGFzIHRoZSBjbGllbnQgc2Vzc2lvbiB3YXMga2lsbGVkLgBDYW5ub3Qgb3BlbiBjZXJ0aWZpY2F0ZSAlcy4gUGxlYXNlIGNoZWNrIHRoZSBjZXJpZmljYXRlAENlcnRpZmljYXRlIHZhbGlkYXRpb24gaGFzIGZhaWxlZC4gU3RvcHBpbmcgdGhlIHNlcnZlciBhcyB0bHMtY2VydGlmaWNhdGVzLWVuZm9yY2VkLXZhbGlkYXRpb24gaXMgZW5hYmxlZABDQSBjZXJ0aWZpY2F0ZS9jZXJ0ZmljYXRlcyBpcyBpbnZhbGlkLiBQbGVhc2UgY2hlY2sgbG9ncyBmb3IgbW9yZSBkZXRhaWxzLgBJbnRlcm5hbCBUTFMgZXJyb3IgJXM6JXM6JWQ6JXMARmFpbGVkIHRvIHNldCB1cCBUTFMuIENoZWNrIGxvZ3MgZm9yIGRldGFpbHMAU2VydmVyIGNlcnRpZmljYXRlICVzIHZlcmlmaWNhdGlvbiBoYXMgZmFpbGVkLiBDaGVjayBsb2dzIGZvciBtb3JlIGRldGFpbHMARmFpbGVkIHRvIHZhbGlkYXRlIGNlcnRpZmljYXRlICVzIGJlY2F1c2UgJXMAJXMAJXMAJXMATXlTUUwgU2VydmVyIC0gc3RhcnQuAE15U1FMIFNlcnZlciAtIGVuZC4ATXlTUUwgU2VydmVyIEluaXRpYWxpemF0aW9uIC0gc3RhcnQuAE15U1FMIFNlcnZlciBJbml0aWFsaXphdGlvbiAtIGVuZC4ATXlTUUwgU2VydmVyOiBQbHVnaW5zIFNodXRkb3duIC0gc3RhcnQuAE15U1FMIFNlcnZlcjogUGx1Z2lucyBTaHV0ZG93biAtIGVuZC4ATXlTUUwgU2VydmVyOiBDb21wb25lbnRzIFNodXRkb3duIC0gc3RhcnQuAE15U1FMIFNlcnZlcjogQ29tcG9uZW50cyBTaHV0ZG93biAtIGVuZCAod2l0aCByZXR1cm4gdmFsdWUgPSAlZCkuAE15U1FMIFNlcnZlcjogQ2xvc2luZyBDb25uZWN0aW9ucyAtIHN0YXJ0LgBNeVNRTCBTZXJ2ZXI6IENsb3NpbmcgQ29ubmVjdGlvbnMgLSBlbmQuAFdhaXRpbmcgZm9yIGZvcmNlZnVsIGRpc2Nvbm5lY3Rpb24gb2YgVGhyZWFkIChJRCAlbGQpIHRvIGVuZC4AV2FpdGluZyBmb3IgZm9yY2VmdWwgZGlzY29ubmVjdGlvbiBvZiAlbGQgdGhyZWFkKHMpIHRvIGVuZC4ARmFpbGVkIHRvIGFjY2VwdCBhIE15U1FMIGNvbm5lY3Rpb24gZm9yIEdyb3VwIFJlcGxpY2F0aW9uLiAlcy4gUGxlYXNlIHJldHJ5LgBJbnZhbGlkIHZhbHVlIG9mIGFyZ3VtZW50ICVzICglcykuAElnbm9yaW5nIGEgbm9uLWRlZmF1bHQgdmFsdWUgZm9yICVzIGR1cmluZyAtLWluaXRpYWxpemUuAEF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgdGhlIHNjaGVkdWxlciBmYWlsZWQuAEludmFsaWQgcmVsb2FkIGludGVydmFsIHNwZWNpZmllZDogJWx1LiBWYWxpZCB2YWx1ZXMgYXJlIDAgKG9mZikgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVkLiBBZGp1c3RpbmcgdG8gJWQuACclcycgKGdyYW50ZWQgdG8gJyVzQCVzJykgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAEJ1bGsgTXVsdGkgUmVhZGVyOiAlcwBCdWxrIE1lcmdlIExvYWRlcjogJXMAQnVsayBTb3J0aW5nIExvYWRlcjogJXMAQnVsayBXcml0ZXI6ICVzAEJ1bGsgd3JpdGVyIGZhaWxlZCB0byBpbml0aWFsaXplIGxpYmN1cmwAQnVsayB3cml0ZXIgZ290IGxpYmN1cmwgZXJyb3I6ICVzAERldGVjdGVkIHdyb25nIHBhZ2VfaWQ6IGJ1Zl9ibG9ja190W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBidWZfZnJhbWVfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgZmlsZT0lcwBGaXhlZCB3cm9uZyBwYWdlX2lkIHdpdGggc3luYyByZWFkOiBidWZfYmxvY2tfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgYnVmX2ZyYW1lX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGZpbGU9JXMsIHJldHJ5PSV6dQBXcm9uZyBwYWdlX2lkIGFmdGVyIHN5bmMgcmVhZDogYnVmX2Jsb2NrX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGJ1Zl9mcmFtZV90W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBmaWxlPSVzLCByZXRyeT0lenUAU3luYyByZWFkIHRvIGZpeCB3cm9uZyBwYWdlX2lkIGZhaWxlZDogYnVmX2Jsb2NrX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGZpbGU9JXMsIGVycj0lenUsIHJldHJ5PSV6dQBDYW5ub3Qgc3RhcnQgcmVwbGljYXRpb24gY2hhbm5lbCAnJXMnIGJlY2F1c2UgJXMuAFRoZSBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uLCBwYXJ0IG9mIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB0byB0aGUgbmV3IG1lbWJlciBqb2luIHRoZSBncm91cCwgaXMgdG9vIGJpZyBhbmQgY2Fubm90IGJlIHNlbmQuIFBsZWFzZSB3YWl0IHVudGlsIHRoZSB2YWx1ZSBvZiB0aGUgY29sdW1uIENPVU5UX1RSQU5TQUNUSU9OU19ST1dTX1ZBTElEQVRJTkcgb2YgdGhlIHRhYmxlIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfc3RhdHMgZGVjcmVhc2VzIGFuZCB0cnkgdG8gam9pbiB0aGUgbmV3IG1lbWJlciBhZ2Fpbi4AVGhlIG1lbWJlciAlczoldSB3aWxsIGJlIHRoZSBvbmUgc2VuZGluZyB0aGUgcmVjb3ZlcnkgbWV0YWRhdGEgbWVzc2FnZS4AVGhpcyBtZW1iZXIgJXM6JXUgd2lsbCBiZSB0aGUgb25lIHNlbmRpbmcgdGhlIHJlY292ZXJ5IG1ldGFkYXRhIG1lc3NhZ2UuAEVycm9yIGluaXRpYWxpemluZyB0aGUgJXMgY29tcHJlc3Npb24gY29udGV4dC4gRGF0YSBjYW5ub3QgYmUgY29tcHJlc3NlZC4ARXJyb3Igd2hpbGUgY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gRGF0YSBjYW5ub3QgYmUgZGVjb21wcmVzc2VkLgBFcnJvciB1bmtub3duIENvbXByZXNzaW9uIExpYnJhcnkgcmVxdWVzdGVkLgBFcnJvciB3aGlsZSBjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgYnVmZmVyIHNpemUgZXhjZWVkZWQgY29uZmlndXJlZCBtYXhpbXVtIHNpemUuIFBsZWFzZSB3YWl0IHVudGlsIHRoZSB2YWx1ZSBvZiB0aGUgY29sdW1uIENPVU5UX1RSQU5TQUNUSU9OU19ST1dTX1ZBTElEQVRJTkcgb2YgdGhlIHRhYmxlIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfc3RhdHMgZGVjcmVhc2VzIGFuZCB0cnkgdG8gam9pbiB0aGUgbmV3IG1lbWJlciBhZ2Fpbi4ARXJyb3Igd2hpbGUgY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4ARXJyb3IgaW5pdGlhbGl6aW5nIHRoZSAlcyBkZWNvbXByZXNzaW9uIGNvbnRleHQuIERhdGEgY2Fubm90IGJlIGRlY29tcHJlc3NlZC4ARXJyb3Igd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgYnVmZmVyIHNpemUgZXhjZWVkZWQgY29uZmlndXJlZCBtYXhpbXVtIHNpemUuIFBsZWFzZSB3YWl0IHVudGlsIHRoZSB2YWx1ZSBvZiB0aGUgY29sdW1uIENPVU5UX1RSQU5TQUNUSU9OU19ST1dTX1ZBTElEQVRJTkcgb2YgdGhlIHRhYmxlIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfc3RhdHMgZGVjcmVhc2VzIGFuZCB0cnkgdG8gam9pbiB0aGUgbmV3IG1lbWJlciBhZ2Fpbi4ARXJyb3Igd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLgBFcnJvciB3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBhbGwgdGhlIGlucHV0IHByb3ZpZGVkIHRvIGRlY29tcHJlc3MgaXMgY29uc3VtZWQsIGJ1dCB0aGUgZGVjb21wcmVzc2VkIG91dHB1dCBwcm9kdWNlZCBpcyBsZXNzIHRoYW4gcmVxdWlyZWQuAEVycm9yIHdoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IHJlcG9ydGVkIGFuIGVycm9yLgBFcnJvciB3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBubyBtb3JlIGlucHV0IGJ5dGVzIHJlbWFpbmluZyB0byBkZWNvbXByZXNzLiBUaGUgZGVjb21wcmVzc2VkIG91dHB1dCBoYXMgbm90IGJlZW4gY2hhbmdlZC4ARXJyb3Igd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBEYXRhIGNhbm5vdCBiZSBkZWNvbXByZXNzZWQuAFZpZXdfY2hhbmdlX2xvZ19ldmVudCB3aWxsIG5vdCBiZSBsb2dnZWQgZnVydGhlciBvbiB0aGUgYmluYXJ5IGxvZywgYXMgYWxsIG1lbWJlcnMgb2YgdGhlIGdyb3VwIGFyZSA4LjMuMCBvciBncmVhdGVyLgBFcnJvciB3aGlsZSBwYXJzaW5nIHNlcmlhbHplZCBDZXJ0aWZpY2F0aW9uX2luZm8gZnJvbSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSB0byBQcm90b2J1ZiBmb3JtYXQgdXNpbmcgUHJvdG9idWYgbGlicmFyeS4ARXJyb3Igd2hpbGUgc2VyaWFsaXppbmcgJSBkYXRhIHVzaW5nIFByb3RvYnVmIGxpYnJhcnkuAEVycm9yIHJlY2VpdmVkIHdoaWxlIHRoZSBSZWNvdmVyeSB0aHJlYWQgd2FzIHdhaXRpbmcgZm9yIHRoZSBSZWNvdmVyeSBNZXRhZGF0YS4gVGhlIFJlY292ZXJ5IHdpbGwgYmUgdGVybWluYXRlZC4ARXJyb3IgZmV0Y2hpbmcgQUZURVJfR1RJRFMgZnJvbSBSZWNvdmVyeSBNZXRhZGF0YSBieSBSZWNvdmVyeSB0aHJlYWQuIFRoZSBSZWNvdmVyeSB0aHJlYWQgdGltZW91dCBhZnRlciB3YWl0aW5nIGZvciAlZCBzZWNvbmRzLiBUaGUgUmVjb3Zlcnkgd2lsbCBiZSB0ZXJtaW5hdGVkLgBFcnJvciB3aGlsZSBkZWNvZGluZyB0aGUgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4gVGhlIHJlY2VpdmVkIHBheWxvYWQgaXMgZW1wdHkgd2hpY2ggY291bGQgYmUgZHVlIHRvIGVycm9yIGluIGRlY29kaW5nIG9mIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuIFRoZSBqb2luaW5nIG1lbWJlciB3aWxsIGxlYXZlIHRoZSBncm91cC4AVGhlICVzIHBheWxvYWQgdHlwZSBvZiB0aGUgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZSBpcyBlbXB0eS4ARXJyb3IgcmVhZGluZyBndGlkX2V4ZWN1dGVkIGZyb20gdGhlIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuAEVycm9yIHdoaWxlIGRlY29kaW5nIHRoZSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLgBUaGUgZ3JvdXAgd2FzIHVuYWJsZSB0byBzZW5kIHRoZSBSZWNvdmVyeSBNZXRhZGF0YSB0byBhIGpvaW5pbmcgbWVtYmVyLgBFcnJvciB3aGlsZSBzYXZpbmcgY29weSBvZiBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLgBFcnJvciB3aGlsZSBwcm9jZXNzaW5nIHJlY2VpdmVkIENlcnRpZmljYXRpb24gSW5mb3JtYXRpb24gZnJvbSB0aGUgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4ARXJyb3IgQ2VydGlmaWNhdGlvbiBJbmZvcm1hdGlvbiBwYWNrZXQgZnJvbSB0aGUgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZSBpcyBlbXB0eS4ARXJyb3Igd2hpbGUgc2VuZGluZyBSZWNvdmVyeSBtZXRhZGF0YSBlcnJvciBtZXNzYWdlLiBJZiB0aGlzIGlzIGEgdGVtcG9yYXJ5IGZhaWx1cmUgb2Ygc2VuZCBtZXNzYWdlIGFuZCBtZW1iZXIgaXRzZWxmIGhhc24ndCBsZWZ0IHRoZSBncm91cCwgdGhlbiBqb2luZXIgd2lsbCB0aW1lb3V0IHdhaXRpbmcgZm9yIFJlY292ZXJ5IG1ldGFkYXRhIG1lc3NhZ2UuIElmIHRoaXMgaXMgYSBwZXJtYW5lbnQgZmFpbHVyZSwgdGhlIG1lbWJlciB3aWxsIGxlYXZlIHRoZSBncm91cCBhbmQgYW5vdGhlciBtZW1iZXIgd2lsbCBzZW5kIHRoZSBSZWNvdmVyeSBtZXRhZGF0YSBtZXNzYWdlLgBFcnJvciB3aGVuIHRyYW5zZmVycmluZyBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlIHRvIFJlY292ZXJ5LiBUaGUgam9pbmluZyBtZW1iZXIgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuAEVycm9yIENlcnRpZmljYXRpb24gbW9kdWxlIHdhc24ndCBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3IgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZSBtb2R1bGUgd2Fzbid0IHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciB3aGlsZSAlcy4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGlzIHNraXBwZWQgYXMgdGhlIGpvaW5lcidzIGd0aWQgZXhlY3V0ZWQgc2V0ICVzIGFscmVhZHkgaGFzIGFsbCB0aGUgdHJhbnNhY3Rpb25zIG9mIHRoZSBkb25vcidzIGd0aWQgc2V0ICVzLgBFcnJvciBpbiBHcm91cCBSZXBsaWNhdGlvbiBSZWNvdmVyeSB3aGlsZSBnZXR0aW5nIG1lbWJlcidzIGdsb2JhbCBHVElEIGV4ZWN1dGVkIHNldC4ARXJyb3IgaW4gR3JvdXAgUmVwbGljYXRpb24gUmVjb3Zlcnkgd2hpbGUgYWRkaW5nIEdUSURzIGluIHN0cmluZyBmb3JtYXQgdG8gR3RpZF9zZXQuAEVycm9yIGNvbXB1dGluZyB0aGUgY3VycmVudCBSZWNvdmVyeSBtZXRhZGF0YSBzZW5kZXIuIENoZWNrIGlmIHRoaXMgTUVNQkVSIGlzIG5vdCBsZWF2aW5nIHRoZSBncm91cCBhbmQgdGhlIGpvaW5lciBpcyBhYmxlIHRvIHN1Y2Nlc3NmdWxseSBmZXRjaCB0aGUgcmVjb3ZlcnkgbWV0YWRhdGEgb3Igbm90LgBFcnJvciBpbiB0aGUgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZSB0aGUgbnVtYmVyIG9mIGNvbXByZXNzZWQgQ2VydGlmaWNhdGlvbiBJbmZvcm1hdGlvbiBwYWNrZXQgY291bnQgbWlzbWF0Y2ggd2l0aCB0aGUgbnVtYmVyIG9mIHNlbnQgY29tcHJlc3NlZCBDZXJ0aWZpY2F0aW9uIEluZm9ybWF0aW9uIHBhY2tldHMuAEVycm9yIHdoaWxlIGVuY29kaW5nIENlcnRpZmljYXRpb24gSW5mb3JtYXRpb24gZm9yIHRoZSBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLgBUaGVyZSBhcmUgbm8gdmFsaWQgcmVjb3ZlcnkgbWV0YWRhdGEgZG9ub3JzLiBUaGUgam9pbmluZyBtZW1iZXIgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuAE5vIGRvbm9yIGF2YWlsYWJsZSB0byBwcm92aWRlIHRoZSBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uLCBwYXJ0IG9mIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB0byB0aGUgbmV3IG1lbWJlciBqb2luIHRoZSBncm91cC4gUGxlYXNlIHdhaXQgdW50aWwgdGhlcmUgYXJlIE9OTElORSBtZW1iZXJzIG9uIHRoZSBncm91cCBhbmQgdHJ5IHRvIGpvaW4gdGhlIG5ldyBtZW1iZXIgYWdhaW4uAFRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBpcyBjb21wbGV0ZSwgam9pbmVyIGd0aWQgZXhlY3V0ZWQgc2V0IGhhcyBhbGwgdGhlIHRyYW5zYWN0aW9ucyBvZiB0aGUgZG9ub3IncyBndGlkIHNldCAlcy4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGVuY291bnRlcmVkIGFuIGVycm9yIHdoaWxlIGV4ZWN1dGluZyB0aGUgcXVlcnkgdG8gY2hlY2sgY29ubmVjdGlvbiB0byB0aGUgc291cmNlIHNlcnZlci4gRXJyb3I6ICVzLiBUaGUgcXVlcnkgZmFpbGVkIHRvIGV4ZWN1dGUgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBUaGUgTW9uaXRvciBJTyB0aHJlYWQgZmFpbGVkIHRvIGRldGVjdCBpZiB0aGUgc291cmNlIGJlbG9uZ3MgdG8gdGhlIGdyb3VwIG1ham9yaXR5LiBFcnJvcjogJXMuIFRoZSBxdWVyeSBmYWlsZWQgdG8gZXhlY3V0ZSBvbiB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycuAFRoZSByZXBsaWNhIElPIHRocmVhZCBmYWlsZWQgdG8gZGV0ZWN0IGlmIHRoZSBzb3VyY2UgYmVsb25ncyB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuIEVycm9yOiAlcy4gVGhlIHF1ZXJ5IGZhaWxlZCB0byBleGVjdXRlIG9uIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJy4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGZhaWxlZCB0byBnZXQgZ3JvdXAgbWVtYmVyc2hpcCBkZXRhaWxzLiBFcnJvcjogJXMuIFRoZSBxdWVyeSBmYWlsZWQgdG8gZXhlY3V0ZSBvbiB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycuAFRhYmxlc3BhY2UgJyV1JyBtZW50aW9uZWQgaW4gdGhlIHJlZG8gbG9nIGlzIGNvcnJ1cHRlZCBpbiBhIHdheSBpdCBpcyB1bnJlY292ZXJhYmxlIGJ5IGRvdWJsZS13cml0ZSBidWZmZXIsIHNvIGZ1cnRoZXIgcmVkbyBsb2cgcmVjb3ZlcnkgaXMgbm90IHBvc3NpYmxlIQAlczogRmFpbGVkIHRvIHNhdmUgc3RhdGlzdGljcyBmb3IgdGFibGU9JXMgZXJyPSV6dQBJbnZhbGlkIGZsdXNoIGludGVydmFsIHNwZWNpZmllZDogJWx1LiBWYWxpZCB2YWx1ZXMgYXJlIDAgKG9mZikgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVkLiBBZGp1c3RpbmcgdG8gJWQuAENhbm5vdCByZWdpc3RlciB2YXJpYWJsZSAnJXMnLiclcycuAE1hc2tpbmcgY29tcG9uZW50IGZhaWxlZCB0byByZWdpc3RlciBub3RpZmljYXRpb24gc2VydmljZS4gUGVyaW9kaWNhbCBtYXNraW5nIGRpY3Rpb25hcmllcyBmbHVzaCB3aWxsIG5vdCB3b3JrLgBGYWlsZWQgdG8gZGVjb2RlIEdyb3VwIFJlcGxpY2F0aW9uIG1lc3NhZ2U6ICVzLiBSZWFzb24gOiAlcwBUaGUgQXBwbGllciBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uIGZvdW5kIGFuIGVycm9yIGFuZCB3YXMgcmVxdWVzdGVkIHRvIHN0b3A6ICVzAENhbm5vdCBpbnN0YWxsIHRoZSBjb21wb25lbnQuAENhbm5vdCB1bmluc3RhbGwgdGhlIGxhbmd1YWdlIGNvbXBvbmVudDogJXMuAENhbGxpbmcgY29tcG9uZW50IHNlcnZpY2U6ICVzLgBJbnRlcm5hbCBlcnJvciB3aGlsZSAlcy4ASW50ZXJuYWwgVk0gQVBJIGZ1bmN0aW9uIGZhaWxlZDogJXMuAEludGVybmFsIFZNIGVycm9yIHdoaWxlICVzLgBUaGUgcmVzb3VyY2UgbGltaXQgaGFzIGJlZW4gZXhjZWVkZWQuIERldGFpbHM6ICVzLgBWYWx1ZSBmb3Igb3B0aW9uICclcycgY29udGFpbnMgY2lwaGVyICclcycgdGhhdCBpcyBibG9ja2VkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIGFsbG93ZWQgY2lwaGVycy4AS2V5cmluZyBmaWxlIHBhdGggaXMgZW1wdHkgaW4gY29uZmlndXJhdGlvbiBmaWxlLgBGYWlsZWQgdG8gcmVhZCBrZXlyaW5nIGZpbGU6ICVzLgBGYWlsZWQgdG8gZGVjcnlwdCBrZXlyaW5nIGZpbGU6ICVzLgBUaGUga2V5cmluZyBmaWxlIGNvbnRlbnQgaXMgbm90IGluIGEgdmFsaWQgSlNPTiBmb3JtYXQuAEZhaWxlZCB0byBleHRyYWN0IGEgdmFsaWQgSlNPTiBkYXRhIGZyb20ga2V5cmluZyBmaWxlLgBGYWlsZWQgdG8gZXh0cmFjdCBrZXkgZnJvbSBrZXlyaW5nIGZpbGUgSlNPTiBkYXRhLgBLZXlyaW5nIGNvbXBvbmVudCBpcyBub3QgaW5pdGlhbGl6ZWQuAFByb3ZpZGVkIERhdGEgSUQgaXMgZW1wdHkuAEZhaWxlZCB0byBpbml0aWFsaXplIG1ldGFkYXRhIGl0ZXJhdG9yLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBrZXkgcmVhZGVyIGl0ZXJhdG9yLgBGYWlsZWQgdG8gcmVhZCBrZXkgZnJvbSBrZXkgcmVhZGVyIGl0ZXJhdG9yLgAlKnMAU3VibWl0IGEgZGV0YWlsZWQgYnVnIHJlcG9ydCB0byBodHRwOi8vYnVncy5teXNxbC5jb20AQVVUT19JTkNSRU1FTlQgaXMgbm90IHN1cHBvcnRlZCB3aXRoIERPVUJMRS9GTE9BVCBmaWVsZC4gUGxlYXNlIGNvbnNpZGVyIGZpeGluZyAoU2NoZW1hOiVzLCBUYWJsZTolcywgQ29sdW1uOiVzKS4ARG93bmdyYWRpbmcgdGhlIHN5cyBzY2hlbWEuAERvd25ncmFkZSBvZiBoZWxwIHRhYmxlcyAlcy4AQ291bGQgbm90IGZpbmQgZGF0YSBwb2ludGVkIGJ5IGRhdGFfaWQ6ICVzLCBhdXRoX2lkOiAlcy4gU2tpcHBpbmcuAEZhaWxlZCB0byBkZWFsbG9jYXRlIHJlYWRlcl9vYmplY3QuAEEgY29ubmVjdGlvbiBmcm9tICVzIHdhcyBjbG9zZWQgYnkgdGhlIHNlcnZlciBkdWUgdG8gYSB0aW1lb3V0IGluIHRoZSBjb21tdW5pY2F0aW9uIGxheWVyICh2aW86JWQsIHBhY2tldDolZCkgJWxkIHNlY29uZHMgYWZ0ZXIgdGhlIGxhc3QgY29tbWFuZCBzdGFydGVkLiBDdXJyZW50bHkgY29uZmlndXJlZCB3YWl0X3RpbWVvdXQgaXMgJWxkIHNlY29uZHMuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fcHJlZW1wdGl2ZV9nYXJiYWdlX2NvbGxlY3Rpb24gb3B0aW9uIHZhbHVlICclZCcgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclZCcuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFN0aWxsIHJvbGxpbmcgYmFjayB0cmFuc2FjdGlvbiAlbGx1OyAlbGx1IHVuZG8gcmVjb3JkcyByb2xsZWQgYmFjayBvdXQgb2YgJWxsdSB0b3RhbCAoJWx1JSUgY29tcGxldGUpLiBUcmFuc2FjdGlvbiBpbmZvOiBsYXN0IHN0YXRlOiAlcwBTdGlsbCByb2xsaW5nIGJhY2sgdHJhbnNhY3Rpb24gJWxsdTsgJWxsdSB1bmRvIHJlY29yZHMgcm9sbGVkIGJhY2sgb3V0IG9mICVsbHUgdG90YWwgKCVsdSUlIGNvbXBsZXRlKS4ASW52YWxpZCBmb3JtYXQgb2YgZmlsZSAnJXMnLgBSZWxheSBsb2cgc2FuaXRpemF0aW9uOiAlcwBGb3JlaWduIGtleSAnJS42NHMnIG9uIHRhYmxlICclLjY0cycuJyUuNjRzJyByZWZlcnMgdG8gbm9uLXVuaXF1ZSBrZXkgb3IgcGFydGlhbCBrZXkuIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAERpc2FibGluZyBNVEwgaW4gdGhyZWFkIGdyb3VwICV1IHNpbmNlIGl0IGhhcyAldSAoPU1UTCBwZXIgZ3JvdXApIGxvbmcgcnVubmluZyB0cmFuc2FjdGlvbnMuAFJlLWVuYWJsaW5nIE1UTCBpbiB0aHJlYWQgZ3JvdXAgJXUgc2luY2UgaXQgaXMgZG93biB0byAldSBsb25nIHJ1bm5pbmcgdHJhbnNhY3Rpb25zLgBDb2x1bW4gJyUuNjRzLiUuNjRzLiUuNjRzJyBoYXZpbmcgcHJlZml4IGtleSBwYXJ0ICclLjY0cygldSknIGluIHRoZSBQQVJUSVRJT04gQlkgS0VZKCkgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQuAExvZ2luIHVzZXI6ICVzQCVzIChleHRlcm5hbDogJXMpIGF1dGhlbnRpY2F0ZWQgYXM6ICVzAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyVzJ0AnJXMnLCBtaXNzaW5nIHByb3h5IHByaXZpbGVnZSB0byAnJXMnLgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclcydAJyVzJywgcHJveGllZCB1c2VyICclcycgZG9lc24ndCBleGlzdC4ARGlzdHJpYnV0ZWQgcmVjb3Zlcnkgd2lsbCB3YWl0IHVudGlsIHRoZSB0cmFuc2FjdGlvbnMgJyVzJyBjb250YWluZWQgb24gdGhlICdncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyJyBjaGFubmVsIGFyZSBhcHBsaWVkLgBEaXN0cmlidXRlZCByZWNvdmVyeSBmaW5pc2hlZCBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb25zICclcycgY29udGFpbmVkIG9uIHRoZSAnZ3JvdXBfcmVwbGljYXRpb25fYXBwbGllcicgY2hhbm5lbC4AWlNURCBkZWNvbXByZXNzaW9uIGZhaWxlZDogJXMAJXMAVXNpbmcgaW5ub2RiX2ZsdXNoX21ldGhvZD0lcwBCdWxrIFNjYW5uZXI6ICVzAENvbWJpbmluZyB0aGUgc3RvcmFnZSBlbmdpbmVzICUuNjRzIGFuZCAlLjY0cyBpcyBkZXByZWNhdGVkLCBidXQgdGhlIHN0YXRlbWVudCBvciB0cmFuc2FjdGlvbiB1cGRhdGVzIGJvdGggdGhlICUuNjRzIHRhYmxlICUuNjRzLiUuNjRzIGFuZCB0aGUgJS42NHMgdGFibGUgJS42NHMuJS42NHMuAEZhaWxlZCB0byB1cGRhdGUgZGF0YSBkaXJlY3RvcnkgZmxhZyBmb3IgZGQgdGFibGUgd2l0aCB0YWJsZXNwYWNlIGlkICclbGx1JyB3aGVuIGliZCBmaWxlIGZvciAnJXMnIGlzIG1vdmVkIHRvIG5ldyBsb2NhdGlvbiAnJXMnIGR1cmluZyBzZXJ2ZXIgc2h1dGRvd24AJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsIGZvdW5kIGF0ICclcycgb3V0c2lkZSBkZWZhdWx0IGRhdGEgZGlyZWN0b3J5LCBidXQgREQgbWlzc2VzIGluZm8gYWJvdXQgREFUQSBESVJFQ1RPUlkAVXBvbiByZWNvbm5lY3Rpb24gd2l0aCB0aGUgcmVwbGljYSwgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBkdW1wIHRocmVhZCBmb3IgJXMgPCVzPiwgYW4gZXhpc3RpbmcgZHVtcCB0aHJlYWQgd2l0aCB0aGUgc2FtZSAlcyB3YXMgZGV0ZWN0ZWQuIFRoZSBzb3VyY2UgaXMgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIGR1bXAgdGhyZWFkICgldSksIHdoaWNoIGlzIG5vcm1hbCBhbmQgZXhwZWN0ZWQuAFRoZSB0cmFuc2FjdGlvbiAnJS0uMTkycycgd2lsbCBjb21taXQgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdCB0byBpdHMgc291cmNlIHRvIGZvbGxvdyB0aGUgZ3JvdXAgZ2xvYmFsIG9yZGVyLgBUZW1wdGFibGU6ICVzAEZhaWxlZCB0byByZWNyZWF0ZSBhIGNhY2hlIG9uIGluZm8gZmlsZSAoZmlsZSAnJXMnKQAlcwAlcwBDYW5ub3QgY3JlYXRlIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgdGFibGVzIGluICVzJXNyZWFkLW9ubHkgbW9kZS4AJXMAJXMAVGFibGUgJXMgaXMgZW5jcnlwdGVkIGJ1dCBkZWNyeXB0aW9uIGZhaWxlZC4gU2VlbXMgdGhhdCB0aGUgZW5jcnlwdGlvbiBrZXkgZmV0Y2hlZCBmcm9tIGtleXJpbmcgaXMgbm90IHRoZSBjb3JyZWN0IG9uZS4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBrZXlyaW5nPwBUYWJsZXNwYWNlIGlkICV1IGluIGZpbGUgJXMgaXMgZW5jcnlwdGVkIGJ1dCBrZXlyaW5nIG9yIHVzZWQga2V5X2lkICV1IGlzIG5vdCBhdmFpbGFibGUuIENhbid0IGNvbnRpbnVlIHJlYWRpbmcgdGFibGUuIFBsZWFzZSBwcm92aWRlIHRoZSBjb3JyZWN0IGtleXJpbmcuAFdhaXRpbmcgZm9yIGtleXJpbmcgZW5jcnlwdGlvbiB0aHJlYWRzIHRvIGV4aXQAJXMAS2V5IHJvdGF0aW9uIG9mIGVuY3J5cHRlZCBzZXNzaW9uIHRlbXBvcmFyeSB0YWJsZXNwYWNlICVzIGZhaWxlZAAlcwBVcGdyYWRlIGlzIG5vdCBwb3NzaWJsZSBhcyB0aGVyZSBhcmUgdGFibGVzIHRoYXQgYXJlIEtFUllJTkcgZW5jcnlwdGVkLiBLRVlSSU5HIGVuY3J5cHRpb24gaXMgc3RpbGwgZXhwZXJpbWVudGFsIGZlYXR1cmUgaW4gdGhlIHZlcnNpb24geW91IGFyZSB1cGdyYWRpbmcgZnJvbS4gVG8gdXBncmFkZSBwbGVhc2UgZGVjcnlwdCB0aGUgdGFibGVzIGVuY3J5cHRlZCB3aXRoIEtFWVJJTkcgZW5jcnlwdGlvbi4AUmVkbyBsb2cgZW5jcnlwdGlvbiBtb2RlIGNhbid0IGJlIHN3aXRjaGVkIHdpdGhvdXQgc3RvcHBpbmcgdGhlIHNlcnZlciBhbmQgcmVjcmVhdGluZyB0aGUgcmVkbyBsb2dzLiBDdXJyZW50IG1vZGUgaXMgJXMsIHJlcXVlc3RlZCAlcy4AUmVkbyBsb2cga2V5IGdlbmVyYXRpb24gZmFpbGVkLgBGYWlsZWQgdG8gZW5jcnlwdCByZWRvIGxvZyB0YWJsZXNwYWNlLgBGYWlsZWQgdG8gbG9hZCByZWRvIGtleSB2ZXJzaW9uICV1AENvdWxkbid0IGZldGNoIG5ld2x5IGdlbmVyYXRlZCByZWRvIGtleS4AQ291bGRuJ3QgcGFyc2Ugc3lzdGVtIGtleTogJXMAUmVkbyBsb2cgY2Fubm90IGJlIGVuY3J5cHRlZCBpZiB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBVbmRvIGxvZyBjYW4ndCBiZSBlbmNyeXB0ZWQgaWYgdGhlIGtleXJpbmcgaXMgbm90IGxvYWRlZC4AQ291bGRuJ3QgZmV0Y2ggZGVmYXVsdCBwZXJjb25hX3JlZG8ga2V5LiBQbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBvcGVyYXRpb25hbC4AVXBncmFkZSBjYW5ub3QgY29udGludWUgYXMgcmVkbyBpcyBlbmNyeXB0ZWQgd2l0aCBvbGQsIGV4cGVyaW1lbnRhbCB2ZXJzaW9uIG9mIEtFWVJJTkcgZW5jcnlwdGlvbi4gUGxlYXNlIHBlcmZvcm0gc2xvdyBzaHV0ZG93biBhbmQgcmVtb3ZlIG9sZCByZWRvIGxvZyBmaWxlcyBiZWZvcmUgdXBncmFkaW5nLgBUYWJsZXNwYWNlIGlkICV1IGluIGZpbGUgJXMgaXMgZW5jcnlwdGVkLiBBbHRob3VnaCBzZXJ2ZXIgbWFuYWdlZCB0byBmaW5kIGtleV9pZD0ldSBpbiBrZXlyaW5nIHRvIGRlY3J5cHQgaXQsIHNvbWUgdmVyc2lvbnMgb2YgdGhpcyBrZXksIHRoYXQgYXJlIG5lZWRlZCB0byBkZWNyeXB0IHRoaXMgc3BhY2UsIGFyZSBtaXNzaW5nLiBNYXliZSB5b3UgYXJlIHVzaW5nIGFuIG9sZCBrZXlyaW5nPyBDYW4ndCBjb250aW51ZSByZWFkaW5nIHRhYmxlLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBrZXlyaW5nLgBUYWJsZXNwYWNlIGlkICV1IGluIGZpbGUgJXMgaXMgZW5jcnlwdGVkLiBBbHRob3VnaCBzZXJ2ZXIgbWFuYWdlZCB0byBmaW5kIGFsbCBuZWVkZWQgdmVyc2lvbnMgb2Yga2V5X2lkPSV1IGluIGtleXJpbmcgdG8gZGVjcnlwdCBpdCwgdGhlIHByb3ZpZGVkIHZlcnNpb25zIGFyZSBlaXRoZXIgaW5jb3JyZWN0IG9yIGNvcnJ1cHRlZC4gQ2FuJ3QgY29udGludWUgcmVhZGluZyB0YWJsZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3Qga2V5cmluZy4AVGFibGVzcGFjZSBpZCAldSBpcyBlbmNyeXB0ZWQgYnV0IGtleXJpbmcgb3IgdXNlZCBrZXlfaWQgJXUgaXMgbm90IGF2YWlsYWJsZS4gQ2FuJ3QgY29udGludWUgcmVhZGluZyB0YWJsZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3Qga2V5cmluZy4AVGFibGVzcGFjZSBpZCAldSBpcyBlbmNyeXB0ZWQuIEFsdGhvdWdoIHNlcnZlciBtYW5hZ2VkIHRvIGZpbmQga2V5X2lkPSV1IGluIGtleXJpbmcgdG8gZGVjcnlwdCBpdCwgc29tZSB2ZXJzaW9ucyBvZiB0aGlzIGtleSwgdGhhdCBhcmUgbmVlZGVkIHRvIGRlY3J5cHQgdGhpcyBzcGFjZSwgYXJlIG1pc3NpbmcuIE1heWJlIHlvdSBhcmUgdXNpbmcgYW4gb2xkIGtleXJpbmc/IENhbid0IGNvbnRpbnVlIHJlYWRpbmcgdGFibGUuIFBsZWFzZSBwcm92aWRlIHRoZSBjb3JyZWN0IGtleXJpbmcuAFRhYmxlc3BhY2UgaWQgJXUgaXMgZW5jcnlwdGVkLiBBbHRob3VnaCBzZXJ2ZXIgbWFuYWdlZCB0byBmaW5kIGFsbCBuZWVkZWQgdmVyc2lvbnMgb2Yga2V5X2lkPSV1IGluIGtleXJpbmcgdG8gZGVjcnlwdCBpdCwgdGhlIHByb3ZpZGVkIHZlcnNpb25zIGFyZSBlaXRoZXIgaW5jb3JyZWN0IG9yIGNvcnJ1cHRlZC4gQ2FuJ3QgY29udGludWUgcmVhZGluZyB0YWJsZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3Qga2V5cmluZy4ARGVsYXlpbmcgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGR1ZSB0byBsb2NrIHRhYmxlcyBmb3IgYmFja3VwLgBYIHBsdWdpbiBmYWlsZWQgdG8gcmVnaXN0ZXIgU1NMIHJlbG9hZCBjYWxsYmFjay4gQUxURVIgSU5TVEFOQ0UgUkVMT0FEIFRMUyB3aWxsIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSBwbHVnaW4uAEtleXJpbmcgY29uZmlndXJhdGlvbiBkb2Vzbid0IGV4aXN0czogJXMAS2V5cmluZyBjb25maWd1cmF0aW9uIEpTT04gcGFyc2UgZXJyb3I6ICVzICglbHUpAFRhYmxlICclcy4lcycgcmVxdWlyZXMgdGhlICclcycgc3RvcmFnZSBlbmdpbmUsIHdoaWNoIHdhcyByZW1vdmVkIGluIFBlcmNvbmEgU2VydmVyIDguMC4yOAAtLSVzIGlzIHNldCB0byBOVUxMLiBEeW5hbWljIGxvZyBmaWxlcyBjYW4gYmUgc2F2ZWQgYW55d2hlcmUsIHBvc3NpYmx5IG92ZXJ3cml0aW5nIG90aGVyIGZpbGVzLgBLTVMgY29tbXVuaWNhdGlvbiBlcnJvcjogJXMAVXBncmFkZSBmYWlsZWQsIHJlY3JlYXRpbmcgcmVkbyBsb2dzIHdpdGggcHJldmlvdXMgdmVyc2lvbgBDb3VsZCBub3QgYWRkIGV2ZW50IHJ1bGUgJyVzJyB0byAtLXJlcGxpY2EtZW5hYmxlLWV2ZW50LiAlcwBGbG93IGNvbnRyb2wgYXV0byBldmljdCB0aW1lb3V0IHJlYWNoZWQuIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBUbXBfdGFibGVfc2l6ZSBpcyBzZXQgYmVsb3cgMU1pQi4gVGhlIFRFTVBUQUJMRSBlbmdpbmUgcmVxdWlyZXMgYXQgbGVhc3QgMU1pQiB0YWJsZSBzaXplLCBhbmQgd2lsbCB1c2UgdGhhdCB2YWx1ZSBpbnN0ZWFkLiBQbGVhc2UgaW5jcmVhc2UgdGhlIGxpbWl0IHRvIHNpbGVuY2UgdGhpcyB3YXJuaW5nLgBGYWlsaW5nIGNvbm5lY3Rpb24gYXR0ZW1wdHMgdGhyZXNob2xkIHJlYWNoZWQgZm9yICVzAEZhaWxpbmcgY29ubmVjdGlvbiBhdHRlbXB0cyB0aHJlc2hvbGQgcmVhY2hlZCBmb3IgJXMsIGZ1cnRoZXIgbWVzc2FnZXMgd2lsbCBiZSBzdXBwcmVzc2VkIGZvciBuZXh0ICVsbHUgc2Vjb25kcwBEZWxheWVkICVsbHUgY29ubmVjdGlvbiBhdHRlbXB0cyBkdXJpbmcgbGFzdCAlbGx1IHNlY29uZHMAVGhlIC0tc2VjdXJlLWZpbGUtcGF0aCBpcyBjb25maWd1cmVkLCAlcyBtdXN0IGJlIHNldCBhY2NvcmRpbmdseS4ASW5pdGlhbGl6aW5nIEF1ZGl0IEV2ZW50IEZpbHRlci4uLgBVbmluc3RhbGxlZCBBdWRpdCBFdmVudCBGaWx0ZXIARmFpbGVkIHRvIGNoZWNrL2dlbmVyYXRlIGVuY3J5cHRpb24gcGFzc3dvcmQARmFpbGVkIHRvIGluaXQgQVVESVRfQUJPUlRfRVhFTVBUIHByaXZpbGVnZQBGYWlsZWQgdG8gY3JlYXRlIFVERnMgaGFuZGxlciBpbnN0YW5jZQBGYWlsZWQgdG8gaW5pdCBVREZzAEZhaWxlZCB0byBjcmVhdGUgYXVkaXQgcnVsZSByZWdpc3RyeSBpbnN0YW5jZQBGYWlsZWQgdG8gaW5pdCByZWNvcmQgZm9ybWF0dGVyAEZhaWxlZCB0byBpbml0IGxvZyB3cml0ZXIAQ2Fubm90IG9wZW4gbG9nIHdyaXRlciwgZXJyb3I6ICVzAEZhaWxlZCB0byBjcmVhdGUgbG9nIHJlYWRlciBpbnN0YW5jZQBGYWlsZWQgdG8gaW5pdCBjb21wb25lbnQAQXVkaXQgTG9nIEZpbHRlciBpcyBkaXNhYmxlZC4gRW5hYmxlIGl0IHdpdGggYXVkaXRfbG9nX2ZpbHRlci5kaXNhYmxlID0gZmFsc2UuAEZhaWxlZCB0byBjaGVjayBmaWx0ZXJpbmcgcnVsZSBuYW1lIGV4aXN0ZW5jZQBGYWlsZWQgdG8gcmVtb3ZlIGZpbHRlciAnJXMnIGZyb20gdXNlcnMgdGFibGUARmFpbGVkIHRvIHJlbW92ZSBmaWx0ZXIgJyVzJwBGYWlsZWQgdG8gY2hlY2sgZmlsdGVyaW5nIHJ1bGUgbmFtZSBleGlzdGVuY2UAVW5rbm93biBmaWx0ZXJpbmcgcnVsZSBuYW1lICclcycARmFpbGVkIHRvIHNldCAnJXMnIGZpbHRlcmluZyBydWxlIGZvciB1c2VyICclc0AlcycARmFpbGVkIHRvIHJlbW92ZSBmaWx0ZXIgZm9yIHVzZXIgJyVzQCVzJyBmcm9tIHVzZXJzIHRhYmxlAExvZyByb3RhdGlvbiBmYWlsZWQ6ICclcycARmFpbGVkIHRvIHJlZ2lzdGVyIHN0YXR1cyB2YXJpYWJsZXMARmFpbGVkIHRvIHVucmVnaXN0ZXIgc3RhdHVzIHZhcmlhYmxlcwBGYWlsZWQgdG8gcmVnaXN0ZXIgJXMuJXMgc3lzdGVtIHZhcmlhYmxlAEZhaWxlZCB0byB1bnJlZ2lzdGVyICVzLiVzIHN5c3RlbSB2YXJpYWJsZQBGYWlsZWQgdG8gY2hlY2sgJXMgdmFyaWFibGUgc291cmNlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGUgJ2xvZycgbWVtYmVyIG11c3QgYmUgb2YgdHlwZSBib29sAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnY2xhc3MnIGFycmF5IGVsZW1lbnQgbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2NsYXNzJyBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgbm8gbmFtZSBwcm92aWRlZCBmb3IgZXZlbnQgY2xhc3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdhYm9ydCcgY29uZGl0aW9uIHNob3VsZCBiZSBzZXQgZm9yIHN1YmNsYXNzIG9ubHkAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdsb2cnIG11c3QgYmUgb2YgYm9vbCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBmYWlsZWQgdG8gcGFyc2UgJ3ByaW50JyByZXBsYWNlbWVudCBydWxlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCByZXBsYWNlbWVudCBydWxlIG5vdCBleHBlY3RlZCBmb3IgZXZlbnQgY2xhc3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZXJlIG11c3QgYmUgbm8gJ2V2ZW50JyBpbiBjYXNlIGNsYXNzIG5hbWVzIHByb3ZpZGVkIGFzIGFuIGFycmF5IG9mIHN0cmluZ3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGV2ZW50IGNsYXNzIG5hbWUgd2l0aGluIGFuIGFycmF5IHNob3VsZCBiZSBvZiBhIHN0cmluZyB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBldmVudCBjbGFzcyBuYW1lIHR5cGUgbXVzdCBiZSBlaXRoZXIgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdldmVudCcgYXJyYXkgZWxlbWVudCBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0eXBlIG9mICdldmVudCcgbXVzdCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIGFuIGFycmF5IG9mIG9iamVjdHMAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdhYm9ydCcgbXVzdCBiZSBvZiBib29sIG9yIG9iamVjdCB0eXBlAEV2ZW50IGZpZWxkICclcycgY2Fubm90IGJlIHJlcGxhY2VkAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGVyZSBtdXN0IGJlIG9ubHkgb25lIGNvbmRpdGlvbiBzcGVjaWZpZWQgZm9yICdsb2cnIGZpZWxkAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGUgJ2xvZycgY29uZGl0aW9uIG5hbWUgbXVzdCBiZSBvZiBzdHJpbmcgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdW5rbm93biAnbG9nJyBjb25kaXRpb24gbmFtZSAnJXMnAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBjb25kaXRpb24gZGVmaW5pdGlvbiAnZmllbGQnIG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGV2ZW50IGZpZWxkIGRlZmluaXRpb24gJ2ZpZWxkJyBtdXN0IGhhdmUgZmllbGQgJ25hbWUnIGFuZCAndmFsdWUnIHByb3ZpZGVkIGFzIHN0cmluZ3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGNvbmRpdGlvbiBkZWZpbml0aW9uICdhbmQnIG11c3QgYmUgb2YgYXJyYXkgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgYSBtZW1iZXIgb2YgJ2FuZCcgY29uZGl0aW9uIG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZmllbGRzIHByb3ZpZGVkIGZvciAnYW5kJyBjb25kaXRpb24AV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGNvbmRpdGlvbiBkZWZpbml0aW9uICdvcicgbXVzdCBiZSBvZiBhcnJheSB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBhIG1lbWJlciBvZiAnb3InIGNvbmRpdGlvbiBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGZpZWxkcyBwcm92aWRlZCBmb3IgJ29yJyBjb25kaXRpb24AV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGNvbmRpdGlvbiBkZWZpbml0aW9uICdub3QnIG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGNvbmRpdGlvbiBkZWZpbml0aW9uICd2YXJpYWJsZScgbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZXZlbnQgZmllbGQgZGVmaW5pdGlvbiAndmFyaWFibGUnIG11c3QgaGF2ZSBmaWVsZCAnbmFtZScgYW5kICd2YWx1ZScgcHJvdmlkZWQgYXMgc3RyaW5ncwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2Z1bmN0aW9uJyBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBtaXNzaW5nICdmdW5jdGlvbicgbmFtZSBvciBub3QgYSBzdHJpbmcAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHVua25vd24gZnVuY3Rpb24gbmFtZSAnJXMnAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB3cm9uZyBmdW5jdGlvbiBhcmdzIGZvcm1hdCBwcm92aWRlZABXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgaW52YWxpZCBhcmd1bWVudHMgZm9yICclcycgZnVuY3Rpb24AV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIG5vIG5hbWUgcHJvdmlkZWQgZm9yIGV2ZW50IHN1YmNsYXNzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBldmVudCBzdWJjbGFzcyBuYW1lIHdpdGhpbiBhbiBhcnJheSBzaG91bGQgYmUgb2YgYSBzdHJpbmcgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZXZlbnQgc3ViY2xhc3MgbmFtZSB0eXBlIG11c3QgYmUgZWl0aGVyIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGVyZSBtdXN0IGJlIG9ubHkgb25lIGNvbmRpdGlvbiBwcm92aWRlZCwgJ2xvZycgb3IgJ2Fib3J0JwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdW5rbm93biB0YWcgJyVzJwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgYmFkIGZvcm1hdCBmb3IgJyVzJyBhY3Rpb24AV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGZhaWxlZCB0byBwYXJzZSAnZmlsdGVyJyByZXBsYWNlbWVudCBydWxlAEVSUk9SOiBJbnRlcm5hbCBlcnJvcgBXcm9uZyBhcmd1bWVudDogaW5jb3JyZWN0IHJ1bGUgZGVmaW5pdGlvbiAnJXMnAEZhaWxlZCB0byBjaGVjayBmaWx0ZXJpbmcgcnVsZSBuYW1lIGV4aXN0ZW5jZQBGaWx0ZXJpbmcgcnVsZSB3aXRoIHRoZSBuYW1lICclcycgYWxyZWFkeSBleGlzdHMARmFpbGVkIHRvIGluc2VydCBmaWx0ZXJpbmcgcnVsZSAnJXMnLCAnJXMnAFVuZXhwZWN0ZWQgZXZlbnQgdHlwZSBmb3IgcmVwbGFjZV9maWVsZCBhY3Rpb24AQSBGSVBTLWFwcHJvdmVkIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGhhcyBiZWVuIGRldGVjdGVkIGluIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpdGggYSBwcm9wZXJseSBjb25maWd1cmVkIEZJUFMgbW9kdWxlIGF2YWlsYWJsZSBmb3IgbG9hZGluZy4gUGVyY29uYSBTZXJ2ZXIgZm9yIE15U1FMIHdpbGwgbG9hZCB0aGlzIG1vZHVsZSBhbmQgcnVuIGluIEZJUFMgbW9kZS4A
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
errmsg.sys
418.09 KB
lrw-r--r--
2025-12-16 08:06:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).