IiBWSU0gc3ludGF4IGZpbGUKIiBMYW5ndWFnZToJbnJvZmYvZ3JvZmYKIiBNYWludGFpbmVyOglBbGVqYW5kcm8gTPNwZXotVmFsZW5jaWEgPGRyYWR1bEB5YWhvby5jb20+CiIgVVJMOgkJaHR0cDovL2RyYWR1bC50cmlwb2QuY29tL3ZpbQoiIExhc3QgQ2hhbmdlOgkyMDAzIE1heSAyNAoiCiIge3t7MSBBY2tub3dsZWRnZW1lbnRzCiIKIiBBQ0tOT1dMRURHRU1FTlRTOgoiCiIgTXkgdGhhbmtzIHRvIErpcvRtZSBQbPt0IDxKZXJvbWUuUGx1dEBlbnMuZnI+LCB3aG8gd2FzIHRoZQoiIGNyZWF0b3IgYW5kIG1haW50YWluZXIgb2YgdGhpcyBzeW50YXggZmlsZSBmb3Igc2V2ZXJhbCB5ZWFycy4KIiBNYXkgSSBiZSBhcyBnb29kIGF0IGl0IGFzIGhlIGhhcyBiZWVuLgoiCiIge3t7MSBUb2RvCiIKIiBUT0RPOgoiCiIgKiBXcml0ZSBzeW50YXggaGlnaGxpZ2h0aW5nIGZpbGVzIGZvciB0aGUgcHJlcHJvY2Vzc29ycywKIglhbmQgaW50ZWdyYXRlIHdpdGggbnJvZmYudmltLgoiCiIKIiB7e3sxIFN0YXJ0IHN5bnRheCBoaWdobGlnaHRpbmcuCiIKIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKIiBGb3IgdmVyc2lvbiA2Lng6IFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZAoiCmlmIHZlcnNpb24gPCA2MDAKCXN5bnRheCBjbGVhcgplbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKCWZpbmlzaAplbmRpZgoKIgoiIHt7ezEgcGx1Z2luIHNldHRpbmdzLi4uCiIKIiB7e3syIGVuYWJsZSBzcGFjaW5nIGVycm9yIGhpZ2hsaWdodGluZwoiCmlmIGV4aXN0cygibnJvZmZfc3BhY2VfZXJyb3JzIikKCXN5biBtYXRjaCBucm9mZkVycm9yIC9cc1wrJC8KCXN5biBtYXRjaCBucm9mZlNwYWNlRXJyb3IgL1suLDo7IT9dXHNcezIsfS8KZW5kaWYKIgoiCiIge3t7MSBTcGVjaWFsIGZpbGUgc2V0dGluZ3MKIgoiIHt7ezIgIG1zIGV4ZGVudGVkIHBhcmFncmFwaHMgYXJlIG5vdCBpbiB0aGUgZGVmYXVsdCBwYXJhZ3JhcGhzIGxpc3QuCiIKc2V0bG9jYWwgcGFyYWdyYXBocys9WFAKIgoiIHt7ezIgQWN0aXZhdGUgbmF2aWdhdGlvbiB0byBwcmVwb3JjZXNzb3Igc2VjdGlvbnMuCiIKaWYgZXhpc3RzKCJiOnByZXByb2NzX2FzX3NlY3Rpb25zIikKCXNldGxvY2FsIHNlY3Rpb25zPUVRVFNQU1tcIEcxR1MKZW5kaWYKCiIge3t7MSBFc2NhcGUgc2VxdWVuY2VzCiIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzeW4gbWF0Y2ggbnJvZmZFc2NDaGFyIC9cXFtDTl0vIG5leHRncm91cD1ucm9mZkVzY0NoYXJBcmcKc3luIG1hdGNoIG5yb2ZmRXNjYXBlIC9cXFsqZmdtbllWXS8gbmV4dGdyb3VwPW5yb2ZmRXNjUmVnUGFyLG5yb2ZmRXNjUmVnQXJnCnN5biBtYXRjaCBucm9mZkVzY2FwZSAvXFxzWystXVw9LyBuZXh0Z3JvdXA9bnJvZmZTaXplCnN5biBtYXRjaCBucm9mZkVzY2FwZSAvXFxbJEFiRGhsTFJ2eFhaXS8gbmV4dGdyb3VwPW5yb2ZmRXNjUGFyLG5yb2ZmRXNjQXJnCgpzeW4gbWF0Y2ggbnJvZmZFc2NSZWdBcmcgLy4vIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZFc2NSZWdBcmcyIC8uLi8gY29udGFpbmVkCnN5biBtYXRjaCBucm9mZkVzY1JlZ1BhciAvKC8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZkVzY1JlZ0FyZzIKc3luIG1hdGNoIG5yb2ZmRXNjQXJnIC8uLyBjb250YWluZWQKc3luIG1hdGNoIG5yb2ZmRXNjQXJnMiAvLi4vIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZFc2NQYXIgLygvIGNvbnRhaW5lZCBuZXh0Z3JvdXA9bnJvZmZFc2NBcmcyCnN5biBtYXRjaCBucm9mZlNpemUgL1woKFxkXClcPVxkLyBjb250YWluZWQKCnN5biByZWdpb24gbnJvZmZFc2NDaGFyQXJnIHN0YXJ0PS8nLyBlbmQ9LycvIGNvbnRhaW5lZApzeW4gcmVnaW9uIG5yb2ZmRXNjQXJnIHN0YXJ0PS8nLyBlbmQ9LycvIGNvbnRhaW5lZCBjb250YWlucz1ucm9mZkVzY2FwZSxAbnJvZmZTcGVjaWFsCgppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoJc3luIHJlZ2lvbiBucm9mZkVzY1JlZ0FyZyBtYXRjaGdyb3VwPW5yb2ZmRXNjYXBlIHN0YXJ0PS9cWy8gZW5kPS9cXS8gY29udGFpbmVkIG9uZWxpbmUKCXN5biByZWdpb24gbnJvZmZTaXplIG1hdGNoZ3JvdXA9bnJvZmZFc2NhcGUgc3RhcnQ9L1xbLyBlbmQ9L1xdLyBjb250YWluZWQKZW5kaWYKCnN5biBtYXRjaCBucm9mZkVzY2FwZSAvXFxbYWRwcnR1e31dLwpzeW4gbWF0Y2ggbnJvZmZFc2NhcGUgL1xcJC8Kc3luIG1hdGNoIG5yb2ZmRXNjYXBlIC9cXFwkW0AqXS8KCiIge3t7MSBTdHJpbmdzIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN5biBtYXRjaCBucm9mZlNwZWNpYWxDaGFyIC9cXFtcXGVFPyEtXS8Kc3luIG1hdGNoIG5yb2ZmU3BhY2UgIlxcWyYlfnxeMCkvLF0iCnN5biBtYXRjaCBucm9mZlNwZWNpYWxDaGFyIC9cXCguLi8KCmlmIGV4aXN0cygiYjpucm9mZl9pc19ncm9mZiIpCglzeW4gbWF0Y2ggbnJvZmZTcGVjaWFsQ2hhciAvXFxcW1teXV0qXS8KCXN5biByZWdpb24gbnJvZmZQcmVzZXJ2ZSAgbWF0Y2hncm91cD1ucm9mZlNwZWNpYWxDaGFyIHN0YXJ0PS9cXD8vIGVuZD0vXFw/LyBvbmVsaW5lCmVuZGlmCgpzeW4gcmVnaW9uIG5yb2ZmUHJlc2VydmUgbWF0Y2hncm91cD1ucm9mZlNwZWNpYWxDaGFyIHN0YXJ0PS9cXCEvIGVuZD0vJC8gb25lbGluZQoKc3luIGNsdXN0ZXIgbnJvZmZTcGVjaWFsIGNvbnRhaW5zPW5yb2ZmU3BlY2lhbENoYXIsbnJvZmZTcGFjZQoKCnN5biByZWdpb24gbnJvZmZTdHJpbmcgc3RhcnQ9LyIvIGVuZD0vIi8gc2tpcD0vXFwkLyBjb250YWlucz1ucm9mZkVzY2FwZSxAbnJvZmZTcGVjaWFsIGNvbnRhaW5lZApzeW4gcmVnaW9uIG5yb2ZmU3RyaW5nIHN0YXJ0PS8nLyBlbmQ9LycvIHNraXA9L1xcJC8gY29udGFpbnM9bnJvZmZFc2NhcGUsQG5yb2ZmU3BlY2lhbCBjb250YWluZWQKCgoiIHt7ezEgTnVtYmVycyBhbmQgdW5pdHMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3luIG1hdGNoIG5yb2ZmTnVtQmxvY2sgL1swLTkuXVxhXD0vIGNvbnRhaW5lZCBjb250YWlucz1ucm9mZk51bWJlcgpzeW4gbWF0Y2ggbnJvZmZOdW1iZXIgL1xkXCtcKFwuXGQqXClcPS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZlVuaXQsbnJvZmZCYWRDaGFyCnN5biBtYXRjaCBucm9mZk51bWJlciAvXC5cZFwrKS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZlVuaXQsbnJvZmZCYWRDaGFyCnN5biBtYXRjaCBucm9mZkJhZENoYXIgLy4vIGNvbnRhaW5lZApzeW4gbWF0Y2ggbnJvZmZVbml0IC9baWNwUHN6bW52TXVdLyBjb250YWluZWQKCgoiIHt7ezEgUmVxdWVzdHMKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiIgUmVxdWVzdHMgYmVnaW4gd2l0aCAuIG9yICcgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsIG9yCiIgYWZ0ZXIgLmlmIG9yIC5pZS4KCnN5biBtYXRjaCBucm9mZlJlcUxlYWRlciAvXlsuJ10vCW5leHRncm91cD1ucm9mZlJlcU5hbWUgc2tpcHdoaXRlCnN5biBtYXRjaCBucm9mZlJlcUxlYWRlciAvWy4nXS8JY29udGFpbmVkIG5leHRncm91cD1ucm9mZlJlcU5hbWUgc2tpcHdoaXRlCgppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoiCiIgR05VIHRyb2ZmIGFsbG93cyBsb25nIHJlcXVlc3QgbmFtZXMKIgpzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9bXlx0IFxcXFs/XVwrLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmUmVxQXJnCmVsc2UKCXN5biBtYXRjaCBucm9mZlJlcU5hbWUgL1teXHQgXFxcWz9dXHsxLDJ9LyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmUmVxQXJnCmVuZGlmCgpzeW4gcmVnaW9uIHJvZmZSZXFBcmcgc3RhcnQ9L1xTLyBza2lwPS9cXCQvIGVuZD0vJC8gY29udGFpbmVkIGNvbnRhaW5zPW5yb2ZmRXNjYXBlLEBucm9mZlNwZWNpYWwsbnJvZmZTdHJpbmcsbnJvZmZFcnJvcixucm9mZlNwYWNlRXJyb3IsbnJvZmZOdW1CbG9jayxucm9mZkNvbW1lbnQKCiIge3t7MiBDb25kaXRpb25hbDogLmlmIC5pZSAuZWwKc3luIG1hdGNoIG5yb2ZmUmVxTmFtZSAvXChpZlx8aWVcKS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZkNvbmQgc2tpcHdoaXRlCnN5biBtYXRjaCBucm9mZlJlcU5hbWUgL2VsLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmUmVxTGVhZGVyIHNraXB3aGl0ZQpzeW4gbWF0Y2ggbnJvZmZDb25kIC9cU1wrLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmUmVxTGVhZGVyIHNraXB3aGl0ZQoKIiB7e3syIFN0cmluZyBkZWZpbml0aW9uOiAuZHMgLmFzCnN5biBtYXRjaCBucm9mZlJlcW5hbWUgL1tkYV1zLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmRGVmSWRlbnQgc2tpcHdoaXRlCnN5biBtYXRjaCBucm9mZkRlZklkZW50IC9cU1wrLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmRGVmaW5pdGlvbiBza2lwd2hpdGUKc3luIHJlZ2lvbiBucm9mZkRlZmluaXRpb24gbWF0Y2hncm91cD1ucm9mZlNwZWNpYWxDaGFyIHN0YXJ0PS8iLyBtYXRjaGdyb3VwPU5PTkUgZW5kPS9cXCIvbWU9ZS0yIHNraXA9L1xcJC8gc3RhcnQ9L1xTLyBlbmQ9LyQvIGNvbnRhaW5lZCBjb250YWlucz1ucm9mZkRlZlNwZWNpYWwKc3luIG1hdGNoIG5yb2ZmRGVmU3BlY2lhbCAvXFwkLyBjb250YWluZWQKc3luIG1hdGNoIG5yb2ZmRGVmU3BlY2lhbCAvXFxcKCguXClcPS4vIGNvbnRhaW5lZAoKaWYgZXhpc3RzKCJiOm5yb2ZmX2lzX2dyb2ZmIikKCXN5biBtYXRjaCBucm9mZkRlZlNwZWNpYWwgL1xcXFtbXl1dKl0vIGNvbnRhaW5lZAplbmRpZgoKIiB7e3syIE1hY3JvIGRlZmluaXRpb246IC5kZSAuYW0sIGFsc28gZGl2ZXJzaW9uOiAuZGkKc3luIG1hdGNoIG5yb2ZmUmVxTmFtZSAvXChkW2VpXVx8YW1cKS8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZklkZW50IHNraXB3aGl0ZQpzeW4gbWF0Y2ggbnJvZmZJZGVudCAvW15bPyggXHRdXCsvIGNvbnRhaW5lZAppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoJc3luIG1hdGNoIG5yb2ZmUmVxTmFtZSAvYWxzLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmSWRlbnQgc2tpcHdoaXRlCmVuZGlmCgoiIHt7ezIgUmVnaXN0ZXIgZGVmaW5pdGlvbjogLnJuIC5ycgpzeW4gbWF0Y2ggbnJvZmZSZXFOYW1lIC9bcm5dci8gY29udGFpbmVkIG5leHRncm91cD1ucm9mZklkZW50IHNraXB3aGl0ZQppZiBleGlzdHMoImI6bnJvZmZfaXNfZ3JvZmYiKQoJc3luIG1hdGNoIG5yb2ZmUmVxTmFtZSAvXChybm5cfGFsblwpLyBjb250YWluZWQgbmV4dGdyb3VwPW5yb2ZmSWRlbnQgc2tpcHdoaXRlCmVuZGlmCgoKIiB7e3sxIGVxbi90YmwvcGljCiIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiIgPGpwPgoiIFhYWDogd3JpdGUgcHJvcGVyIHN5bnRheCBoaWdobGlnaHQgZm9yIGVxbiAvIHRibCAvIHBpYyA/CiIgPGpwIC8+CgpzeW4gcmVnaW9uIG5yb2ZmRXF1YXRpb24gc3RhcnQ9L15cLlxzKkVRXD4vIGVuZD0vXlwuXHMqRU5cPi8Kc3luIHJlZ2lvbiBucm9mZlRhYmxlIHN0YXJ0PS9eXC5ccypUU1w+LyBlbmQ9L15cLlxzKlRFXD4vCnN5biByZWdpb24gbnJvZmZQaWN0dXJlIHN0YXJ0PS9eXC5ccypQU1w+LyBlbmQ9L15cLlxzKlBFXD4vCnN5biByZWdpb24gbnJvZmZSZWZlciBzdGFydD0vXlwuXHMqXFtcPi8gZW5kPS9eXC5ccypcXVw+LwpzeW4gcmVnaW9uIG5yb2ZmR3JhcCBzdGFydD0vXlwuXHMqRzFcPi8gZW5kPS9eXC5ccypHMlw+LwpzeW4gcmVnaW9uIG5yb2ZmR3JlbWxpbiBzdGFydD0vXlwuXHMqR1NcPi8gZW5kPS9eXC5ccypHRXxHRlw+LwoKIiB7e3sxIENvbW1lbnRzCiIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzeW4gcmVnaW9uIG5yb2ZmSWdub3JlIHN0YXJ0PS9eWy4nXVxzKmlnLyBlbmQ9L15bJy5dXHMqXC4vCnN5biBtYXRjaCBucm9mZkNvbW1lbnQgL1woXlsuJ11ccypcKVw9XFwiLiovIGNvbnRhaW5zPW5yb2ZmVG9kbwpzeW4gbWF0Y2ggbnJvZmZDb21tZW50IC9eJycnLiovICBjb250YWlucz1ucm9mZlRvZG8KCmlmIGV4aXN0cygiYjpucm9mZl9pc19ncm9mZiIpCglzeW4gbWF0Y2ggbnJvZmZDb21tZW50ICJcXCMuKiQiIGNvbnRhaW5zPW5yb2ZmVG9kbwplbmRpZgoKc3luIGtleXdvcmQgbnJvZmZUb2RvIFRPRE8gWFhYIEZJWE1FIGNvbnRhaW5lZAoKIiB7e3sxIEhpbGlnaHRpbmcKIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIgoKIgoiIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQoiIEZvciB2ZXJzaW9uIDUuOCBhbmQgbGF0ZXI6IG9ubHkgd2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBoaWdobGlnaHRpbmcgeWV0CiIKaWYgdmVyc2lvbiA+PSA1MDggfHwgIWV4aXN0cygiZGlkX25yb2ZmX3N5bl9pbml0cyIpCgoJaWYgdmVyc2lvbiA8IDUwOAoJCWxldCBkaWRfbnJvZmZfc3luX2luaXRzID0gMQoJCWNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGxpbmsgPGFyZ3M+CgllbHNlCgkJY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgZGVmIGxpbmsgPGFyZ3M+CgllbmRpZgoKCUhpTGluayBucm9mZkVzY0NoYXIgbnJvZmZTcGVjaWFsQ2hhcgoJSGlMaW5rIG5yb2ZmRXNjQ2hhckFyIG5yb2ZmU3BlY2lhbENoYXIKCUhpTGluayBucm9mZlNwZWNpYWxDaGFyIFNwZWNpYWxDaGFyCglIaUxpbmsgbnJvZmZTcGFjZSBEZWxpbWl0ZXIKCglIaUxpbmsgbnJvZmZFc2NSZWdBcmcyIG5yb2ZmRXNjUmVnQXJnCglIaUxpbmsgbnJvZmZFc2NSZWdBcmcgbnJvZmZJZGVudAoKCUhpTGluayBucm9mZkVzY0FyZzIgbnJvZmZFc2NBcmcKCUhpTGluayBucm9mZkVzY1BhciBucm9mZkVzY2FwZQoKCUhpTGluayBucm9mZkVzY1JlZ1BhciBucm9mZkVzY2FwZQoJSGlMaW5rIG5yb2ZmRXNjQXJnIG5yb2ZmRXNjYXBlCglIaUxpbmsgbnJvZmZTaXplIG5yb2ZmRXNjYXBlCglIaUxpbmsgbnJvZmZFc2NhcGUgUHJlcHJvYwoKCUhpTGluayBucm9mZklnbm9yZSBDb21tZW50CglIaUxpbmsgbnJvZmZDb21tZW50IENvbW1lbnQKCUhpTGluayBucm9mZlRvZG8gVG9kbwoKCUhpTGluayBucm9mZlJlcUxlYWRlciBucm9mZlJlcXVlc3QKCUhpTGluayBucm9mZlJlcU5hbWUgbnJvZmZSZXF1ZXN0CglIaUxpbmsgbnJvZmZSZXF1ZXN0IFN0YXRlbWVudAoJSGlMaW5rIG5yb2ZmQ29uZCBQcmVDb25kaXQKCUhpTGluayBucm9mZkRlZklkZW50IG5yb2ZmSWRlbnQKCUhpTGluayBucm9mZklkZW50IElkZW50aWZpZXIKCglIaUxpbmsgbnJvZmZFcXVhdGlvbiBQcmVQcm9jCglIaUxpbmsgbnJvZmZUYWJsZSBQcmVQcm9jCglIaUxpbmsgbnJvZmZQaWN0dXJlIFByZVByb2MKCUhpTGluayBucm9mZlJlZmVyIFByZVByb2MKCUhpTGluayBucm9mZkdyYXAgUHJlUHJvYwoJSGlMaW5rIG5yb2ZmR3JlbWxpbiBQcmVQcm9jCgoJSGlMaW5rIG5yb2ZmTnVtYmVyIE51bWJlcgoJSGlMaW5rIG5yb2ZmQmFkQ2hhciBucm9mZkVycm9yCglIaUxpbmsgbnJvZmZTcGFjZUVycm9yIG5yb2ZmRXJyb3IKCUhpTGluayBucm9mZkVycm9yIEVycm9yCgoJSGlMaW5rIG5yb2ZmUHJlc2VydmUgU3RyaW5nCglIaUxpbmsgbnJvZmZTdHJpbmcgU3RyaW5nCglIaUxpbmsgbnJvZmZEZWZpbml0aW9uIFN0cmluZwoJSGlMaW5rIG5yb2ZmRGVmU3BlY2lhbCBTcGVjaWFsCgoJZGVsY29tbWFuZCBIaUxpbmsKCmVuZGlmCgpsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJucm9mZiIKCiIgdmltNjAwOiBzZXQgZmRtPW1hcmtlciBmZGw9MjoK