UHLpdm9pciBkZXMgY29tbWFuZGVzIGVuIHBsdXNpZXVycyBtb3RzIGNs6XMuClBhciBleGVtcGxlIDoKCiAgdGltZW91dCBjb25uZWN0aW9uIFhYWAogIGNvbm5lY3Rpb24gc2NhbGUgWFhYCgpPbiBkb2l0IGF1c3NpIGFjY2VwdGVyIGxlcyBwculmaXhlcyA6CgogIHRpbSBjbyBYWFgKICBjbyBzY2EgWFhYCgpQcul2b2lyIGRlIHJhbmdlciBsZXMgY29tYmluYWlzb25zIGRhbnMgdW4gdGFibGVhdS4gT24gZG9pdCBt6m1lCnBvdXZvaXIgZWZmZWN0dWVyIHVuIG1hcHBpbmcgc2ltcGxpZmlhbnQgbGUgcGFyc2V1ci4KCgpQb3VyIGxlcyBmaWx0cmVzIDoKCgogICAgPGRpcmVjdGlvbj4gPHdoZXJlPiA8d2hhdD4gPG9wZXJhdG9yPiA8cGF0dGVybj4gPGFjdGlvbj4gWyA8YXJncz4qIF0KCiAgICA8ZGlyZWN0aW9uPiA9IFsgcmVxIHwgcnNwIF0KICAgIDx3aGVyZT4gICAgID0gWyBpbiB8IG91dCBdCiAgICA8d2hhdD4gICAgICA9IFsgbGluZSB8IExJTkUgfCBNRVRIIHwgVVJJIHwgaChoZHIpIHwgSChoZHIpIHwgYyhjb29raWUpIHwgQyhjb29raWUpIF0KICAgIDxvcGVyYXRvcj4gID0gWyA9PSB8ID1+IHwgPSogfCA9XiB8ID0vIHwgIT0gfCAhfiB8ICEqIHwgIV4gfCAhLyBdCiAgICA8cGF0dGVybj4gICA9ICI8c3RyaW5nPiIKICAgIDxhY3Rpb24+ICAgID0gWyBhbGxvdyB8IHBlcm1pdCB8IGRlbnkgfCBkZWxldGUgfCByZXBsYWNlIHwgc3dpdGNoIHwgYWRkIHwgc2V0IHwgcmVkaXIgXQogICAgPGFyZ3M+ICAgICAgPSBvcHRpb25uYWwgYWN0aW9uIGFyZ3MKCiAgICBleGVtcGxlczoKCiAgICAgICAgcmVxIGluIFVSSSAgICAgPV4gIi9pbWFnZXMiIHN3aXRjaCBpbWFnZXMKICAgICAgICByZXEgaW4gaChob3N0KSA9KiAiLm15ZG9tYWluLmNvbSIgc3dpdGNoIG15ZG9tYWluCiAgICAgICAgcmVxIGluIGgoaG9zdCkgPX4gImxvY2FsaG9zdCguKikiIHJlcGxhY2UgInd3d1wxIgoKICAgIGFsdGVybmF0aXZlIDoKCiAgICA8ZGlyZWN0aW9uPiA8d2hlcmU+IDxhY3Rpb24+IFtub3RdIDx3aGF0PiBbPG9wZXJhdG9yPiA8cGF0dGVybj4gWyA8YXJncz4qIF1dCgogICAgICAgIHJlcSBpbiAgc3dpdGNoICAgVVJJICAgICA9XiAiL2ltYWdlcyIgaW1hZ2VzCiAgICAgICAgcmVxIGluICBzd2l0Y2ggICBoKGhvc3QpID0qICIubXlkb21haW4uY29tIiBteWRvbWFpbgogICAgICAgIHJlcSBpbiAgcmVwbGFjZSAgaChob3N0KSA9fiAibG9jYWxob3N0KC4qKSIgInd3d1wxIgogICAgICAgIHJlcSBpbiAgZGVsZXRlICAgaChDb25uZWN0aW9uKQogICAgICAgIHJlcSBpbiAgZGVueSBub3QgbGluZSA9fiAiKChHRVR8SEVBRHxQT1NUfE9QVElPTlMpIC8pfChPUFRJT05TICopIgogICAgICAgIHJlcSBvdXQgc2V0ICAgICAgaChDb25uZWN0aW9uKSAiY2xvc2UiCiAgICAgICAgcmVxIG91dCBhZGQgICAgICBsaW5lICJTZXJ2ZXI6IHRydWMiCgoKICAgIDxkaXJlY3Rpb24+IDxhY3Rpb24+IDx3aGVyZT4gW25vdF0gPHdoYXQ+IFs8b3BlcmF0b3I+IDxwYXR0ZXJuPiBbIDxhcmdzPiogXV0gJzsnIDxhY3Rpb24yPiA8d2hhdDI+CgogICAgICAgIHJlcSBpbiAgc3dpdGNoICAgVVJJICAgICA9XiAiL2ltYWdlcy8iIGltYWdlcyA7IHJlcGxhY2UgIi8iCiAgICAgICAgcmVxIGluICBzd2l0Y2ggICBoKGhvc3QpID0qICIubXlkb21haW4uY29tIiBteWRvbWFpbgogICAgICAgIHJlcSBpbiAgcmVwbGFjZSAgaChob3N0KSA9fiAibG9jYWxob3N0KC4qKSIgInd3d1wxIgogICAgICAgIHJlcSBpbiAgZGVsZXRlICAgaChDb25uZWN0aW9uKQogICAgICAgIHJlcSBpbiAgZGVueSBub3QgbGluZSA9fiAiKChHRVR8SEVBRHxQT1NUfE9QVElPTlMpIC8pfChPUFRJT05TICopIgogICAgICAgIHJlcSBvdXQgc2V0ICAgICAgaChDb25uZWN0aW9uKSAiY2xvc2UiCiAgICAgICAgcmVxIG91dCBhZGQgICAgICBsaW5lID09ICJTZXJ2ZXI6IHRydWMiCgoKRXh0ZW5zaW9uIGF2ZWMgZGVzIEFDTCA6CgogICAgICAgIHJlcSBpbiBhY2wobWV0aF92YWxpZCkgICBNRVRIID1+ICIoR0VUfFBPU1R8SEVBRHxPUFRJT05TKSIgIAogICAgICAgIHJlcSBpbiBhY2wobWV0aF9vcHRpb25zKSBNRVRIID09ICJPUFRJT05TIiAKICAgICAgICByZXEgaW4gYWNsKHVyaV9zbGFzaCkgICAgVVJJICA9XiAiLyIgCiAgICAgICAgcmVxIGluIGFjbCh1cmlfc3RhcikgICAgIFVSSSAgPT0gIioiIAoKICAgICAgICByZXEgaW4gZGVueSBhY2wgIShtZXRoX29wdGlvbnMgJiYgdXJpX3N0YXIgfHwgbWV0aF92YWxpZCAmJiB1cmlfc2xhc2gpCgpQZXV0Lep0cmUgcGx1cyBzaW1wbGVtZW50IDoKCiAgICAgICAgYWNsIG1ldGhfdmFsaWQgICBNRVRIID1+ICIoR0VUfFBPU1R8SEVBRHxPUFRJT05TKSIgIAogICAgICAgIGFjbCBtZXRoX29wdGlvbnMgTUVUSCA9PSAiT1BUSU9OUyIgCiAgICAgICAgYWNsIHVyaV9zbGFzaCAgICBVUkkgID1eICIvIiAKICAgICAgICBhY2wgdXJpX3N0YXIgICAgIFVSSSAgPT0gIioiIAoKICAgICAgICByZXEgaW4gIGRlbnkgbm90IGFjbChtZXRoX29wdGlvbnMgdXJpX3N0YXIsIG1ldGhfdmFsaWQgdXJpX3NsYXNoKQoKICAgICAgICByZXEgaW4gIHN3aXRjaCAgIFVSSSAgICAgPV4gIi9pbWFnZXMvIiBpbWFnZXMgOyByZXBsYWNlICIvIgogICAgICAgIHJlcSBpbiAgc3dpdGNoICAgaChob3N0KSA9KiAiLm15ZG9tYWluLmNvbSIgbXlkb21haW4KICAgICAgICByZXEgaW4gIHJlcGxhY2UgIGgoaG9zdCkgPX4gImxvY2FsaG9zdCguKikiICJ3d3dcMSIKICAgICAgICByZXEgaW4gIGRlbGV0ZSAgIGgoQ29ubmVjdGlvbikKICAgICAgICByZXEgaW4gIGRlbnkgbm90IGxpbmUgPX4gIigoR0VUfEhFQUR8UE9TVHxPUFRJT05TKSAvKXwoT1BUSU9OUyAqKSIKICAgICAgICByZXEgb3V0IHNldCAgICAgIGgoQ29ubmVjdGlvbikgImNsb3NlIgogICAgICAgIHJlcSBvdXQgYWRkICAgICAgbGluZSA9PSAiU2VydmVyOiB0cnVjIgoKUHLpdm9pciBsZSBjYXMgZHUgImlmIiBwb3VyIGV46WN1dGVyIHBsdXNpZXVycyBhY3Rpb25zIDoKCiAgICAgICAgcmVxIGluICBpZiBVUkkgPV4gIi9pbWFnZXMvIiB0aGVuIHJlcGxhY2UgIi8iIDsgc3dpdGNoIGltYWdlcwoKVXRpbGlzZXIgbGVzIG5vbXMgZW4gbWFqdXNjdWxlcy9taW51c2N1bGVzIHBvdXIgaW5kaXF1ZXIgc2kgb24gdmV1dCBwcmVuZHJlCmVuIGNvbXB0ZSBsYSBjYXNzZSBvdSBub24gOgoKICAgICAgICBpZiB1cmkgID1eICIvd2F0Y2gvIiAgICAgICBzZXRiZSB3YXRjaCAgIHJlYmFzZSAiL3dhdGNoLyIgIi8iCiAgICAgICAgaWYgdXJpICA9KiAiLmpwZyIgICAgICAgICAgc2V0YmUgaW1hZ2VzCiAgICAgICAgaWYgdXJpICA9fiAiLipkbGwuKiIgICAgICAgZGVueQogICAgICAgIGlmIEhPU1QgPSogIi5teWRvbWFpbi5jb20iIHNldGJlIG15ZG9tYWluCiAgICAgICAgZXRjLi4uCgpBbm90aGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIGhhdmUgYSBkZWRpY2F0ZWQga2V5d29yZCB0byBVUkkgcmVtYXBwaW5nLiBJdAp3b3VsZCBib3RoIHJld3JpdGUgdGhlIFVSSSBhbmQgb3B0aW9uYWxseSBzd2l0Y2ggdG8gYW5vdGhlciBiYWNrZW5kLgoKICAgICAgICB1cmlyZW1hcCAiL3dhdGNoLyIgICIvIiAgICAgICB3YXRjaAogICAgICAgIHVyaXJlbWFwICIvY2hhdC8iICAgIi8iICAgICAgIGNoYXQKICAgICAgICB1cmlyZW1hcCAiL2V2ZW50LyIgICIvZXZlbnQvIiBldmVudAoKT3IgYmV0dGVyIDoKCiAgICAgICAgdXJpcmVtYXAgIi93YXRjaC8iICB3YXRjaCAgIi8iCiAgICAgICAgdXJpcmVtYXAgIi9jaGF0LyIgICBjaGF0ICAgIi8iCiAgICAgICAgdXJpcmVtYXAgIi9ldmVudC8iICBldmVudAoKRm9yIHRoZSBVUkksIHVzaW5nIGEgcmVnZXggaXMgc29tZXRpbWVzIHVzZWZ1bCAoZWc6IHByb3ZpZGluZyBhIHNldCBvZiBwb3NzaWJsZSBwcmVmaXhlcy4KCgpTaW5vbiwgcGV1dC3qdHJlIHF1ZSBsZSAic3dpdGNoIiBwZXV0IHByZW5kcmUgdW4gcGFyYW3odHJlIGRlIG1hcHBpbmcgcG91ciBsYSBwYXJ0aWUgbWF0Y2jpZSA6CgogICAgICAgIHJlcSBpbiAgc3dpdGNoICAgVVJJICAgICA9XiAiL2ltYWdlcy8iIGltYWdlczoiLyIKCgoyMDA3LzAzLzMxIC0gQmVzb2lucyBwbHVzIHBy6WNpcy4KCjEpIGF1Y3VuZSBleHRlbnNpb24gZGUgYnJhbmNoZW1lbnQgb3UgYXV0cmUgZGFucyBsZXMgImxpc3RlbiIsIGMnZXN0IHRyb3AgY29tcGxleGUuCgpEaXN0aW5ndWVyIGxlcyBkb25u6WVzIGVudHJhbnRlcyAoaW4pIGV0IHNvcnRhbnRlcyAob3V0KS4KCkxlIGZyb250ZW5kIG5lIHZvaXQgcXVlIGxlcyByZXF1ZXRlcyBlbnRyYW50ZXMgZXQgbGVzIHLpcG9uc2VzIHNvcnRhbnRlcy4KTGUgYmFja2VuZCB2b2lyIGxlcyByZXF16nRlcyBpbi9vdXQgZXQgbGVzIHLpcG9uc2VzIGluL291dC4KTGUgZnJvbnRlbmQgcGVybWV0IGxlcyBicmFuY2hlbWVudHMgZCdlbnNlbWJsZXMgZGUgZmlsdHJlcyBkZSByZXF16nRlcyB2ZXJzCmQnYXV0cmVzLiBMZSBmcm9udGVuZCBldCBsZXMgZW5zZW1ibGVzIGRlIGZpbHRyZXMgZGUgcmVxdep0ZXMgcGV1dmVudCBicmFuY2hlcgp2ZXJzIHVuIGJhY2tlbmQuCgotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiAgXCAgV2hlcmUgfCAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwKICAgXF9fX19fXyB8IExpc3RlbiB8IEZyb250ZW5kIHwgUmVxUnVsZXMgfCBCYWNrZW5kIHwgUnNwUnVsZXMgfAogICAgICAgICAgXHwgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICB8CkNhcGFiaWxpdHkgfCAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwKLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKwpGcm9udGVuZCAgIHwgICAgWCAgIHwgICAgIFggICAgfCAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICB8Ci0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKRmlsdFJlcUluICB8ICAgIFggICB8ICAgICBYICAgIHwgICAgIFggICAgfCAgICBYICAgIHwgICAgICAgICAgfAotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCkp1bXBGaWx0UmVxfCAgICBYICAgfCAgICAgWCAgICB8ICAgICBYICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgXAotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rICA+ID0gUmVxSnVtcApTZXRCYWNrZW5kIHwgICAgWCAgIHwgICAgIFggICAgfCAgICAgWCAgICB8ICAgICAgICAgfCAgICAgICAgICB8IC8KLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKwpGaWx0UmVxT3V0IHwgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICB8ICAgIFggICAgfCAgICAgICAgICB8Ci0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKRmlsdFJzcEluICB8ICAgIFggICB8ICAgICAgICAgIHwgICAgICAgICAgfCAgICBYICAgIHwgICAgIFggICAgfAotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCkp1bXBGaWx0UnNwfCAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgIHwgICAgWCAgICB8ICAgICBYICAgIHwKLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKwpGaWx0UnNwT3V0IHwgICAgICAgIHwgICAgIFggICAgfCAgICAgICAgICB8ICAgIFggICAgfCAgICAgWCAgICB8Ci0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSsKQmFja2VuZCAgICB8ICAgIFggICB8ICAgICAgICAgIHwgICAgICAgICAgfCAgICBYICAgIHwgICAgICAgICAgfAotLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rCgpFbiBjb25jbHVzaW9uCi0tLS0tLS0tLS0tLS0KCklsIHkgYSBhdSBtb2lucyBiZXNvaW4gZGUgZGlzdGluZ3VlciA4IGZvbmN0aW9ubmFsaXTpcyBkZSBiYXNlIDoKIC0gY2FwYWNpdOkg4CByZWNldm9pciBkZXMgY29ubmV4aW9ucyAoZnJvbnRlbmQpCiAtIGNhcGFjaXTpIOAgZmlsdHJlciBsZXMgcmVxdep0ZXMgZW50cmFudGVzCiAtIGNhcGFjaXTpIOAgYnJhbmNoZXIgdmVycyB1biBiYWNrZW5kIG91IHVuIGVuc2VtYmxlIGRlIHLoZ2xlcyBkZSByZXF16nRlcwogLSBjYXBhY2l06SDgIGZpbHRyZXIgbGVzIHJlcXXqdGVzIHNvcnRhbnRlcwogLSBjYXBhY2l06SDgIGZpbHRyZXIgbGVzIHLpcG9uc2VzIGVudHJhbnRlcwogLSBjYXBhY2l06SDgIGJyYW5jaGVyIHZlcnMgdW4gYXV0cmUgZW5zZW1ibGUgZGUgcuhnbGVzIGRlIHLpcG9uc2VzCiAtIGNhcGFjaXTpIOAgZmlsdHJlciBsYSBy6XBvbnNlIHNvcnRhbnRlCiAtIGNhcGFjaXTpIOAgZ+lyZXIgZGVzIHNlcnZldXJzIChiYWNrZW5kKQoKUmVtYXJxdWUKLS0tLS0tLS0KIC0gb24gYSBzb3V2ZW50IGJlc29pbiBkZSBwb3V2b2lyIGFwcGxpcXVlciB1biBwZXRpdCB0cmFpdGVtZW50IHN1ciB1biBlbnNlbWJsZQogICBob3N0L3VyaS9hdXRyZS4gTGUgcGV0aXQgdHJhaXRlbWVudCBwZXV0IGNvbnNpc3RlciBlbiBxdWVscXVlcyBmaWx0cmVzIGFpbnNpCiAgIHF1J3VuZSBy6eljcml0dXJlIGR1IGNvdXBsZSAoaG9zdCx1cmkpLgoKClByb3Bvc2l0aW9uIDogQUNMCgpTeW50YXhlIDoKLS0tLS0tLS0tCgogICBhY2wgPG5hbWU+IDx3aGF0PiA8b3BlcmF0b3I+IDx2YWx1ZT4gLi4uCgpDZWNpIGNy6WVyYSB1bmUgYWNsIHLpZulyZW5j6WUgc291cyBsZSBub20gPG5hbWU+IHF1aSBzZXJhIHZhbGlk6WUgc2kKbCdhcHBsaWNhdGlvbiBkJ2F1IG1vaW5zIHVuZSBkZXMgdmFsZXVycyA8dmFsdWU+IGF2ZWMgbCdvcOlyYXRldXIgPG9wZXJhdG9yPgpzdXIgbGUgc3VqZXQgPHdoYXQ+IGVzdCB2YWxpZOllLgoKT3DpcmF0ZXVycyA6Ci0tLS0tLS0tLS0tLQoKVG91am91cnMgMiBjYXJhY3TocmVzIDoKCiAgWz0hXVt+PSpeJS8uXQoKUHJlbWllciBjYXJhY3TocmUgOiAgCiAgICc9JyA6IE9LIHNpIHRlc3QgdmFsaWRlCiAgICchJyA6IE9LIHNpIHRlc3Qg6WNob3XpLgoKU2Vjb25kIGNhcmFjdOhyZSA6CiAgICd+JyA6IGNvbXBhcmUgYXZlYyB1bmUgcmVnZXgKICAgJz0nIDogY29tcGFyZSBjaGHubmUg4CBjaGHubmUKICAgJyonIDogY29tcGFyZSBsYSBmaW4gZGUgbGEgY2hh7m5lIChleDogPSogIi5teWRvbWFpbi5jb20iKQogICAnXicgOiBjb21wYXJlIGxlIGTpYnV0IGRlIGxhIGNoYe5uZSAoZXg6ID1eICIvaW1hZ2VzLyIpCiAgICclJyA6IHJlY2hlcmNoZSB1bmUgc291cy1jaGHubmUKICAgJy8nIDogY29tcGFyZSBhdmVjIHVuIG1vdCBlbnRpZXIgZW4gYWNjZXB0YW50IGxlICcvJyBjb21tZSBk6WxpbWl0ZXVyCiAgICcuJyA6IGNvbXBhcmUgYXZlYyB1biBtb3QgZW50aWVyIGVuIGFjY2VwdGFudCBlbCAnLicgY29tbWUgZOlsaW1pdGV1cgoKRW5zdWl0ZSBvbiBleOljdXRlIHVuZSBhY3Rpb24gZGUgbWFuaehyZSBjb25kaXRpb25uZWxsZSBzaSBsJ2Vuc2VtYmxlIGRlcyBBQ0xzCm1lbnRpb25u6WVzIHNvbnQgdmFsaWTpZXMgKG91IGludmFsaWTpZXMgcG91ciBjZWxsZXMgcHLpY+lk6WVzIGQndW4gIiEiKSA6CgogICA8d2hhdD4gPHdoZXJlPiA8YWN0aW9uPiBvbiBbIV08YWNsbmFtZT4gLi4uCgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgYWNsIHd3d19wdWIgaG9zdCA9LiB3d3cgd3d3MDEgZGV2IHByZXByb2QKICAgYWNsIGltZ2hvc3QgaG9zdCA9LiBpbWFnZXMKICAgYWNsIGltZ2RpciAgIHVyaSA9LyBpbWcKICAgYWNsIGltYWdlZGlyIHVyaSA9LyBpbWFnZXMKICAgYWNsIG1zaWUgaCh1c2VyLWFnZW50KSA9JSAiTVNJRSIKCiAgIHNldF9ob3N0ICAiaW1hZ2VzIiAgICAgICBvbiB3d3dfcHViIGltZ2RpciAKICAgcmVtYXBfdXJpICIvaW1nIiAgICAiLyIgIG9uIHd3d19wdWIgaW1nZGlyCiAgIHJlbWFwX3VyaSAiL2ltYWdlcyIgIi8iICBvbiB3d3dfcHViIGltYWdlZGlyCiAgIHNldGJlIGltYWdlcyAgICAgICAgICAgICBvbiBpbWdob3N0CiAgIHJlcWRlbCAiQ29va2llIiAgICAgICAgICBvbiBhbGwKCgoKQWN0aW9ucyBwb3NzaWJsZXMgOgoKICAgcmVxICB7aW58b3V0fSB7YXBwZW5kfGRlbGV0ZXxyZW18YWRkfHNldHxyZXB8bWFwdXJpfHJld3JpdGV8cmVxbGluZXxkZW55fGFsbG93fHNldGJlfHRhcnBpdH0KICAgcmVzcCB7aW58b3V0fSB7YXBwZW5kfGRlbGV0ZXxyZW18YWRkfHNldHxyZXB8bWFwbG9jfHJld3JpdGV8c3RzbGluZXxkZW55fGFsbG93fQoKICAgcmVxIGluIGFwcGVuZCA8bGluZT4KICAgcmVxIGluIGRlbGV0ZSA8bGluZV9yZWdleD4KICAgcmVxIGluIHJlbSA8aGVhZGVyPgogICByZXEgaW4gYWRkIDxoZWFkZXI+IDxuZXdfdmFsdWU+CiAgIHJlcSBpbiBzZXQgPGhlYWRlcj4gPG5ld192YWx1ZT4KICAgcmVxIGluIHJlcCA8aGVhZGVyPiA8b2xkX3ZhbHVlPiA8bmV3X3ZhbHVlPgogICByZXEgaW4gbWFwdXJpICA8b2xkX3VyaV9wcmVmaXg+IDxuZXdfdXJpX3ByZWZpeD4KICAgcmVxIGluIHJld3JpdGUgPG9sZF91cmlfcmVnZXg+ICA8bmV3X3VyaT4KICAgcmVxIGluIHJlcWxpbmUgPG9sZF9yZXFfcmVnZXg+ICA8bmV3X3JlcT4KICAgcmVxIGluIGRlbnkKICAgcmVxIGluIGFsbG93CiAgIHJlcSBpbiB0YXJwaXQKICAgcmVxIGluIHNldGJlIDxiYWNrZW5kPgoKICAgcmVzcCBvdXQgbWFwbG9jIDxvbGRfbG9jYXRpb25fcHJlZml4PiA8bmV3X2xvY19wcmVmaXg+CiAgIHJlc3Agb3V0IHN0c2xpbmUgPG9sZF9zdHNfcmVnZXg+IDxuZXdfc3RzX3JlZ2V4PgoKTGVzIGNoYe5uZXMgZG9pdmVudCDqdHJlIGTpbGltaXTpZXMgcGFyIHVuIG3qbWUgY2FyYWN06HJlIGF1IGTpYnV0IGV0IOAgbGEgZmluLApxdWkgZG9pdCDqdHJlIOljaGFwcOkgcydpbCBlc3QgcHLpc2VudCBkYW5zIGxhIGNoYe5uZS4gVG91dCBjZSBxdWkgc2UgdHJvdXZlCmVudHJlIGxlIGNhcmFjdOhyZSBkZSBmaW4gZXQgbGVzIHByZW1pZXJzIGVzcGFjZSBlc3QgY29uc2lk6XLpIGNvbW1lIGRlcwpvcHRpb25zIHBhc3PpZXMgYXUgdHJhaXRlbWVudC4gUGFyIGV4ZW1wbGUgOgoKICAgcmVxIGluIHJlcCBob3N0IC93d3cvaSAvd3d3LwogICByZXEgaW4gcmVwIGNvbm5lY3Rpb24gL2tlZXAtYWxpdmUvaSAiY2xvc2UiCgpJbCBzZXJhaXQgcHJhdGlxdWUgZGUgcG91dm9pciBlZmZlY3R1ZXIgdW4gcmVtYXAgZW4gbeptZSB0ZW1wcyBxdSd1biBzZXRiZS4KCkNhcHR1cmVzOiBsZXMgc+lwYXJlciBlbiBpbi9vdXQuIExlcyByZW5kcmUgY29uZGl0aW9ubmVsbGVzID8K