My43LjIKODY4YzQ3OTFkYjhkNmEyZmI2NTBjMjMwN2I0NjM0MjgzOWY0NWVhMAoECG86GVNhc3M6OlRyZWU6OlJvb3ROb2RlDDoOQGNoaWxkcmVuWwhvOhxTYXNzOjpUcmVlOjpDb21tZW50Tm9kZQw6C0B2YWx1ZVsGSSICDQEvKi8gU2hvcnRoYW5kIFN5bnRheCBQYXJzZXIKICovID09PT09PT09PT09PT09PT09PT09PT09CiAqLyBUaGUgc3ludGF4IHBhcnNlciBjb252ZXJ0cyBbc2hvcnRoYW5kIHN5bnRheF1bc2hvcnRdCiAqLyBpbnRvIGEgbWFwIG9mIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbXBhcmVkL21lcmdlZCB3aXRoCiAqLyBvdGhlciBjb25maWcgbWFwcyBhbmQgZ2xvYmFsIHNldHRpbmcuCiAqLwogKi8gW3Nob3J0XTogYi1hcGkuaHRtbAogKi8KICovIEBncm91cCB4LXBhcnNlciAqLwY6BkVUOgpAdHlwZToLc2lsZW50OwZbADoOQGZpbGVuYW1lMDoNQG9wdGlvbnN7ADoKQGxpbmVpBjoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DmkGOgxAb2Zmc2V0aQY6DUBlbmRfcG9zbzsSBzsOaQ47E2kZOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwlUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CUY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEZvOwcMOwhbBkkiAtAFLyogUGFyc2UKICogLS0tLS0KICovIFRoZSBgcGFyc2VgIGZ1bmN0aW9uIHByb3ZpZGVzIGFsbCB0aGUgc3ludGF4LXN1Z2FyIGluIFN1c3ksCiAqLyBjb252ZXJ0aW5nIHVzZXIgc2hvcnRoYW5kCiAqLyBpbnRvIGEgdXNhYmxlIG1hcCBvZiBrZXlzIGFuZCB2YWx1ZXMKICovIHRoYXQgY2FuIGJlIG5vcm1hbGl6ZWQgYW5kIHBhc3NlZCB0byBTdS4KICovCiAqLyBAZ3JvdXAgeC1wYXJzZXIKICovIEBzZWUgJHN1c3kKICovCiAqLyBAcGFyYW0ge2xpc3R9ICRzaG9ydGhhbmQgLQogKi8gICBTaG9ydGhhbmQgZXhwcmVzc2lvbiB0byBkZWZpbmUgdGhlIHdpZHRoIG9mIHRoZSBzcGFuLAogKi8gICBvcHRpb25hbGx5IGNvbnRhaW5pbmc6CiAqLyAgIC0gYSBjb3VudCwgbGVuZ3RoLCBvciBjb2x1bW4tbGlzdCBzcGFuOwogKi8gICAtIGBhdCAkbmAsIGBmaXJzdGAsIG9yIGBsYXN0YCBsb2NhdGlvbiBvbiBhc3ltbWV0cmljYWwgZ3JpZHM7CiAqLyAgIC0gYG5hcnJvd2AsIGB3aWRlYCwgb3IgYHdpZGVyYCBmb3Igb3B0aW9uYWxseSBzcHJlYWRpbmcKICovICAgICBhY3Jvc3MgYWRqYWNlbnQgZ3V0dGVyczsKICovICAgLSBgb2YgJG4gPHNwcmVhZD5gIGZvciBhdmFpbGFibGUgZ3JpZCBjb2x1bW5zCiAqLyAgICAgYW5kIHNwcmVhZCBvZiB0aGUgY29udGFpbmVyCiAqLyAgICAgKHNwYW4gY291bnRzIGxpa2UgYG9mIDZgIGFyZSBvbmx5IHZhbGlkCiAqLyAgICAgaW4gdGhlIGNvbnRleHQgb2Ygc3ltbWV0cmljYWwgZ3JpZHMpOwogKi8gICAtIGFuZCBgc2V0LWd1dHRlcnMgJG5gIHRvIG92ZXJyaWRlIGdsb2JhbCBndXR0ZXIgc2V0dGluZ3MKICovIEBwYXJhbSB7Ym9vbH0gJGNvbnRleHQtb25seSBbZmFsc2VdIC0KICovICAgQWxsb3cgdGhlIHBhcnNlciB0byBpZ25vcmUgc3BhbiBhbmQgc3Bhbi1zcHJlYWQgdmFsdWVzLAogKi8gICBvbmx5IHBhcnNpbmcgY29udGV4dCBhbmQgY29udGFpbmVyLXNwcmVhZC4KICovICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBhY2NlcHQgc3Bhbmxlc3MgdmFsdWVzLAogKi8gICBsaWtlIHRoZSBgZ3V0dGVycygpYCBzeW50YXguCiAqLyAgIFdoZW4gcGFyc2luZyBjb250ZXh0LW9ubHksCiAqLyAgIHRoZSBgb2ZgIGluZGljYXRvciBpcyBvcHRpb25hbC4KICovCiAqLyBAcmV0dXJuIHttYXB9IC0KICovICAgTWFwIG9mIHNwYW4gYW5kIGdyaWQgc2V0dGluZ3MKICovICAgcGFyc2VkIGZyb20gc2hvcnRoYW5kIGlucHV0IOKAkwogKi8gICBpbmNsdWRpbmcgYWxsIHRoZSBwcm9wZXJ0aWVzIGF2YWlsYWJsZSBnbG9iYWxseSDigJMKICovICAgYGNvbHVtbnNgLCBgZ3V0dGVyc2AsIGBzcHJlYWRgLCBgY29udGFpbmVyLXNwcmVhZGAg4oCTCiAqLyAgIGFsb25nIHdpdGggdGhlIHNwYW4tc3BlY2lmaWMgcHJvcGVydGllcwogKi8gICBgc3BhbmAsIGFuZCBgbG9jYXRpb25gLgogKi8KICovIEB0aHJvdwogKi8gICB3aGVuIGEgc2hvcnRoYW5kIHZhbHVlIGlzIG5vdCByZWNvZ25pemVkICovBjsJVDsKOws7BlsAOwwwOw1ACzsOaRI7D287EAk7EW87Egc7DmkSOxNpBjsUbzsSBzsOaTk7E2k0OxVADzsWQBBvOh1TYXNzOjpUcmVlOjpGdW5jdGlvbk5vZGUOOgpAbmFtZUkiD3N1c3ktcGFyc2UGOwlUOgpAYXJnc1sHWwdvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzseSSIOc2hvcnRoYW5kBjsJVDoWQHVuZGVyc2NvcmVkX25hbWVJIg5zaG9ydGhhbmQGOwlUOw5pOzsPbzsQCTsRbzsSBzsOaTs7E2kIOxRvOxIHOw5pOzsTaRI7FUAPOxZAEDsM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OwxADzsqMDsrMDsGWwA7DDA7DUALOw5pTTsPbzsQCTsRbzsSBzsOaU07E2kJOxRvOxIHOw5pTTsTaRE7FUAPOxZAEG87JQ47HkkiCW5leHQGOwlUOyZvOyIJOwhALjsOaU47D287EAk7EW87Egc7DmlOOxNpDzsUbzsSBzsOaU47E2kUOxVADzsWQBA7DEAPOyowOyswOwZbADsMMDsNQAs7DmlOOw9vOxAJOxFvOxIHOw5pTjsTaQk7FG87Egc7DmlOOxNpFDsVQA87FkAQbzsHDDsIWwZJIjUvKiBBbGxvdyBjb250ZXh0LW9ubHkgc2hvcnRoYW5kLCB3aXRob3V0IHNwYW4gKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pUDsPbzsQCTsRbzsSBzsOaVA7E2kIOxRvOxIHOw5pUDsTaTU7FUAPOxZAEHU6F1Nhc3M6OlRyZWU6OklmTm9kZQKfDwQIWwhvOiJTYXNzOjpTY3JpcHQ6OlRyZWU6Ok9wZXJhdGlvbgw6DkBvcGVyYW5kMW86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiEWNvbnRleHQtb25seQY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiEWNvbnRleHRfb25seQY7CVQ6CkBsaW5laVE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwtpUToMQG9mZnNldGkNOg1AZW5kX3Bvc287Dwc7C2lROxBpGjoKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzonU2Fzczo6U2NyaXB0OjpUcmVlOjpVbmFyeU9wZXJhdGlvbgs6DUBvcGVyYW5kbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDsISSIKaW5kZXgGOwlUOgpAYXJnc1sHbzsHCzsISSIOc2hvcnRoYW5kBjsJVDsKSSIOc2hvcnRoYW5kBjsJVDsLaVE7DG87DQk7Dm87Dwc7C2lROxBpKzsRbzsPBzsLaVE7EGk1OxJADTsTQA47GkANOxtAE286IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7I0kiB29mBjsJVDsbQBM6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsLaVE7DG87DQk7Dm87Dwc7C2lROxBpNzsRbzsPBzsLaVE7EGk7OxJADTsTQA47GkANOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoRQGtleV9zdHJpbmdzewA6CUBtYXB7ADoLQHNwbGF0MDoRQGt3YXJnX3NwbGF0MDsLaVE7DG87DQk7Dm87Dwc7C2lROxBpJTsRbzsPBzsLaVE7EGk8OxJADTsTQA47GkANOxtAEzoOQG9wZXJhdG9yOghub3Q7C2lROwxvOw0JOw5vOw8HOwtpUTsQaSU7EW87Dwc7C2lROxBpPDsSQA07E0AOOxpADTsbQBM7LjoIYW5kOwtpUTsMbzsNCTsOQAs7EW87Dwc7C2lROxBpPjsSQA07E0AOOxpADTsbQBMwWwZ1OhdTYXNzOjpUcmVlOjpJZk5vZGUCVQoECFsIbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDoKQG5hbWVJIhVzdS12YWxpZC1jb2x1bW5zBjoGRVQ6CkBhcmdzWwdvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzsHSSIOc2hvcnRoYW5kBjsIVDoWQHVuZGVyc2NvcmVkX25hbWVJIg5zaG9ydGhhbmQGOwhUOgpAbGluZWlSOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsMaVI6DEBvZmZzZXRpHzoNQGVuZF9wb3NvOxAHOwxpUjsRaSk6CkBmaWxlSSJ1L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fcGFyc2Uuc2NzcwY7CFQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsIRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CFQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA86DUBvcHRpb25zewBvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOx5JIhBmYWlsLXNpbGVudAY7CFQ7HEAVOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7DGlSOw1vOw4JOw9vOxAHOwxpUjsRaSs7Em87EAc7DGlSOxFpODsTQA87FEAQOxtADzoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7DGlSOw1vOw4JOw9vOxAHOwxpUjsRaQ47Em87EAc7DGlSOxFpOTsTQA87FEAQOxtADzscQBV1OhdTYXNzOjpUcmVlOjpJZk5vZGUCegQECFsIMDBbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ46CkBuYW1lSSIOc2hvcnRoYW5kBjoGRVQ6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDsGSSIJam9pbgY7B1Q6CkBhcmdzWwdvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOw1JIgdvZgY7B1Q6DUBvcHRpb25zewA6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDoKQGxpbmVpVToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7E2lVOgxAb2Zmc2V0aR06DUBlbmRfcG9zbzsXBzsTaVU7GGkhOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUATbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs7BkkiDnNob3J0aGFuZAY7B1Q6FkB1bmRlcnNjb3JlZF9uYW1lSSIOc2hvcnRoYW5kBjsHVDsTaVU7FG87FQk7Fm87Fwc7E2lVOxhpIzsZbzsXBzsTaVU7GGktOxpAEzsbQBQ7IkATOw9ADzoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7E2lVOxRvOxUJOxZvOxcHOxNpVTsYaRg7GW87Fwc7E2lVOxhpLjsaQBM7G0AUOyJAEzsPQA86DUBndWFyZGVkMDoMQGdsb2JhbDA6DkBjaGlsZHJlblsAOyIwOw9ADzsTaVU7FG87FQk7Fm87Fwc7E2lVOxhpDTsZbzsXBzsTaVU7GGkuOxpAEzsbQBRbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47B0kiDnNob3J0aGFuZAY7CFQ6CkBleHBybzokU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXN0TGl0ZXJhbAw6DkBlbGVtZW50c1sHbzsdCTsebzsfCTseSSIHb2YGOwhUOxxAFTsgOyE7IjA7DGlTOw1vOw4JOw9vOxAHOwxpUzsRaRg7Em87EAc7DGlTOxFpHDsTQA87FEAQOxtAD287Cgs7B0kiDnNob3J0aGFuZAY7CFQ7C0kiDnNob3J0aGFuZAY7CFQ7DGlTOw1vOw4JOw9vOxAHOwxpUzsRaR07Em87EAc7DGlTOxFpJzsTQA87FEAQOxtADzscQBU6D0BzZXBhcmF0b3I6CnNwYWNlOg9AYnJhY2tldGVkRjsMaVM7DW87Dgk7D287EAc7DGlTOxFpGDsSbzsQBzsMaVM7EWknOxNADzsUQBA7G0APOxxAFToNQGd1YXJkZWQwOgxAZ2xvYmFsMDoOQGNoaWxkcmVuWwA7GzA7HEAVOwxpUzsNbzsOCTsPbzsQBzsMaVM7EWkNOxJvOxAHOwxpUzsRaSc7E0APOxRAEG87Bww7CFsGSSIqLyogbG9vcCB0aHJvdWdoIHRoZSBzaG9ydGhhbmQgbGlzdCAqLwY7CVQ7CjsLOwZbADsMMDsNQAs7DmlZOw9vOxAJOxFvOxIHOw5pWTsTaQg7FG87Egc7DmlZOxNpKjsVQA87FkAQbzoYU2Fzczo6VHJlZTo6Rm9yTm9kZQ86CUB2YXJJIgZpBjsJVDoKQGZyb21vOyIJOwhvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpOdW1iZXIKOwhpBjsNQAs6FUBudW1lcmF0b3JfdW5pdHNbADoXQGRlbm9taW5hdG9yX3VuaXRzWwA6DkBvcmlnaW5hbEkiBjEGOwlGOw5pWjsPbzsQCTsRbzsSBzsOaVo7E2kVOxRvOxIHOw5pWjsTaRY7FUAPOxZAEDsMQA86CEB0b286IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA7HkkiC2xlbmd0aAY7CVQ7H1sGbzsgCzseSSIOc2hvcnRoYW5kBjsJVDshSSIOc2hvcnRoYW5kBjsJVDsOaVo7D287EAk7EW87Egc7DmlaOxNpJjsUbzsSBzsOaVo7E2kwOxVADzsWQBA7DEAPOw1ACzoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA7JDA6EUBrd2FyZ19zcGxhdDA7DmlaOw9vOxAJOxFvOxIHOw5pWjsTaR87FG87Egc7DmlaOxNpMTsVQA87FkAQOwxADzsNQAs6D0BleGNsdXNpdmVGOwZbDG87JQ47HkkiCWl0ZW0GOwlUOyZvOzwPOz0wOx5JIghudGgGOwlUOx9bB287IAs7HkkiDnNob3J0aGFuZAY7CVQ7IUkiDnNob3J0aGFuZAY7CVQ7DmlbOw9vOxAJOxFvOxIHOw5pWzsTaRU7FG87Egc7DmlbOxNpHzsVQA87FkAQOwxADzsNQAtvOyALOx5JIgZpBjsJVDshSSIGaQY7CVQ7DmlbOw9vOxAJOxFvOxIHOw5pWzsTaSE7FG87Egc7DmlbOxNpIzsVQA87FkAQOwxADzsNQAs7Pm87Pwc7QHsAO0F7ADskMDtCMDsOaVs7D287EAk7EW87Egc7DmlbOxNpETsUbzsSBzsOaVs7E2kkOxVADzsWQBA7DEAPOw1ACzsqMDsrMDsGWwA7DDA7DUALOw5pWzsPbzsQCTsRbzsSBzsOaVs7E2kLOxRvOxIHOw5pWzsTaSQ7FUAPOxZAEG87JQ47HkkiCXR5cGUGOwlUOyZvOzwPOz0wOx5JIgx0eXBlLW9mBjsJVDsfWwZvOyALOx5JIglpdGVtBjsJVDshSSIJaXRlbQY7CVQ7DmlcOw9vOxAJOxFvOxIHOw5pXDsTaRk7FG87Egc7DmlcOxNpHjsVQA87FkAQOwxADzsNQAs7Pm87Pwc7QHsAO0F7ADskMDtCMDsOaVw7D287EAk7EW87Egc7DmlcOxNpETsUbzsSBzsOaVw7E2kfOxVADzsWQBA7DEAPOw1ACzsqMDsrMDsGWwA7DDA7DUALOw5pXDsPbzsQCTsRbzsSBzsOaVw7E2kLOxRvOxIHOw5pXDsTaR87FUAPOxZAEG87JQ47HkkiCmVycm9yBjsJVDsmbzsiCTsIQC47DmldOw9vOxAJOxFvOxIHOw5pXTsTaRI7FG87Egc7DmldOxNpFzsVQA87FkAQOwxADzsqMDsrMDsGWwA7DDA7DUALOw5pXTsPbzsQCTsRbzsSBzsOaV07E2kLOxRvOxIHOw5pXTsTaRc7FUAPOxZAEG87JQ47HkkiDGRldGFpbHMGOwlUOyZvOixTYXNzOjpTY3JpcHQ6OlRyZWU6OlN0cmluZ0ludGVycG9sYXRpb24MOgxAYmVmb3JlbzsiCTsIbzsnCTsISSIGWwY7CVQ7DUALOwo7KDspMDsOaV47D287EAk7EW87Egc7DmleOxNpFDsUbzsSBzsOaV47E2kYOxVADzsWQBA7DEAPOglAbWlkbzsgCzseSSIJdHlwZQY7CVQ7IUkiCXR5cGUGOwlUOw5pXjsPbzsQCTsRbzsSBzsOaV47E2kYOxRvOxIHOw5pXjsTaR07FUAPOxZAEDsMQA87DUALOgtAYWZ0ZXJvO0QMO0VvOyIJOwhvOycJOwhJIghdIGAGOwlUOw1ACzsKOyg7KTA7DmleOw9vOxAJOxFvOxIHOw5pXjsTaR47FG87Egc7DmleOxNpIzsVQA87FkAQOwxADztGbzsgCzseSSIJaXRlbQY7CVQ7IUkiCWl0ZW0GOwlUOw5pXjsPbzsQCTsRbzsSBzsOaV47E2kjOxRvOxIHOw5pXjsTaSg7FUAPOxZAEDsMQA87DUALO0dvOyIJOwhvOycJOwhJIgZgBjsJVDsNQAs7CjsoOykwOw5pXjsPbzsQCTsRbzsSBzsOaV47E2kpOxRvOxIHOw5pXjsTaSs7FUAPOxZAEDsMQA87DmleOw9vOxAJOxFAAk4BOxRvOxIHOw5pXjsTaSs7FUAPOxZAEDsMQA87DUALOw5pXjsPbzsQCTsRQAJBATsUbzsSBzsOaV47E2krOxVADzsWQBA7DEAPOw1ACzsqMDsrMDsGWwA7DDA7DUALOw5pXjsPbzsQCTsRbzsSBzsOaV47E2kLOxRvOxIHOw5pXjsTaSs7FUAPOxZAEG87Bww7CFsGSSI6LyogaWYgd2Uga25vdyB3aGF0J3Mgc3VwcG9zZWQgdG8gYmUgY29taW5nIG5leHTigKYgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pYDsPbzsQCTsRbzsSBzsOaWA7E2kKOxRvOxIHOw5pYDsTaTo7FUAPOxZAEHU7MwLhTgQIWwhvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIgluZXh0BjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJbmV4dAY7B1Q6CkBsaW5laWE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwlpYToMQG9mZnNldGkOOg1AZW5kX3Bvc287DQc7CWlhOw5pEzoKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoNQG9wdGlvbnN7AHU6F1Nhc3M6OlRyZWU6OklmTm9kZQJJRwQIWwgwMFsIbzocU2Fzczo6VHJlZTo6Q29tbWVudE5vZGUMOgtAdmFsdWVbBkkiOy8qIElmIHdlIGRvbid0IGtub3cgd2hhdCdzIHN1cHBvc2VkIHRvIGJlIGNvbWluZ+KApiAqLwY6BkVUOgpAdHlwZToLc2lsZW50Og5AY2hpbGRyZW5bADoOQGZpbGVuYW1lMDoNQG9wdGlvbnN7ADoKQGxpbmVpaToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DWlpOgxAb2Zmc2V0aRQ6DUBlbmRfcG9zbzsRBzsNaWk7EmlFOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEZvOwAMOwZbBkkiFi8qIEtleXdvcmRz4oCmICovBjsHVDsIOwk7ClsAOwswOwxACzsNaWs7Dm87Dwk7EG87EQc7DWlrOxJpDDsTbzsRBzsNaWs7EmkYOxRADzsVQBB1OhdTYXNzOjpUcmVlOjpJZk5vZGUCSEQECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIgl0eXBlBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJdHlwZQY7CVQ6CkBsaW5laWw6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwtpbDoMQG9mZnNldGkROg1AZW5kX3Bvc287Dwc7C2lsOxBpFjoKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTseSSILc3RyaW5nBjsJVDsbQBM6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsLaWw7DG87DQk7Dm87Dwc7C2lsOxBpGjsRbzsPBzsLaWw7EGkiOxJADTsTQA47GkANOg5Ab3BlcmF0b3I6B2VxOwtpbDsMbzsNCTsOQAs7EW87Dwc7C2lsOxBpIjsSQA07E0AOOxpADTsbQBN1OhdTYXNzOjpUcmVlOjpJZk5vZGUC9xYECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOwAMOwZvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIgl0eXBlBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJdHlwZQY7CVQ6CkBsaW5laQGBOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaQGBOgxAb2Zmc2V0aRg6DUBlbmRfcG9zbzsPBzsLaQGBOxBpHToKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADjoNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTseSSILbnVtYmVyBjsJVDsbQBQ6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsLaQGBOwxvOw0JOw5vOw8HOwtpAYE7EGkhOxFvOw8HOwtpAYE7EGkpOxJADjsTQA87GkAOOg5Ab3BlcmF0b3I6B2VxOwtpAYE7DG87DQk7DkAMOxFvOw8HOwtpAYE7EGkpOxJADjsTQA87GkAOOxtAFDscbzsADDsGbzsHCzsISSIJdHlwZQY7CVQ7CkkiCXR5cGUGOwlUOwtpAYE7DG87DQk7Dm87Dwc7C2kBgTsQaS87EW87Dwc7C2kBgTsQaTQ7EkAOOxNADzsaQA47G0AUOxxvOx0JOx5vOx8JOx5JIglsaXN0BjsJVDsbQBQ7IDshOyIwOwtpAYE7DG87DQk7Dm87Dwc7C2kBgTsQaTg7EW87Dwc7C2kBgTsQaT47EkAOOxNADzsaQA47IzskOwtpAYE7DG87DQk7DkAiOxFvOw8HOwtpAYE7EGk+OxJADjsTQA87GkAOOxtAFDsjOgdvcjsLaQGBOwxvOw0JOw5ADDsRbzsPBzsLaQGBOxBpQDsSQA47E0APOxpADjsbQBR1OhdTYXNzOjpUcmVlOjpJZk5vZGUCkAMECFsIMDBbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ46CkBuYW1lSSIKZXJyb3IGOgZFVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOh5TYXNzOjpTY3JpcHQ6OlZhbHVlOjpCb29sCDsKVDoNQG9wdGlvbnN7ADoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc6CkBsaW5laSs6DEBvZmZzZXRpLDoNQGVuZF9wb3NvOxAHOxFpKzsSaTA6CkBmaWxlSSJ9L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL21hZ25pZmljLXBvcHVwL19zZXR0aW5ncy5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOxFpAY47DW87Dgk7D287EAc7EWkBjjsSaRY7E287EAc7EWkBjjsSaRo7FEkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOxVAEDoOQGZpbGVuYW1lQBg6DUBndWFyZGVkMDoMQGdsb2JhbDA6DkBjaGlsZHJlblsAOxwwOwxACzsRaQGOOw1vOw4JOw9vOxAHOxFpAY47EmkPOxNvOxAHOxFpAY47EmkaOxRAGDsVQBBbB286HFNhc3M6OlRyZWU6OkNvbW1lbnROb2RlDDseWwZJIh0vKiBOdW1iZXJzICYgbGlzdHPigKYgKi8GOwlUOyA6C3NpbGVudDoOQGNoaWxkcmVuWwA7GjA7G0AUOwtpAYE7DG87DQk7Dm87Dwc7C2kBgTsQaUI7EW87Dwc7C2kBgTsQaVU7EkAOOxNAD3U7JgIHDgQIWwhvOidTYXNzOjpTY3JpcHQ6OlRyZWU6OlVuYXJ5T3BlcmF0aW9uCzoNQG9wZXJhbmRvOiJTYXNzOjpTY3JpcHQ6OlRyZWU6Ok9wZXJhdGlvbgw6DkBvcGVyYW5kMW86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiCXNwYW4GOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIglzcGFuBjsLVDoKQGxpbmVpAYM6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOw1pAYM6DEBvZmZzZXRpFzoNQGVuZF9wb3NvOxEHOw1pAYM7EmkcOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwtUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7C0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwtUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUAOOg1Ab3B0aW9uc3sAOg5Ab3BlcmFuZDJvOwkLOwpJIgdvZgY7C1Q7DEkiB29mBjsLVDsNaQGDOw5vOw8JOxBvOxEHOw1pAYM7EmkgOxNvOxEHOw1pAYM7EmkjOxRADjsVQA87HEAOOx1AFDoOQG9wZXJhdG9yOgdvcjsNaQGDOw5vOw8JOxBADDsTbzsRBzsNaQGDOxJpIzsUQA47FUAPOxxADjsdQBQ7HzoIbm90Ow1pAYM7Dm87Dwk7EG87EQc7DWkBgzsSaRY7E287EQc7DWkBgzsSaSQ7FEAOOxVADzscQA47HUAUdToXU2Fzczo6VHJlZTo6SWZOb2RlAsIIBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIHb2YGOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIgdvZgY7CVQ6CkBsaW5laQGGOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaQGGOgxAb2Zmc2V0aRo6DUBlbmRfcG9zbzsPBzsLaQGGOxBpHToKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzonU2Fzczo6U2NyaXB0OjpUcmVlOjpVbmFyeU9wZXJhdGlvbgs6DUBvcGVyYW5kbzsHCzsISSIMY29sdW1ucwY7CVQ7CkkiDGNvbHVtbnMGOwlUOwtpAYY7DG87DQk7Dm87Dwc7C2kBhjsQaSg7EW87Dwc7C2kBhjsQaTA7EkANOxNADjsaQA07G0ATOg5Ab3BlcmF0b3I6CG5vdDsLaQGGOwxvOw0JOw5vOw8HOwtpAYY7EGkoOxFvOw8HOwtpAYY7EGkwOxJADTsTQA47GkANOxtAEzsfOghhbmQ7C2kBhjsMbzsNCTsOQAs7EW87Dwc7C2kBhjsQaTI7EkANOxNADjsaQA07G0ATdToXU2Fzczo6VHJlZTo6SWZOb2RlApADBAhbCDAwWwZvOh1TYXNzOjpUcmVlOjpWYXJpYWJsZU5vZGUOOgpAbmFtZUkiCmVycm9yBjoGRVQ6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzoeU2Fzczo6U2NyaXB0OjpWYWx1ZTo6Qm9vbAg7ClQ6DUBvcHRpb25zewA6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOgpAbGluZWkrOgxAb2Zmc2V0aSw6DUBlbmRfcG9zbzsQBzsRaSs7EmkwOgpAZmlsZUkifS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9tYWduaWZpYy1wb3B1cC9fc2V0dGluZ3Muc2NzcwY7B1Q6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkv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c2Uuc2NzcwY7CFQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsIRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CFQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA86DUBvcHRpb25zewBvOwoLOwdJIglpdGVtBjsIVDsLSSIJaXRlbQY7CFQ7DGluOw1vOw4JOw9vOxAHOwxpbjsRaSg7Em87EAc7DGluOxFpLTsTQA87FEAQOxtADzscQBU6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOwxpbjsNbzsOCTsPbzsQBzsMaW47EWkSOxJvOxAHOwxpbjsRaS47E0APOxRAEDsbQA87HEAVdToXU2Fzczo6VHJlZTo6SWZOb2RlAlMXBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIJaXRlbQY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiCWl0ZW0GOwlUOgpAbGluZWl4OhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaXg6DEBvZmZzZXRpGjoNQGVuZF9wb3NvOw8HOwtpeDsQaR86CkBmaWxlSSJ1L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fcGFyc2Uuc2NzcwY7CVQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CVQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA06DUBvcHRpb25zewA6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7HkkiCGFsbAY7CVQ7G0ATOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7C2l4OwxvOw0JOw5vOw8HOwtpeDsQaSM7EW87Dwc7C2l4OxBpKDsSQA07E0AOOxpADToOQG9wZXJhdG9yOgdlcTsLaXg7DG87DQk7DkALOxFvOw8HOwtpeDsQaSg7EkANOxNADjsaQA07G0ATdToXU2Fzczo6VHJlZTo6SWZOb2RlAlQSBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIJaXRlbQY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiCWl0ZW0GOwlUOgpAbGluZWl7OhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaXs6DEBvZmZzZXRpGjoNQGVuZF9wb3NvOw8HOwtpezsQaR86CkBmaWxlSSJ1L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fcGFyc2Uuc2NzcwY7CVQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CVQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA06DUBvcHRpb25zewA6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7HkkiB2F0BjsJVDsbQBM6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsLaXs7DG87DQk7Dm87Dwc7C2l7OxBpIzsRbzsPBzsLaXs7EGknOxJADTsTQA47GkANOg5Ab3BlcmF0b3I6B2VxOwtpezsMbzsNCTsOQAs7EW87Dwc7C2l7OxBpJzsSQA07E0AOOxpADTsbQBN1OhdTYXNzOjpUcmVlOjpJZk5vZGUCRw0ECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIglpdGVtBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJaXRlbQY7CVQ6CkBsaW5laX46EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwtpfjoMQG9mZnNldGkaOg1AZW5kX3Bvc287Dwc7C2l+OxBpHzoKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTseSSIQc2V0LWd1dHRlcnMGOwlUOxtAEzoKQHR5cGU6C3N0cmluZzoiQGRlcHJlY2F0ZWRfaW50ZXJwX2VxdWl2YWxlbnQwOwtpfjsMbzsNCTsObzsPBzsLaX47EGkjOxFvOw8HOwtpfjsQaTA7EkANOxNADjsaQA06DkBvcGVyYXRvcjoHZXE7C2l+OwxvOw0JOw5ACzsRbzsPBzsLaX47EGkwOxJADTsTQA47GkANOxtAE3U6F1Nhc3M6OlRyZWU6OklmTm9kZQLDCAQIWwhvOiJTYXNzOjpTY3JpcHQ6OlRyZWU6Ok9wZXJhdGlvbgw6DkBvcGVyYW5kMW86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiCWl0ZW0GOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIglpdGVtBjsJVDoKQGxpbmVpAXs6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwtpAXs6DEBvZmZzZXRpGjoNQGVuZF9wb3NvOw8HOwtpAXs7EGkfOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwlUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CUY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUANOg1Ab3B0aW9uc3sAOg5Ab3BlcmFuZDJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOx5JIgdvZgY7CVQ7G0ATOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7C2kBezsMbzsNCTsObzsPBzsLaQF7OxBpIzsRbzsPBzsLaQF7OxBpJzsSQA07E0AOOxpADToOQG9wZXJhdG9yOgdlcTsLaQF7OwxvOw0JOw5ACzsRbzsPBzsLaQF7OxBpJzsSQA07E0AOOxpADTsbQBN1OhdTYXNzOjpUcmVlOjpJZk5vZGUCkAMECFsIMDBbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ46CkBuYW1lSSIKZXJyb3IGOgZFVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOh5TYXNzOjpTY3JpcHQ6OlZhbHVlOjpCb29sCDsKVDoNQG9wdGlvbnN7ADoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc6CkBsaW5laSs6DEBvZmZzZXRpLDoNQGVuZF9wb3NvOxAHOxFpKzsSaTA6CkBmaWxlSSJ9L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL21hZ25pZmljLXBvcHVwL19zZXR0aW5ncy5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOxFpAX47DW87Dgk7D287EAc7EWkBfjsSaRg7E287EAc7EWkBfjsSaRw7FEkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOxVAEDoOQGZpbGVuYW1lQBg6DUBndWFyZGVkMDoMQGdsb2JhbDA6DkBjaGlsZHJlblsAOxwwOwxACzsRaQF+Ow1vOw4JOw9vOxAHOxFpAX47EmkROxNvOxAHOxFpAX47EmkcOxRAGDsVQBBbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47CEkiB29mBjsJVDoKQGV4cHJvOx0JOx5vOh5TYXNzOjpTY3JpcHQ6OlZhbHVlOjpCb29sCDseVDsbQBM7DG87DQk7Dm87Dwc7C2krOxBpLDsRbzsPBzsLaSs7EGkwOxJJIn0vTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3IvbWFnbmlmaWMtcG9wdXAvX3NldHRpbmdzLnNj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OhZAdW5kZXJzY29yZWRfbmFtZUkiDHNldHRpbmcGOwlUOgpAbGluZWlyOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaXI6DEBvZmZzZXRpFToNQGVuZF9wb3NvOw8HOwtpcjsQaR06CkBmaWxlSSJ1L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fcGFyc2Uuc2NzcwY7CVQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CVQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA46DUBvcHRpb25zewA6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7HkkiC3NwcmVhZAY7CVQ7G0AUOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7C2lyOwxvOw0JOw5vOw8HOwtpcjsQaSE7EW87Dwc7C2lyOxBpKTsSQA47E0APOxpADjoOQG9wZXJhdG9yOgdlcTsLaXI7DG87DQk7DkAMOxFvOw8HOwtpcjsQaSk7EkAOOxNADzsaQA47G0AUOxxvOwcLOwhJIgdvZgY7CVQ7CkkiB29mBjsJVDsLaXI7DG87DQk7Dm87Dwc7C2lyOxBpMDsRbzsPBzsLaXI7EGkzOxJADjsTQA87GkAOOxtAFDsjOghhbmQ7C2lyOwxvOw0JOw5ADDsRbzsPBzsLaXI7EGk1OxJADjsTQA87GkAOOxtAFHU6F1Nhc3M6OlRyZWU6OklmTm9kZQLSBAQIWwgwMFsGbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjoKQG5hbWVJIgtyZXR1cm4GOgZFVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOwZJIg5tYXAtbWVyZ2UGOwdUOgpAYXJnc1sHbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs7BkkiC3JldHVybgY7B1Q6FkB1bmRlcnNjb3JlZF9uYW1lSSILcmV0dXJuBjsHVDoKQGxpbmVpdToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7Dml1OgxAb2Zmc2V0aSU6DUBlbmRfcG9zbzsSBzsOaXU7E2ksOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUASOg1Ab3B0aW9uc3sAbzojU2Fzczo6U2NyaXB0OjpUcmVlOjpNYXBMaXRlcmFsCjoLQHBhaXJzWwZbB287DAs7BkkiDHNldHRpbmcGOwdUOw1JIgxzZXR0aW5nBjsHVDsOaXU7D287EAk7EW87Egc7Dml1OxNp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bWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUAMOg1Ab3B0aW9uc3sAMFsGbzobU2Fzczo6VHJlZTo6UmV0dXJuTm9kZQs6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDsGSSIQX3N1c3ktZXJyb3IGOwdUOgpAYXJnc1sHbzosU2Fzczo6U2NyaXB0OjpUcmVlOjpTdHJpbmdJbnRlcnBvbGF0aW9uDDoMQGJlZm9yZW86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7IkkiAAY7B1Q7GUASOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7CWkBkzsKbzsLCTsMbzsNBzsJaQGTOw5pIDsPbzsNBzsJaQGTOw5pIzsQQAw7EUANOxhADDoJQG1pZG87AAs7BkkiEHBhcnNlLWVycm9yBjsHVDsISSIQcGFyc2VfZXJyb3IGOwdUOwlpAZM7Cm87Cwk7DG87DQc7CWkBkzsOaSM7D287DQc7CWkBkzsOaS87EEAMOxFADTsYQAw7GUASOgtAYWZ0ZXJvOx8MOyBvOyEJOyJvOyMJOyJJIgYgBjsHVDsZQBI7JDslOyYwOwlpAZM7Cm87Cwk7DG87DQc7CWkBkzsOaTA7D287DQc7CWkBkzsOaTM7EEAMOxFADTsYQAw7J287AAs7BkkiDGRldGFpbHMGOwdUOwhJIgxkZXRhaWxzBjsHVDsJaQGTOwpvOwsJOwxvOw0HOwlpAZM7DmkzOw9vOw0HOwlpAZM7Dmk7OxBADDsRQA07GEAMOxlAEjsobzshCTsibzsjCTsiSSIABjsHVDsZQBI7JDslOyYwOwlpAZM7Cm87Cwk7DG87DQc7CWkBkzsOaTw7D287DQc7CWkBkzsOaT07EEAMOxFADTsYQAw7CWkBkzsKbzsLCTsMQCo7D287DQc7CWkBkzsOaT07EEAMOxFADTsYQAw7GUASOwlpAZM7Cm87Cwk7DEAdOw9vOw0HOwlpAZM7Dmk9OxBADDsRQA07GEAMOxlAEm87IQk7Im87Iwk7IkkiD3N1c3ktcGFyc2UGOwdUOxlAEjskOyU7JjA7CWkBkzsKbzsLCTsMbzsNBzsJaQGTOw5pPzsPbzsNBzsJaQGTOw5pSzsQQAw7EUANOxhADDoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7CWkBkzsKbzsLCTsMbzsNBzsJaQGTOw5pFDsPbzsNBzsJaQGTOw5pTDsQQAw7EUANOxhADDsZQBI6DkBjaGlsZHJlblsAOxgwOxlAEjsJaQGTOwpvOwsJOwxvOw0HOwlpAZM7DmkMOw9vOw0HOwlpAZM7DmlMOxBADDsRQA07DDA7DUALOw5pWjsPbzsQCTsRbzsSBzsOaVo7E2kIOxRvOxIHOw5pWjsTaTI7FUAPOxZAEDoSQGhhc19jaGlsZHJlblRvOwcMOwhbBkkiJy8qIElmIHdlIGhhdmUgc3BhbiwgbWVyZ2UgaXQgaW4gKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pAZc7D287EAk7EW87Egc7DmkBlzsTaQg7FG87Egc7DmkBlzsTaSc7FUAPOxZAEHU7MwKYBQQIWwhvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIglzcGFuBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJc3BhbgY7B1Q6CkBsaW5laQGYOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsJaQGYOgxAb2Zmc2V0aQw6DUBlbmRfcG9zbzsNBzsJaQGYOw5pEToKQGZpbGVJInUvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19wYXJzZS5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoNQG9wdGlvbnN7ADBbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47BkkiC3JldHVybgY7B1Q6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDsGSSIObWFwLW1lcmdlBjsHVDoKQGFyZ3NbB287AAs7BkkiC3JldHVybgY7B1Q7CEkiC3JldHVybgY7B1Q7CWkBmTsKbzsLCTsMbzsNBzsJaQGZOw5pHTsPbzsNBzsJaQGZOw5pJDsQQAw7EUANOxhADDsZQBJvOiNTYXNzOjpTY3JpcHQ6OlRyZWU6Ok1hcExpdGVyYWwKOgtAcGFpcnNbBlsHbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTsiSSIJc3BhbgY7B1Q7GUASOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7CWkBmTsKbzsLCTsMbzsNBzsJaQGZOw5pJzsPbzsNBzsJaQGZOw5pLTsQQAw7EUANOxhADG87AAs7BkkiCXNwYW4GOwdUOwhJIglzcGFuBjsHVDsJaQGZOwpvOwsJOwxvOw0HOwlpAZk7DmkvOw9vOw0HOwlpAZk7Dmk0OxBADDsRQA07GEAMOxlAEjsJaQGZOwpvOwsJOwxvOw0HOwlpAZk7DmknOw9vOw0HOwlpAZk7Dmk0OxBADDsRQA07GEAMOxlAEjoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7CWkBmTsKbzsLCTsMbzsNBzsJaQGZOw5pEzsPbzsNBzsJaQGZOw5pNjsQQAw7EUANOxhADDsZQBI6DUBndWFyZGVkMDoMQGdsb2JhbDA6DkBjaGlsZHJlblsAOxgwOxlAEjsJaQGZOwpvOwsJOwxvOw0HOwlpAZk7DmkLOw9vOw0HOwlpAZk7Dmk2OxBADDsRQA1vOwcMOwhbBkkiLC8qIElmIHdlIGhhdmUgY29sdW1ucywgbWVyZ2UgdGhlbSBpbiAqLwY7CVQ7CjsLOwZbADsMMDsNQAs7DmkBnDsPbzsQCTsRbzsSBzsOaQGcOxNpCDsUbzsSBzsOaQGcOxNpLDsVQA87FkAQdTszAqcFBAhbCG86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiDGNvbHVtbnMGOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIgxjb2x1bW5zBjsHVDoKQGxpbmVpAZ06EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwlpAZ06DEBvZmZzZXRpDDoNQGVuZF9wb3NvOw0HOwlpAZ07DmkUOgpAZmlsZUkidS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3BhcnNlLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUAMOg1Ab3B0aW9uc3sAMFsGbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjsGSSILcmV0dXJuBjsHVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOwZJIg5tYXAtbWVyZ2UGOwdUOgpAYXJnc1sHbzsACzsGSSILcmV0dXJuBjsHVDsISSILcmV0dXJuBjsHVDsJaQGeOwpvOwsJOwxvOw0HOwlpAZ47DmkdOw9vOw0HOwlpAZ47DmkkOxBADDsRQA07GEAMOxlAEm86I1Nhc3M6OlNjcmlwdDo6VHJlZTo6TWFwTGl0ZXJhbAo6C0BwYWlyc1sGWwdvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOyJJIgxjb2x1bW5zBjsHVDsZQBI6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsJaQGeOwpvOwsJOwxvOw0HOwlpAZ47DmknOw9vOw0HOwlpAZ47DmkwOxBADDsRQA07GEAMbzsACzsGSSIMY29sdW1ucwY7B1Q7CEkiDGNvbHVtbnMGOwdUOwlpAZ47Cm87Cwk7DG87DQc7CWkBnjsOaTI7D287DQc7CWkBnjsOaTo7EEAMOxFADTsYQAw7GUASOwlpAZ47Cm87Cwk7DG87DQc7CWkBnjsOaSc7D287DQc7CWkBnjsOaTo7EEAMOxFADTsYQAw7GUASOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoRQGtleV9zdHJpbmdzewA6CUBtYXB7ADoLQHNwbGF0MDoRQGt3YXJnX3NwbGF0MDsJaQGeOwpvOwsJOwxvOw0HOwlpAZ47DmkTOw9vOw0HOwlpAZ47Dmk8OxBADDsRQA07GEAMOxlAEjoNQGd1YXJkZWQwOgxAZ2xvYmFsMDoOQGNoaWxkcmVuWwA7GDA7GUASOwlpAZ47Cm87Cwk7DG87DQc7CWkBnjsOaQs7D287DQc7CWkBnjsOaTw7EEAMOxFADW87Bww7CFsGSSIoLyogUmV0dXJuIHRoZSBtYXAgb2Ygc2V0dGluZ3PigKYgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pAaE7D287EAk7EW87Egc7DmkBoTsTaQg7FG87Egc7DmkBoTsTaSY7FUAPOxZAEG86G1Nhc3M6OlRyZWU6OlJldHVybk5vZGULOyZvOyALOx5JIgtyZXR1cm4GOwlUOyFJIgtyZXR1cm4GOwlUOw5pAaI7D287EAk7EW87Egc7DmkBojsTaRA7FG87Egc7DmkBojsTaRc7FUAPOxZAEDsMQA87DUALOwZbADsMMDsNQAs7DmkBojsPbzsQCTsRbzsSBzsOaQGiOxNpCDsUbzsSBzsOaQGiOxNpFzsVQA87FkAQOwwwOw1ACzsOaTo7D287EAk7EW87Egc7Dmk6OxNpBjsUbzsSBzsOaT07E2kIOxVADzsWQBA7SFQ7DDA7DUALOg5AdGVtcGxhdGVJIgK0ES8vLyBTaG9ydGhhbmQgU3ludGF4IFBhcnNlcgovLy8gPT09PT09PT09PT09PT09PT09PT09PT0KLy8vIFRoZSBzeW50YXggcGFyc2VyIGNvbnZlcnRzIFtzaG9ydGhhbmQgc3ludGF4XVtzaG9ydF0KLy8vIGludG8gYSBtYXAgb2Ygc2V0dGluZ3MgdGhhdCBjYW4gYmUgY29tcGFyZWQvbWVyZ2VkIHdpdGgKLy8vIG90aGVyIGNvbmZpZyBtYXBzIGFuZCBnbG9iYWwgc2V0dGluZy4KLy8vCi8vLyBbc2hvcnRdOiBiLWFwaS5odG1sCi8vLwovLy8gQGdyb3VwIHgtcGFyc2VyCgoKCi8vIFBhcnNlCi8vIC0tLS0tCi8vLyBUaGUgYHBhcnNlYCBmdW5jdGlvbiBwcm92aWRlcyBhbGwgdGhlIHN5bnRheC1zdWdhciBpbiBTdXN5LAovLy8gY29udmVydGluZyB1c2VyIHNob3J0aGFuZAovLy8gaW50byBhIHVzYWJsZSBtYXAgb2Yga2V5cyBhbmQgdmFsdWVzCi8vLyB0aGF0IGNhbiBiZSBub3JtYWxpemVkIGFuZCBwYXNzZWQgdG8gU3UuCi8vLwovLy8gQGdyb3VwIHgtcGFyc2VyCi8vLyBAc2VlICRzdXN5Ci8vLwovLy8gQHBhcmFtIHtsaXN0fSAkc2hvcnRoYW5kIC0KLy8vICAgU2hvcnRoYW5kIGV4cHJlc3Npb24gdG8gZGVmaW5lIHRoZSB3aWR0aCBvZiB0aGUgc3BhbiwKLy8vICAgb3B0aW9uYWxseSBjb250YWluaW5nOgovLy8gICAtIGEgY291bnQsIGxlbmd0aCwgb3IgY29sdW1uLWxpc3Qgc3BhbjsKLy8vICAgLSBgYXQgJG5gLCBgZmlyc3RgLCBvciBgbGFzdGAgbG9jYXRpb24gb24gYXN5bW1ldHJpY2FsIGdyaWRzOwovLy8gICAtIGBuYXJyb3dgLCBgd2lkZWAsIG9yIGB3aWRlcmAgZm9yIG9wdGlvbmFsbHkgc3ByZWFkaW5nCi8vLyAgICAgYWNyb3NzIGFkamFjZW50IGd1dHRlcnM7Ci8vLyAgIC0gYG9mICRuIDxzcHJlYWQ+YCBmb3IgYXZhaWxhYmxlIGdyaWQgY29sdW1ucwovLy8gICAgIGFuZCBzcHJlYWQgb2YgdGhlIGNvbnRhaW5lcgovLy8gICAgIChzcGFuIGNvdW50cyBsaWtlIGBvZiA2YCBhcmUgb25seSB2YWxpZAovLy8gICAgIGluIHRoZSBjb250ZXh0IG9mIHN5bW1ldHJpY2FsIGdyaWRzKTsKLy8vICAgLSBhbmQgYHNldC1ndXR0ZXJzICRuYCB0byBvdmVycmlkZSBnbG9iYWwgZ3V0dGVyIHNldHRpbmdzCi8vLyBAcGFyYW0ge2Jvb2x9ICRjb250ZXh0LW9ubHkgW2ZhbHNlXSAtCi8vLyAgIEFsbG93IHRoZSBwYXJzZXIgdG8gaWdub3JlIHNwYW4gYW5kIHNwYW4tc3ByZWFkIHZhbHVlcywKLy8vICAgb25seSBwYXJzaW5nIGNvbnRleHQgYW5kIGNvbnRhaW5lci1zcHJlYWQuCi8vLyAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gYWNjZXB0IHNwYW5sZXNzIHZhbHVlcywKLy8vICAgbGlrZSB0aGUgYGd1dHRlcnMoKWAgc3ludGF4LgovLy8gICBXaGVuIHBhcnNpbmcgY29udGV4dC1vbmx5LAovLy8gICB0aGUgYG9mYCBpbmRpY2F0b3IgaXMgb3B0aW9uYWwuCi8vLwovLy8gQHJldHVybiB7bWFwfSAtCi8vLyAgIE1hcCBvZiBzcGFuIGFuZCBncmlkIHNldHRpbmdzCi8vLyAgIHBhcnNlZCBmcm9tIHNob3J0aGFuZCBpbnB1dCDigJMKLy8vICAgaW5jbHVkaW5nIGFsbCB0aGUgcHJvcGVydGllcyBhdmFpbGFibGUgZ2xvYmFsbHkg4oCTCi8vLyAgIGBjb2x1bW5zYCwgYGd1dHRlcnNgLCBgc3ByZWFkYCwgYGNvbnRhaW5lci1zcHJlYWRgIOKAkwovLy8gICBhbG9uZyB3aXRoIHRoZSBzcGFuLXNwZWNpZmljIHByb3BlcnRpZXMKLy8vICAgYHNwYW5gLCBhbmQgYGxvY2F0aW9uYC4KLy8vCi8vLyBAdGhyb3cKLy8vICAgd2hlbiBhIHNob3J0aGFuZCB2YWx1ZSBpcyBub3QgcmVjb2duaXplZApAZnVuY3Rpb24gc3VzeS1wYXJzZSgKICAkc2hvcnRoYW5kLAogICRjb250ZXh0LW9ubHk6IGZhbHNlCikgewogICRwYXJzZS1lcnJvcjogJ1Vua25vd24gc2hvcnRoYW5kIHByb3BlcnR5Oic7CiAgJG9wdGlvbnM6ICgKICAgICdmaXJzdCc6ICdsb2NhdGlvbicsCiAgICAnbGFzdCc6ICdsb2NhdGlvbicsCiAgICAnYWxwaGEnOiAnbG9jYXRpb24nLAogICAgJ29tZWdhJzogJ2xvY2F0aW9uJywKICAgICduYXJyb3cnOiAnc3ByZWFkJywKICAgICd3aWRlJzogJ3NwcmVhZCcsCiAgICAnd2lkZXInOiAnc3ByZWFkJywKICApOwoKICAkcmV0dXJuOiAoKTsKICAkc3BhbjogbnVsbDsKICAkY29sdW1uczogbnVsbDsKCiAgJG9mOiBudWxsOwogICRuZXh0OiBmYWxzZTsKCiAgLy8gQWxsb3cgY29udGV4dC1vbmx5IHNob3J0aGFuZCwgd2l0aG91dCBzcGFuCiAgQGlmICgkY29udGV4dC1vbmx5KSBhbmQgKG5vdCBpbmRleCgkc2hvcnRoYW5kLCAnb2YnKSkgewogICAgQGlmIHN1LXZhbGlkLWNvbHVtbnMoJHNob3J0aGFuZCwgJ2ZhaWwtc2lsZW50JykgewogICAgICAkc2hvcnRoYW5kOiAnb2YnICRzaG9ydGhhbmQ7CiAgICB9IEBlbHNlIHsKICAgICAgJHNob3J0aGFuZDogam9pbignb2YnLCAkc2hvcnRoYW5kKTsKICAgIH0KICB9CgogIC8vIGxvb3AgdGhyb3VnaCB0aGUgc2hvcnRoYW5kIGxpc3QKICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkc2hvcnRoYW5kKSB7CiAgICAkaXRlbTogbnRoKCRzaG9ydGhhbmQsICRpKTsKICAgICR0eXBlOiB0eXBlLW9mKCRpdGVtKTsKICAgICRlcnJvcjogZmFsc2U7CiAgICAkZGV0YWlsczogJ1sjeyR0eXBlfV0gYCN7JGl0ZW19YCc7CgogICAgLy8gaWYgd2Uga25vdyB3aGF0J3Mgc3VwcG9zZWQgdG8gYmUgY29taW5nIG5leHTigKYKICAgIEBpZiAkbmV4dCB7CgogICAgICAvLyBBZGQgdG8gdGhlIHJldHVybiBtYXAKICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmV4dDogJGl0ZW0pKTsKCiAgICAgIC8vIFJlc2V0IG5leHQgdG8gYGZhbHNlYAogICAgICAkbmV4dDogZmFsc2U7CgogICAgfSBAZWxzZSB7IC8vIElmIHdlIGRvbid0IGtub3cgd2hhdCdzIHN1cHBvc2VkIHRvIGJlIGNvbWluZ+KApgoKICAgICAgLy8gS2V5d29yZHPigKYKICAgICAgQGlmICgkdHlwZSA9PSAnc3RyaW5nJykgewogICAgICAgIC8vIENoZWNrIHRoZSBtYXAgZm9yIGtleXdvcmRz4oCmCiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRvcHRpb25zLCAkaXRlbSkgewogICAgICAgICAgJHNldHRpbmc6IG1hcC1nZXQoJG9wdGlvbnMsICRpdGVtKTsKCiAgICAgICAgICAvLyBTcHJlYWQgY291bGQgYmUgb24gdGhlIHNwYW4gb3IgdGhlIGNvbnRhaW5lcuKApgogICAgICAgICAgQGlmICgkc2V0dGluZyA9PSAnc3ByZWFkJykgYW5kICgkb2YpIHsKICAgICAgICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgnY29udGFpbmVyLXNwcmVhZCc6ICRpdGVtKSk7CiAgICAgICAgICB9IEBlbHNlIHsKICAgICAgICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkc2V0dGluZzogJGl0ZW0pKTsKICAgICAgICAgIH0KCiAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPT0gJ2FsbCcpIHsKICAgICAgICAgIC8vIGBBbGxgIGlzIGEgc3BhbiBzaG9ydGN1dAogICAgICAgICAgJHNwYW46ICdhbGwnOwogICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID09ICdhdCcpIHsKICAgICAgICAgIC8vIFNvbWUga2V5d29yZHMgc2V0dXAgd2hhdCdzIG5leHTigKYKICAgICAgICAgICRuZXh0OiAnbG9jYXRpb24nOwogICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtID09ICdzZXQtZ3V0dGVycycpIHsKICAgICAgICAgICRuZXh0OiAnZ3V0dGVycyc7CiAgICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPT0gJ29mJykgewogICAgICAgICAgJG9mOiB0cnVlOwogICAgICAgIH0gQGVsc2UgewogICAgICAgICAgJGVycm9yOiB0cnVlOwogICAgICAgIH0KCiAgICAgIH0gQGVsc2UgaWYgKCR0eXBlID09ICdudW1iZXInKSBvciAoJHR5cGUgPT0gJ2xpc3QnKSB7IC8vIE51bWJlcnMgJiBsaXN0c+KApgoKICAgICAgICBAaWYgbm90ICgkc3BhbiBvciAkb2YpIHsKICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBzcGFuLCBhbmQgd2UncmUgbm90IGV4cGVjdGluZyBjb250ZXh04oCmCiAgICAgICAgICAkc3BhbjogJGl0ZW07CiAgICAgICAgfSBAZWxzZSBpZiAoJG9mKSBhbmQgKG5vdCAkY29sdW1ucykgewogICAgICAgICAgLy8gV2UgYXJlIGV4cGVjdGluZyBjb250ZXh04oCmCiAgICAgICAgICAkY29sdW1uczogJGl0ZW07CiAgICAgICAgfSBAZWxzZSB7CiAgICAgICAgICAkZXJyb3I6IHRydWU7CiAgICAgICAgfQoKICAgICAgfSBAZWxzZSB7CiAgICAgICAgJGVycm9yOiB0cnVlOwogICAgICB9CiAgICB9CgogICAgQGlmICRlcnJvciB7CiAgICAgIEByZXR1cm4gX3N1c3ktZXJyb3IoJyN7JHBhcnNlLWVycm9yfSAjeyRkZXRhaWxzfScsICdzdXN5LXBhcnNlJyk7CiAgICB9CiAgfQoKICAvLyBJZiB3ZSBoYXZlIHNwYW4sIG1lcmdlIGl0IGluCiAgQGlmICRzcGFuIHsKICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJ3NwYW4nOiAkc3BhbikpOwogIH0KCiAgLy8gSWYgd2UgaGF2ZSBjb2x1bW5zLCBtZXJnZSB0aGVtIGluCiAgQGlmICRjb2x1bW5zIHsKICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJ2NvbHVtbnMnOiAkY29sdW1ucykpOwogIH0KCiAgLy8gUmV0dXJuIHRoZSBtYXAgb2Ygc2V0dGluZ3PigKYKICBAcmV0dXJuICRyZXR1cm47Cn0KBjsJVDsOaQY7D287EAk7EW87Egc7DmkGOxNpBjsUbzsSBzsOaQY7E2kGOxVADzsWQBA7SFQ=