IiBWaW0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJUGFzY2FsCiIgVmVyc2lvbjogMi43CiIgTGFzdCBDaGFuZ2U6CTIwMDMgTWF5IDExCiIgTWFpbnRhaW5lcjogIFhhdmllciBDculndXQgPHhhdmllci5jcmVndXRAZW5zZWVpaHQuZnI+CiIgUHJldmlvdXMgTWFpbnRhaW5lcjoJTWFyaW8gRXVzZWJpbyA8YmlvQGRxLmZjdC51bmwucHQ+CgoiIENvbnRyaWJ1dG9yczogVGltIENoYXNlIDx0Y2hhc2VAY3NjLmNvbT4sIFN0YXMgR3JhYm9pcyA8c3RzaUB2dHJhaWxzLmNvbT4sCiIJTWF6ZW4gTkVJRkVSIDxtYXplbi5uZWlmZXIuMjAwMUBzdXBhZXJvLmZyPiwKIglLbGF1cyBIYXN0IDxLbGF1cy5IYXN0QGFyY29yLm5ldD4KCiIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKaWYgdmVyc2lvbiA8IDYwMAogIHN5bnRheCBjbGVhcgplbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKICBmaW5pc2gKZW5kaWYKCgpzeW4gY2FzZSBpZ25vcmUKc3luIHN5bmMgbGluZXM9MjUwCgpzeW4ga2V5d29yZCBwYXNjYWxCb29sZWFuCXRydWUgZmFsc2UKc3luIGtleXdvcmQgcGFzY2FsQ29uZGl0aW9uYWwJaWYgZWxzZSB0aGVuCnN5biBrZXl3b3JkIHBhc2NhbENvbnN0YW50CW5pbCBtYXhpbnQKc3luIGtleXdvcmQgcGFzY2FsTGFiZWwJCWNhc2UgZ290byBsYWJlbApzeW4ga2V5d29yZCBwYXNjYWxPcGVyYXRvcglhbmQgZGl2IGRvd250byBpbiBtb2Qgbm90IG9mIG9yIHBhY2tlZCB3aXRoCnN5biBrZXl3b3JkIHBhc2NhbFJlcGVhdAlkbyBmb3IgZG8gcmVwZWF0IHdoaWxlIHRvIHVudGlsCnN5biBrZXl3b3JkIHBhc2NhbFN0YXRlbWVudAlwcm9jZWR1cmUgZnVuY3Rpb24Kc3luIGtleXdvcmQgcGFzY2FsU3RhdGVtZW50CXByb2dyYW0gYmVnaW4gZW5kIGNvbnN0IHZhciB0eXBlCnN5biBrZXl3b3JkIHBhc2NhbFN0cnVjdAlyZWNvcmQKc3luIGtleXdvcmQgcGFzY2FsVHlwZQkJYXJyYXkgYm9vbGVhbiBjaGFyIGludGVnZXIgZmlsZSBwb2ludGVyIHJlYWwgc2V0CnN5biBrZXl3b3JkIHBhc2NhbFR5cGUJCXN0cmluZyB0ZXh0IHZhcmlhbnQKCgpzeW4ga2V5d29yZCBwYXNjYWxUb2RvIGNvbnRhaW5lZAlUT0RPCgoKIiBTdHJpbmcKaWYgIWV4aXN0cygicGFzY2FsX29uZV9saW5lX3N0cmluZyIpCiAgc3luIHJlZ2lvbiAgcGFzY2FsU3RyaW5nIG1hdGNoZ3JvdXA9cGFzY2FsU3RyaW5nIHN0YXJ0PSsnKyBlbmQ9KycrIGNvbnRhaW5zPXBhc2NhbFN0cmluZ0VzY2FwZQogIGlmIGV4aXN0cygicGFzY2FsX2dwYyIpCiAgICBzeW4gcmVnaW9uICBwYXNjYWxTdHJpbmcgbWF0Y2hncm91cD1wYXNjYWxTdHJpbmcgc3RhcnQ9KyIrIGVuZD0rIisgY29udGFpbnM9cGFzY2FsU3RyaW5nRXNjYXBlR1BDCiAgZWxzZQogICAgc3luIHJlZ2lvbiAgcGFzY2FsU3RyaW5nRXJyb3IgbWF0Y2hncm91cD1wYXNjYWxTdHJpbmdFcnJvciBzdGFydD0rIisgZW5kPSsiKyBjb250YWlucz1wYXNjYWxTdHJpbmdFc2NhcGUKICBlbmRpZgplbHNlCiAgIndyb25nIHN0cmluZ3MKICBzeW4gcmVnaW9uICBwYXNjYWxTdHJpbmdFcnJvciBtYXRjaGdyb3VwPXBhc2NhbFN0cmluZ0Vycm9yIHN0YXJ0PSsnKyBlbmQ9KycrIGVuZD0rJCsgY29udGFpbnM9cGFzY2FsU3RyaW5nRXNjYXBlCiAgaWYgZXhpc3RzKCJwYXNjYWxfZ3BjIikKICAgIHN5biByZWdpb24gIHBhc2NhbFN0cmluZ0Vycm9yIG1hdGNoZ3JvdXA9cGFzY2FsU3RyaW5nRXJyb3Igc3RhcnQ9KyIrIGVuZD0rIisgZW5kPSskKyBjb250YWlucz1wYXNjYWxTdHJpbmdFc2NhcGVHUEMKICBlbHNlCiAgICBzeW4gcmVnaW9uICBwYXNjYWxTdHJpbmdFcnJvciBtYXRjaGdyb3VwPXBhc2NhbFN0cmluZ0Vycm9yIHN0YXJ0PSsiKyBlbmQ9KyIrIGVuZD0rJCsgY29udGFpbnM9cGFzY2FsU3RyaW5nRXNjYXBlCiAgZW5kaWYKCiAgInJpZ2h0IHN0cmluZ3MKICBzeW4gcmVnaW9uICBwYXNjYWxTdHJpbmcgbWF0Y2hncm91cD1wYXNjYWxTdHJpbmcgc3RhcnQ9KycrIGVuZD0rJysgb25lbGluZSBjb250YWlucz1wYXNjYWxTdHJpbmdFc2NhcGUKICAiIFRvIHNlZSB0aGUgc3RhcnQgYW5kIGVuZCBvZiBzdHJpbmdzOgogICIgc3luIHJlZ2lvbiAgcGFzY2FsU3RyaW5nIG1hdGNoZ3JvdXA9cGFzY2FsU3RyaW5nRXJyb3Igc3RhcnQ9KycrIGVuZD0rJysgb25lbGluZSBjb250YWlucz1wYXNjYWxTdHJpbmdFc2NhcGUKICBpZiBleGlzdHMoInBhc2NhbF9ncGMiKQogICAgc3luIHJlZ2lvbiAgcGFzY2FsU3RyaW5nIG1hdGNoZ3JvdXA9cGFzY2FsU3RyaW5nIHN0YXJ0PSsiKyBlbmQ9KyIrIG9uZWxpbmUgY29udGFpbnM9cGFzY2FsU3RyaW5nRXNjYXBlR1BDCiAgZWxzZQogICAgc3luIHJlZ2lvbiAgcGFzY2FsU3RyaW5nRXJyb3IgbWF0Y2hncm91cD1wYXNjYWxTdHJpbmdFcnJvciBzdGFydD0rIisgZW5kPSsiKyBvbmVsaW5lIGNvbnRhaW5zPXBhc2NhbFN0cmluZ0VzY2FwZQogIGVuZGlmCmVuZApzeW4gbWF0Y2ggICBwYXNjYWxTdHJpbmdFc2NhcGUJCWNvbnRhaW5lZCAiJyciCnN5biBtYXRjaCAgIHBhc2NhbFN0cmluZ0VzY2FwZUdQQwljb250YWluZWQgJyIiJwoKCiIgc3luIG1hdGNoICAgcGFzY2FsSWRlbnRpZmllcgkJIlw8W2EtekEtWl9dW2EtekEtWjAtOV9dKlw+IgoKCmlmIGV4aXN0cygicGFzY2FsX3N5bWJvbF9vcGVyYXRvciIpCiAgc3luIG1hdGNoICAgcGFzY2FsU3ltYm9sT3BlcmF0b3IgICAgICAiWytcLS8qPV0iCiAgc3luIG1hdGNoICAgcGFzY2FsU3ltYm9sT3BlcmF0b3IgICAgICAiWzw+XT1cPSIKICBzeW4gbWF0Y2ggICBwYXNjYWxTeW1ib2xPcGVyYXRvciAgICAgICI8PiIKICBzeW4gbWF0Y2ggICBwYXNjYWxTeW1ib2xPcGVyYXRvciAgICAgICI6PSIKICBzeW4gbWF0Y2ggICBwYXNjYWxTeW1ib2xPcGVyYXRvciAgICAgICJbKCldIgogIHN5biBtYXRjaCAgIHBhc2NhbFN5bWJvbE9wZXJhdG9yICAgICAgIlwuXC4iCiAgc3luIG1hdGNoICAgcGFzY2FsU3ltYm9sT3BlcmF0b3IgICAgICAgIltcXi5dIgogIHN5biBtYXRjaCAgIHBhc2NhbE1hdHJpeERlbGltaXRlcgkiW11bXSIKICAiaWYgeW91IHByZWZlciB5b3UgY2FuIGhpZ2hsaWdodCB0aGUgcmFuZ2UKICAic3luIG1hdGNoICBwYXNjYWxNYXRyaXhEZWxpbWl0ZXIJIltcZFwrXC5cLlxkXCtdIgplbmRpZgoKc3luIG1hdGNoICBwYXNjYWxOdW1iZXIJCSItXD1cPFxkXCtcPiIKc3luIG1hdGNoICBwYXNjYWxGbG9hdAkJIi1cPVw8XGRcK1wuXGRcK1w+IgpzeW4gbWF0Y2ggIHBhc2NhbEZsb2F0CQkiLVw9XDxcZFwrXC5cZFwrW2VFXS1cPVxkXCtcPiIKc3luIG1hdGNoICBwYXNjYWxIZXhOdW1iZXIJIlwkWzAtOWEtZkEtRl1cK1w+IgoKaWYgZXhpc3RzKCJwYXNjYWxfbm9fdGFicyIpCiAgc3luIG1hdGNoIHBhc2NhbFNob3dUYWIgIlx0IgplbmRpZgoKc3luIHJlZ2lvbiBwYXNjYWxDb21tZW50CXN0YXJ0PSIoXCoiICBlbmQ9IlwqKSIgY29udGFpbnM9cGFzY2FsVG9kbwpzeW4gcmVnaW9uIHBhc2NhbENvbW1lbnQJc3RhcnQ9InsiICBlbmQ9In0iIGNvbnRhaW5zPXBhc2NhbFRvZG8KCgppZiAhZXhpc3RzKCJwYXNjYWxfbm9fZnVuY3Rpb25zIikKICAiIGFycmF5IGZ1bmN0aW9ucwogIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCXBhY2sgdW5wYWNrCgogICIgbWVtb3J5IGZ1bmN0aW9uCiAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JRGlzcG9zZSBOZXcKCiAgIiBtYXRoIGZ1bmN0aW9ucwogIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUFicyBBcmN0YW4gQ29zIEV4cCBMbiBTaW4gU3FyIFNxcnQKCiAgIiBmaWxlIGZ1bmN0aW9ucwogIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUVvZiBFb2xuIFdyaXRlIFdyaXRlbG4KICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkCUlucHV0IE91dHB1dAoKICBpZiBleGlzdHMoInBhc2NhbF90cmFkaXRpb25hbCIpCiAgICAiIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3Qgc2VlbSB0byBiZSBkZWZpbmVkIGluIFR1cmJvIFBhc2NhbAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JR2V0IFBhZ2UgUHV0CiAgZW5kaWYKCiAgIiBvcmRpbmFsIGZ1bmN0aW9ucwogIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCU9kZCBQcmVkIFN1Y2MKCiAgIiB0cmFuc2ZlcnQgZnVuY3Rpb25zCiAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JQ2hyIE9yZCBSb3VuZCBUcnVuYwplbmRpZgoKCmlmICFleGlzdHMoInBhc2NhbF90cmFkaXRpb25hbCIpCgogIHN5biBrZXl3b3JkIHBhc2NhbFN0YXRlbWVudAljb25zdHJ1Y3RvciBkZXN0cnVjdG9yIGltcGxlbWVudGF0aW9uIGluaGVyaXRlZAogIHN5biBrZXl3b3JkIHBhc2NhbFN0YXRlbWVudAlpbnRlcmZhY2UgdW5pdCB1c2VzCiAgc3luIGtleXdvcmQgcGFzY2FsTW9kaWZpZXIJYWJzb2x1dGUgYXNzZW1ibGVyIGV4dGVybmFsIGZhciBmb3J3YXJkIGlubGluZQogIHN5biBrZXl3b3JkIHBhc2NhbE1vZGlmaWVyCWludGVycnVwdCBuZWFyIHZpcnR1YWwKICBzeW4ga2V5d29yZCBwYXNjYWxBY2Nlcwlwcml2YXRlIHB1YmxpYwogIHN5biBrZXl3b3JkIHBhc2NhbFN0cnVjdAlvYmplY3QKICBzeW4ga2V5d29yZCBwYXNjYWxPcGVyYXRvcglzaGwgc2hyIHhvcgoKICBzeW4gcmVnaW9uIHBhc2NhbFByZVByb2MJc3RhcnQ9IihcKlwkIiAgZW5kPSJcKikiIGNvbnRhaW5zPXBhc2NhbFRvZG8KICBzeW4gcmVnaW9uIHBhc2NhbFByZVByb2MJc3RhcnQ9IntcJCIgIGVuZD0ifSIKCiAgc3luIHJlZ2lvbiAgcGFzY2FsQXNtCQltYXRjaGdyb3VwPXBhc2NhbEFzbUtleSBzdGFydD0iXDxhc21cPiIgZW5kPSJcPGVuZFw+IiBjb250YWlucz1wYXNjYWxDb21tZW50LHBhc2NhbFByZVByb2MKCiAgc3luIGtleXdvcmQgcGFzY2FsVHlwZQlTaG9ydEludCBMb25nSW50IEJ5dGUgV29yZAogIHN5biBrZXl3b3JkIHBhc2NhbFR5cGUJQnl0ZUJvb2wgV29yZEJvb2wgTG9uZ0Jvb2wKICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCUNhcmRpbmFsIExvbmdXb3JkCiAgc3luIGtleXdvcmQgcGFzY2FsVHlwZQlTaW5nbGUgRG91YmxlIEV4dGVuZGVkIENvbXAKICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVBDaGFyCgoKICBpZiAhZXhpc3RzICgicGFzY2FsX2ZwYyIpCiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkCVJlc3VsdAogIGVuZGlmCgogIGlmIGV4aXN0cygicGFzY2FsX2ZwYyIpCiAgICBzeW4gcmVnaW9uIHBhc2NhbENvbW1lbnQJc3RhcnQ9Ii8vIiBlbmQ9IiQiCiAgICBzeW4ga2V5d29yZCBwYXNjYWxTdGF0ZW1lbnQJZmFpbCBvdGhlcndpc2Ugb3BlcmF0b3IKICAgIHN5biBrZXl3b3JkIHBhc2NhbERpcmVjdGl2ZQlwb3BzdGFjawogICAgc3luIGtleXdvcmQgcGFzY2FsUHJlZGVmaW5lZCBzZWxmCiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVNob3J0U3RyaW5nIEFuc2lTdHJpbmcgV2lkZVN0cmluZwogIGVuZGlmCgogIGlmIGV4aXN0cygicGFzY2FsX2dwYyIpCiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVNtYWxsSW50CiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCUFuc2lDaGFyCiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVBBbnNpQ2hhcgogIGVuZGlmCgogIGlmIGV4aXN0cygicGFzY2FsX2RlbHBoaSIpCiAgICBzeW4gcmVnaW9uIHBhc2NhbENvbW1lbnQJc3RhcnQ9Ii8vIiAgZW5kPSIkIiBjb250YWlucz1wYXNjYWxUb2RvCiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVNtYWxsSW50IEludDY0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVJlYWw0OCBDdXJyZW5jeQogICAgc3luIGtleXdvcmQgcGFzY2FsVHlwZQlBbnNpQ2hhciBXaWRlQ2hhcgogICAgc3luIGtleXdvcmQgcGFzY2FsVHlwZQlTaG9ydFN0cmluZyBBbnNpU3RyaW5nIFdpZGVTdHJpbmcKICAgIHN5biBrZXl3b3JkIHBhc2NhbFR5cGUJUEFuc2lDaGFyIFBXaWRlQ2hhcgogICAgc3luIG1hdGNoICBwYXNjYWxGbG9hdAkiLVw9XDxcZFwrXC5cZFwrW2REXS1cPVxkXCtcPiIKICAgIHN5biBtYXRjaCAgcGFzY2FsU3RyaW5nRXNjYXBlCWNvbnRhaW5lZCAiI1sxMl1bMC05XVw9WzAtOV1cPSIKICAgIHN5biBrZXl3b3JkIHBhc2NhbFN0cnVjdAljbGFzcyBkaXNwaW50ZXJmYWNlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxFeGNlcHRpb24JdHJ5IGV4Y2VwdCByYWlzZSBhdCBvbiBmaW5hbGx5CiAgICBzeW4ga2V5d29yZCBwYXNjYWxTdGF0ZW1lbnQJb3V0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxTdGF0ZW1lbnQJbGlicmFyeSBwYWNrYWdlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxTdGF0ZW1lbnQJaW5pdGlhbGl6YXRpb24gZmluYWxpemF0aW9uIHVzZXMgZXhwb3J0cwogICAgc3luIGtleXdvcmQgcGFzY2FsU3RhdGVtZW50CXByb3BlcnR5IG91dCByZXNvdXJjZXN0cmluZyB0aHJlYWR2YXIKICAgIHN5biBrZXl3b3JkIHBhc2NhbE1vZGlmaWVyCWNvbnRhaW5zCiAgICBzeW4ga2V5d29yZCBwYXNjYWxNb2RpZmllcglvdmVycmlkZGVuIHJlaW50cm9kdWNlIGFic3RyYWN0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxNb2RpZmllcglvdmVycmlkZSBleHBvcnQgZHluYW1pYyBuYW1lIG1lc3NhZ2UKICAgIHN5biBrZXl3b3JkIHBhc2NhbE1vZGlmaWVyCWRpc3BpZCBpbmRleCBzdG9yZWQgZGVmYXVsdCBub2RlZmF1bHQgcmVhZG9ubHkKICAgIHN5biBrZXl3b3JkIHBhc2NhbE1vZGlmaWVyCXdyaXRlb25seSBpbXBsZW1lbnRzIG92ZXJsb2FkIHJlcXVpcmVzIHJlc2lkZW50CiAgICBzeW4ga2V5d29yZCBwYXNjYWxBY2Nlcwlwcm90ZWN0ZWQgcHVibGlzaGVkIGF1dG9tYXRlZAogICAgc3luIGtleXdvcmQgcGFzY2FsRGlyZWN0aXZlCXJlZ2lzdGVyIHBhc2NhbCBjdmFyIGNkZWNsIHN0ZGNhbGwgc2FmZWNhbGwKICAgIHN5biBrZXl3b3JkIHBhc2NhbE9wZXJhdG9yCWFzIGlzCiAgZW5kaWYKCiAgaWYgZXhpc3RzKCJwYXNjYWxfbm9fZnVuY3Rpb25zIikKICAgICJzeW4ga2V5d29yZCBwYXNjYWxNb2RpZmllcglyZWFkIHdyaXRlCiAgICAibWF5IGNvbmZ1c2Ugd2l0aCBSZWFkIGFuZCBXcml0ZSBmdW5jdGlvbnMuICBOb3QgZWFzeSB0byBoYW5kbGUuCiAgZWxzZQogICAgIiBjb250cm9sIGZsb3cgZnVuY3Rpb25zCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglCcmVhayBDb250aW51ZSBFeGl0IEhhbHQgUnVuRXJyb3IKCiAgICAiIG9yZGluYWwgZnVuY3Rpb25zCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglEZWMgSW5jIEhpZ2ggTG93CgogICAgIiBtYXRoIGZ1bmN0aW9ucwogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JRnJhYyBJbnQgUGkKCiAgICAiIHN0cmluZyBmdW5jdGlvbnMKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUNvbmNhdCBDb3B5IERlbGV0ZSBJbnNlcnQgTGVuZ3RoIFBvcyBTdHIgVmFsCgogICAgIiBtZW1vcnkgZnVuY3Rpb24KICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUZyZWVNZW0gR2V0TWVtIE1heEF2YWlsIE1lbUF2YWlsCgogICAgIiBwb2ludGVyIGFuZCBhZGRyZXNzIGZ1bmN0aW9ucwogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JQWRkciBBc3NpZ25lZCBDU2VnIERTZWcgT2ZzIFB0ciBTZWcgU1B0ciBTU2VnCgogICAgIiBtaXNjIGZ1bmN0aW9ucwogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JRXhjbHVkZSBGaWxsQ2hhciBIaSBJbmNsdWRlIExvIE1vdmUgUGFyYW1Db3VudAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JUGFyYW1TdHIgUmFuZG9tIFJhbmRvbWl6ZSBTaXplT2YgU3dhcCBUeXBlT2YKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCVVwQ2FzZQoKICAgICIgcHJlZGVmaW5lZCB2YXJpYWJsZXMKICAgIHN5biBrZXl3b3JkIHBhc2NhbFByZWRlZmluZWQgRXJyb3JBZGRyIEV4aXRDb2RlIEV4aXRQcm9jIEZpbGVNb2RlIEZyZWVMaXN0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkIEZyZWVaZXJvIEhlYXBFbmQgSGVhcEVycm9yIEhlYXBPcmcgSGVhcFB0cgogICAgc3luIGtleXdvcmQgcGFzY2FsUHJlZGVmaW5lZCBJbk91dFJlcyBPdnJDb2RlTGlzdCBPdnJEZWJ1Z1B0ciBPdnJEb3NIYW5kbGUKICAgIHN5biBrZXl3b3JkIHBhc2NhbFByZWRlZmluZWQgT3ZyRW1zSGFuZGxlIE92ckhlYXBFbmQgT3ZySGVhcE9yZyBPdnJIZWFwUHRyCiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkIE92ckhlYXBTaXplIE92ckxvYWRMaXN0IFByZWZpeFNlZyBSYW5kU2VlZAogICAgc3luIGtleXdvcmQgcGFzY2FsUHJlZGVmaW5lZCBTYXZlSW50MDAgU2F2ZUludDAyIFNhdmVJbnQxQiBTYXZlSW50MjEKICAgIHN5biBrZXl3b3JkIHBhc2NhbFByZWRlZmluZWQgU2F2ZUludDIzIFNhdmVJbnQyNCBTYXZlSW50MzQgU2F2ZUludDM1CiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkIFNhdmVJbnQzNiBTYXZlSW50MzcgU2F2ZUludDM4IFNhdmVJbnQzOQogICAgc3luIGtleXdvcmQgcGFzY2FsUHJlZGVmaW5lZCBTYXZlSW50M0EgU2F2ZUludDNCIFNhdmVJbnQzQyBTYXZlSW50M0QKICAgIHN5biBrZXl3b3JkIHBhc2NhbFByZWRlZmluZWQgU2F2ZUludDNFIFNhdmVJbnQzRiBTYXZlSW50NzUgU2VnQTAwMCBTZWdCMDAwCiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkIFNlZ0I4MDAgU2VsZWN0b3JJbmMgU3RhY2tMaW1pdCBUZXN0ODA4NwoKICAgICIgZmlsZSBmdW5jdGlvbnMKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUFwcGVuZCBBc3NpZ24gQmxvY2tSZWFkIEJsb2NrV3JpdGUgQ2hEaXIgQ2xvc2UKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUVyYXNlIEZpbGVQb3MgRmlsZVNpemUgRmx1c2ggR2V0RGlyIElPUmVzdWx0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglNa0RpciBSZWFkIFJlYWRsbiBSZW5hbWUgUmVzZXQgUmV3cml0ZSBSbURpcgogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU2VlayBTZWVrRW9mIFNlZWtFb2xuIFNldFRleHRCdWYgVHJ1bmNhdGUKCiAgICAiIGNydCB1bml0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglBc3NpZ25DcnQgQ2xyRW9sIENsclNjciBEZWxheSBEZWxMaW5lIEdvdG9YWQogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JSGlnaFZpZGVvIEluc0xpbmUgS2V5UHJlc3NlZCBMb3dWaWRlbyBOb3JtVmlkZW8KICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCU5vU291bmQgUmVhZEtleSBTb3VuZCBUZXh0QmFja2dyb3VuZCBUZXh0Q29sb3IKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCVRleHRNb2RlIFdoZXJlWCBXaGVyZVkgV2luZG93CiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkIENoZWNrQnJlYWsgQ2hlY2tFT0YgQ2hlY2tTbm93IERpcmVjdFZpZGVvCiAgICBzeW4ga2V5d29yZCBwYXNjYWxQcmVkZWZpbmVkIExhc3RNb2RlIFRleHRBdHRyIFdpbmRNaW4gV2luZE1heAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24gQmlnQ3Vyc29yIEN1cnNvck9mZiBDdXJzb3JPbgogICAgc3luIGtleXdvcmQgcGFzY2FsQ29uc3RhbnQgQmxhY2sgQmx1ZSBHcmVlbiBDeWFuIFJlZCBNYWdlbnRhIEJyb3duCiAgICBzeW4ga2V5d29yZCBwYXNjYWxDb25zdGFudCBMaWdodEdyYXkgRGFya0dyYXkgTGlnaHRCbHVlIExpZ2h0R3JlZW4KICAgIHN5biBrZXl3b3JkIHBhc2NhbENvbnN0YW50IExpZ2h0Q3lhbiBMaWdodFJlZCBMaWdodE1hZ2VudGEgWWVsbG93IFdoaXRlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxDb25zdGFudCBCbGluayBTY3JlZW5XaWR0aCBTY3JlZW5IZWlnaHQgYnc0MAogICAgc3luIGtleXdvcmQgcGFzY2FsQ29uc3RhbnQgY280MCBidzgwIGNvODAgbW9ubwogICAgc3luIGtleXdvcmQgcGFzY2FsUHJlZGVmaW5lZCBUZXh0Q2hhcgoKICAgICIgRE9TIHVuaXQKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUFkZERpc2sgRGlza0ZyZWUgRGlza1NpemUgRG9zRXhpdENvZGUgRG9zVmVyc2lvbgogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JRW52Q291bnQgRW52U3RyIEV4ZWMgRXhwYW5kIEZpbmRDbG9zZSBGaW5kRmlyc3QKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUZpbmROZXh0IEZTZWFyY2ggRlNwbGl0IEdldENCcmVhayBHZXREYXRlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXRFbnYgR2V0RkF0dHIgR2V0RlRpbWUgR2V0SW50VmVjIEdldFRpbWUKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUdldFZlcmlmeSBJbnRyIEtlZXAgTVNEb3MgUGFja1RpbWUgU2V0Q0JyZWFrCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTZXREYXRlIFNldEZBdHRyIFNldEZUaW1lIFNldEludFZlYyBTZXRUaW1lCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTZXRWZXJpZnkgU3dhcFZlY3RvcnMgVW5QYWNrVGltZQogICAgc3luIGtleXdvcmQgcGFzY2FsQ29uc3RhbnQJRkNhcnJ5IEZQYXJpdHkgRkF1eGlsaWFyeSBGWmVybyBGU2lnbiBGT3ZlcmZsb3cKICAgIHN5biBrZXl3b3JkIHBhc2NhbENvbnN0YW50CUhpZGRlbiBTeXNmaWxlIFZvbHVtZUlkIERpcmVjdG9yeSBBcmNoaXZlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxDb25zdGFudAlBbnlGaWxlIGZtQ2xvc2VkIGZtSW5wdXQgZm1PdXRwdXQgZm1Jbm91dAogICAgc3luIGtleXdvcmQgcGFzY2FsQ29uc3RhbnQJVGV4dFJlY05hbWVMZW5ndGggVGV4dFJlY0J1ZlNpemUKICAgIHN5biBrZXl3b3JkIHBhc2NhbFR5cGUJQ29tU3RyIFBhdGhTdHIgRGlyU3RyIE5hbWVTdHIgRXh0U3RyIFNlYXJjaFJlYwogICAgc3luIGtleXdvcmQgcGFzY2FsVHlwZQlGaWxlUmVjIFRleHRCdWYgVGV4dFJlYyBSZWdpc3RlcnMgRGF0ZVRpbWUKICAgIHN5biBrZXl3b3JkIHBhc2NhbFByZWRlZmluZWQgRG9zRXJyb3IKCiAgICAiR3JhcGggVW5pdAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JQXJjIEJhciBCYXIzRCBDaXJjbGUgQ2xlYXJEZXZpY2UgQ2xlYXJWaWV3UG9ydAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JQ2xvc2VHcmFwaCBEZXRlY3RHcmFwaCBEcmF3UG9seSBFbGxpcHNlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglGaWxsRWxsaXBzZSBGaWxsUG9seSBGbG9vZEZpbGwgR2V0QXJjQ29vcmRzCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXRBc3BlY3RSYXRpbyBHZXRCa0NvbG9yIEdldENvbG9yCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXREZWZhdWx0UGFsZXR0ZSBHZXREcml2ZXJOYW1lIEdldEZpbGxQYXR0ZXJuCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXRGaWxsU2V0dGluZ3MgR2V0R3JhcGhNb2RlIEdldEltYWdlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXRMaW5lU2V0dGluZ3MgR2V0TWF4Q29sb3IgR2V0TWF4TW9kZSBHZXRNYXhYCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXRNYXhZIEdldE1vZGVOYW1lIEdldE1vZGVSYW5nZSBHZXRQYWxldHRlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglHZXRQYWxldHRlU2l6ZSBHZXRQaXhlbCBHZXRUZXh0U2V0dGluZ3MKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCUdldFZpZXdTZXR0aW5ncyBHZXRYIEdldFkgR3JhcGhEZWZhdWx0cwogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JR3JhcGhFcnJvck1zZyBHcmFwaFJlc3VsdCBJbWFnZVNpemUgSW5pdEdyYXBoCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglJbnN0YWxsVXNlckRyaXZlciBJbnN0YWxsVXNlckZvbnQgTGluZSBMaW5lUmVsCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglMaW5lVG8gTW92ZVJlbCBNb3ZlVG8gT3V0VGV4dCBPdXRUZXh0WFkKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCVBpZVNsaWNlIFB1dEltYWdlIFB1dFBpeGVsIFJlY3RhbmdsZQogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JUmVnaXN0ZXJCR0lEcml2ZXIgUmVnaXN0ZXJCR0lGb250CiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglSZXN0b3JlQ1JUTW9kZSBTZWN0b3IgU2V0QWN0aXZlUGFnZQogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU2V0QWxsUGFsbGV0dGUgU2V0QXNwZWN0UmF0aW8gU2V0QmtDb2xvcgogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU2V0Q29sb3IgU2V0RmlsbFBhdHRlcm4gU2V0RmlsbFN0eWxlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTZXRHcmFwaEJ1ZlNpemUgU2V0R3JhcGhNb2RlIFNldExpbmVTdHlsZQogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU2V0UGFsZXR0ZSBTZXRSR0JQYWxldHRlIFNldFRleHRKdXN0aWZ5CiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTZXRUZXh0U3R5bGUgU2V0VXNlckNoYXJTaXplIFNldFZpZXdQb3J0CiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTZXRWaXN1YWxQYWdlIFNldFdyaXRlTW9kZSBUZXh0SGVpZ2h0IFRleHRXaWR0aAogICAgc3luIGtleXdvcmQgcGFzY2FsVHlwZQlBcmNDb29yZHNUeXBlIEZpbGxQYXR0ZXJuVHlwZSBGaWxsU2V0dGluZ3NUeXBlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCUxpbmVTZXR0aW5nc1R5cGUgUGFsZXR0ZVR5cGUgUG9pbnRUeXBlCiAgICBzeW4ga2V5d29yZCBwYXNjYWxUeXBlCVRleHRTZXR0aW5nc1R5cGUgVmlld1BvcnRUeXBlCgogICAgIiBzdHJpbmcgZnVuY3Rpb25zCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTdHJBbGxvYyBTdHJCdWZTaXplIFN0ckNhdCBTdHJDb21wIFN0ckNvcHkKICAgIHN5biBrZXl3b3JkIHBhc2NhbEZ1bmN0aW9uCVN0ckRpc3Bvc2UgU3RyRUNvcHkgU3RyRW5kIFN0ckZtdCBTdHJJQ29tcAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU3RyTENhdCBTdHJMQ29tcCBTdHJMQ29weSBTdHJMZW4gU3RyTEZtdAogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU3RyTElDb21wIFN0ckxvd2VyIFN0ck1vdmUgU3RyTmV3IFN0clBhcwogICAgc3luIGtleXdvcmQgcGFzY2FsRnVuY3Rpb24JU3RyUENvcHkgU3RyUExDb3B5IFN0clBvcyBTdHJSU2NhbiBTdHJTY2FuCiAgICBzeW4ga2V5d29yZCBwYXNjYWxGdW5jdGlvbglTdHJVcHBlcgogIGVuZGlmCgplbmRpZgoKIiBEZWZpbmUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nLgoiIEZvciB2ZXJzaW9uIDUuNyBhbmQgZWFybGllcjogb25seSB3aGVuIG5vdCBkb25lIGFscmVhZHkKIiBGb3IgdmVyc2lvbiA1LjggYW5kIGxhdGVyOiBvbmx5IHdoZW4gYW4gaXRlbSBkb2Vzbid0IGhhdmUgaGlnaGxpZ2h0aW5nIHlldAppZiB2ZXJzaW9uID49IDUwOCB8fCAhZXhpc3RzKCJkaWRfcGFzY2FsX3N5bl9pbml0cyIpCiAgaWYgdmVyc2lvbiA8IDUwOAogICAgbGV0IGRpZF9wYXNjYWxfc3luX2luaXRzID0gMQogICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgbGluayA8YXJncz4KICBlbHNlCiAgICBjb21tYW5kIC1uYXJncz0rIEhpTGluayBoaSBkZWYgbGluayA8YXJncz4KICBlbmRpZgoKICBIaUxpbmsgcGFzY2FsQWNjZXMJCXBhc2NhbFN0YXRlbWVudAogIEhpTGluayBwYXNjYWxCb29sZWFuCQlCb29sZWFuCiAgSGlMaW5rIHBhc2NhbENvbW1lbnQJCUNvbW1lbnQKICBIaUxpbmsgcGFzY2FsQ29uZGl0aW9uYWwJQ29uZGl0aW9uYWwKICBIaUxpbmsgcGFzY2FsQ29uc3RhbnQJCUNvbnN0YW50CiAgSGlMaW5rIHBhc2NhbERlbGltaXRlcglJZGVudGlmaWVyCiAgSGlMaW5rIHBhc2NhbERpcmVjdGl2ZQlwYXNjYWxTdGF0ZW1lbnQKICBIaUxpbmsgcGFzY2FsRXhjZXB0aW9uCUV4Y2VwdGlvbgogIEhpTGluayBwYXNjYWxGbG9hdAkJRmxvYXQKICBIaUxpbmsgcGFzY2FsRnVuY3Rpb24JCUZ1bmN0aW9uCiAgSGlMaW5rIHBhc2NhbExhYmVsCQlMYWJlbAogIEhpTGluayBwYXNjYWxNYXRyaXhEZWxpbWl0ZXIJSWRlbnRpZmllcgogIEhpTGluayBwYXNjYWxNb2RpZmllcgkJVHlwZQogIEhpTGluayBwYXNjYWxOdW1iZXIJCU51bWJlcgogIEhpTGluayBwYXNjYWxPcGVyYXRvcgkJT3BlcmF0b3IKICBIaUxpbmsgcGFzY2FsUHJlZGVmaW5lZAlwYXNjYWxTdGF0ZW1lbnQKICBIaUxpbmsgcGFzY2FsUHJlUHJvYwkJUHJlUHJvYwogIEhpTGluayBwYXNjYWxSZXBlYXQJCVJlcGVhdAogIEhpTGluayBwYXNjYWxTdGF0ZW1lbnQJU3RhdGVtZW50CiAgSGlMaW5rIHBhc2NhbFN0cmluZwkJU3RyaW5nCiAgSGlMaW5rIHBhc2NhbFN0cmluZ0VzY2FwZQlTcGVjaWFsCiAgSGlMaW5rIHBhc2NhbFN0cmluZ0VzY2FwZUdQQwlTcGVjaWFsCiAgSGlMaW5rIHBhc2NhbFN0cmluZ0Vycm9yCUVycm9yCiAgSGlMaW5rIHBhc2NhbFN0cnVjdAkJcGFzY2FsU3RhdGVtZW50CiAgSGlMaW5rIHBhc2NhbFN5bWJvbE9wZXJhdG9yCXBhc2NhbE9wZXJhdG9yCiAgSGlMaW5rIHBhc2NhbFRvZG8JCVRvZG8KICBIaUxpbmsgcGFzY2FsVHlwZQkJVHlwZQogIEhpTGluayBwYXNjYWxVbmNsYXNzaWZpZWQJcGFzY2FsU3RhdGVtZW50CiAgIiAgSGlMaW5rIHBhc2NhbEFzbQkJQXNzZW1ibGVyCiAgSGlMaW5rIHBhc2NhbEVycm9yCQlFcnJvcgogIEhpTGluayBwYXNjYWxBc21LZXkJCXBhc2NhbFN0YXRlbWVudAogIEhpTGluayBwYXNjYWxTaG93VGFiCQlFcnJvcgoKICBkZWxjb21tYW5kIEhpTGluawplbmRpZgoKCmxldCBiOmN1cnJlbnRfc3ludGF4ID0gInBhc2NhbCIKCiIgdmltOiB0cz04IHN3PTIK