PGhlYWRlciBjbGFzcz0ibWFzdGhlYWQiPgogIDxkaXYgY2xhc3M9ImV5ZWJyb3ciPkdlbSBTdGF0ZSBDaHJvbmljbGUgwrcgRGF0YSBEZXNrPC9kaXY+CiAgPGgxIGNsYXNzPSJ0aXRsZSI+QmFsYW5jZSB0aGUgPGVtPkJ1ZGdldDwvZW0+PC9oMT4KICA8cCBjbGFzcz0iZGVrIj5JZGFobydzIEZZMjAyNyBHZW5lcmFsIEZ1bmQsIGxpbmUgYnkgbGluZS4gQWRqdXN0IGEgdGF4IHJhdGUgb3IgYW4gYWdlbmN5J3MgYnVkZ2V0IGFuZCB3YXRjaCB0aGUgbGVkZ2VyIG1vdmUg4oCUIGV2ZXJ5IGZpZ3VyZSBiZWxvdyBjb21lcyBzdHJhaWdodCBvdXQgb2YgdGhlIExlZ2lzbGF0dXJlJ3Mgb3duIDxhIGhyZWY9Imh0dHBzOi8vbGVnaXNsYXR1cmUuaWRhaG8uZ292L2xzby9icGEvcHVicy9sZnIvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+RlkyMDI3IGZpc2NhbCByZXBvcnQ8L2E+LjwvcD4KICA8cCBjbGFzcz0iZGVrLW5vdGUiPkVuZGluZyBCYWxhbmNlIHJ1bnMgaGlnaGVyIHRoYW4gUmV2ZW51ZSBtaW51cyBBcHByb3ByaWF0aW9ucyBvbiBwdXJwb3NlIOKAlCBpdCBhbHNvIGNvdW50cyAkMjc1LjRNIGluIGFjdHVhbCBjYXNoIGNhcnJpZWQgb3ZlciBmcm9tIEZZMjAyNiBhbmQgJDM4LjlNIGluIG9uZS10aW1lIGZ1bmQgdHJhbnNmZXJzIGFscmVhZHkgZW5hY3RlZCwgbmVpdGhlciBvZiB3aGljaCBtb3ZlcyB3aGVuIHlvdSBhZGp1c3QgYSBzbGlkZXIuIEZ1bGwgYnJlYWtkb3duIGluIHRoZSBtZXRob2RvbG9neSBub3RlcyBiZWxvdy48L3A+CiAgPHAgY2xhc3M9ImJ5bGluZSI+RklTQ0FMIFlFQVIgMjAyNyDCtyBTRUNPTkQgUkVHVUxBUiBTRVNTSU9OLCA2OFRIIElEQUhPIExFR0lTTEFUVVJFIMK3IFNPVVJDRTogTFNPIExFR0lTTEFUSVZFIEZJU0NBTCBSRVBPUlQ8L3A+CjwvaGVhZGVyPgoKPGRpdiBjbGFzcz0ibGVkZ2VyLXN0aWNreS1vdXRlciI+CiAgPGRpdiBjbGFzcz0ibGVkZ2VyLWJhciI+CiAgICA8ZGl2IGNsYXNzPSJsZWRnZXItY2VsbCI+CiAgICAgIDxkaXYgY2xhc3M9ImxlZGdlci1sYWJlbCI+R2VuZXJhbCBGdW5kIFJldmVudWU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLXZhbHVlIiBpZD0ibGVkZ2VyUmV2ZW51ZSI+4oCUPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImxlZGdlci1kZWx0YSIgaWQ9ImxlZGdlclJldmVudWVEZWx0YSI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxlZGdlci1jZWxsIj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWxhYmVsIj5HZW5lcmFsIEZ1bmQgQXBwcm9wcmlhdGlvbnM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLXZhbHVlIiBpZD0ibGVkZ2VyQXBwcm9wIj7igJQ8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWRlbHRhIiBpZD0ibGVkZ2VyQXByb3BEZWx0YSI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxlZGdlci1jZWxsIGxlZGdlci1jZWxsLWJhbGFuY2UiPgogICAgICA8ZGl2IGNsYXNzPSJsZWRnZXItbGFiZWwiIHRpdGxlPSJJbmNsdWRlcyAkMjc1LjRNIGluIGNhc2ggYWN0dWFsbHkgY2FycmllZCBvdmVyIGZyb20gRlkyMDI2IGFuZCAkMzguOU0gaW4gZW5hY3RlZCBvbmUtdGltZSB0cmFuc2ZlcnMgLS0gc2VlIG1ldGhvZG9sb2d5IGJlbG93LiI+RW5kaW5nIEJhbGFuY2UgPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO2N1cnNvcjpoZWxwOyI+4pOYPC9zcGFuPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsZWRnZXItdmFsdWUiIGlkPSJsZWRnZXJCYWxhbmNlIj7igJQ8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGVkZ2VyLWRlbHRhIiBpZD0ibGVkZ2VyQmFsYW5jZU5vdGUiPjwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyZXNldC1jZWxsIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0icmVzZXQtYnRuIiBpZD0icmVzZXRCdG4iPuKGuiBSZXNldCBhbGw8L2J1dHRvbj4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImxlZGdlci1mZWQtc3RyaXAiIGlkPSJsZWRnZXJGZWRTdHJpcCI+CiAgICA8c3BhbiBjbGFzcz0iZmVkLXN3YXRjaCI+PC9zcGFuPgogICAgPHNwYW4+RmVkZXJhbCBmdW5kcyBhZmZlY3RlZCAoaW5mb3JtYXRpb25hbCDigJQgbm90IHBhcnQgb2YgSWRhaG8ncyBiYWxhbmNlZC1idWRnZXQgcmVxdWlyZW1lbnQpOiA8c3Ryb25nIGlkPSJsZWRnZXJGZWRWYWx1ZSI+JDAuME08L3N0cm9uZz48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibGVkZ2VyLWRlZC1zdHJpcCIgaWQ9ImxlZGdlckRlZFN0cmlwIj4KICAgIDxzcGFuIGNsYXNzPSJkZWQtc3dhdGNoIj48L3NwYW4+CiAgICA8c3Bhbj5EZWRpY2F0ZWQgZnVuZHMgYWZmZWN0ZWQgKGluZm9ybWF0aW9uYWwg4oCUIG5vdCBwYXJ0IG9mIElkYWhvJ3MgYmFsYW5jZWQtYnVkZ2V0IHJlcXVpcmVtZW50LCBhbmQgbm90IGZyZWVseSByZWFsbG9jYXRhYmxlIGJ5IEpGQUMpOiA8c3Ryb25nIGlkPSJsZWRnZXJEZWRWYWx1ZSI+JDAuME08L3N0cm9uZz48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0id3JhcCI+CgogIDxzZWN0aW9uIGNsYXNzPSJibG9jayIgaWQ9InJldmVudWUtc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWQiPgogICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi1udW0iPlJFVjwvc3Bhbj4KICAgICAgPGgyIGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5SZXZlbnVlPC9oMj4KICAgIDwvZGl2PgogICAgPHAgY2xhc3M9InNlY3Rpb24tc3ViIj5JZGFobydzIEdlbmVyYWwgRnVuZCBkcmF3cyBtYWlubHkgZnJvbSB0aHJlZSB0YXhlcy4gTW92ZSBhIHJhdGUgYW5kIHRoZSBsZWRnZXIgYWJvdmUgcmVjYWxjdWxhdGVzIGluc3RhbnRseSDigJQgdGhpcyBpcyA8ZW0+c3RhdGljPC9lbT4gc2NvcmluZyAoaXQgYXNzdW1lcyB0YXhhYmxlIGFjdGl2aXR5IGRvZXNuJ3QgY2hhbmdlKSwgdGhlIHNhbWUgc2ltcGxpZnlpbmcgYXNzdW1wdGlvbiBtb3N0IHF1aWNrIGZpc2NhbCBlc3RpbWF0ZXMgdXNlLjwvcD4KICAgIDxkaXYgY2xhc3M9InJldi1ncmlkIiBpZD0icmV2ZW51ZUdyaWQiPjwvZGl2PgogIDwvc2VjdGlvbj4KCiAgPHNlY3Rpb24gY2xhc3M9ImJsb2NrIiBpZD0ic3BlbmRpbmctc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWQiPgogICAgICA8c3BhbiBjbGFzcz0ic2VjdGlvbi1udW0iPlNQRU5EPC9zcGFuPgogICAgICA8aDIgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlNwZW5kaW5nLCBieSBkZXBhcnRtZW50PC9oMj4KICAgIDwvZGl2PgogICAgPHAgY2xhc3M9InNlY3Rpb24tc3ViIj5Hcm91cGVkIHRoZSB3YXkgSkZBQyBpdHNlbGYgZ3JvdXBzIHRoZW0sIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBMZWdpc2xhdGl2ZSBGaXNjYWwgUmVwb3J0LiBFYWNoIHJvdyBzaG93cyBHZW5lcmFsIEZ1bmQsIERlZGljYXRlZCBGdW5kcywgYW5kIEZlZGVyYWwgRnVuZHMgc2lkZSBieSBzaWRlIOKAlCBhIEdlbmVyYWwgRnVuZCBjdXQgZG9lc24ndCB0b3VjaCB0aGUgb3RoZXIgdHdvIGJhcnMsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIHBvaW50LjwvcD4KICAgIDxkaXYgaWQ9ImFyZWFBY2NvcmRpb25zIj48L2Rpdj4KICA8L3NlY3Rpb24+CgogIDxkaXYgY2xhc3M9Im1ldGhvZCI+CiAgICA8aDM+UmVhZCB0aGlzIGJlZm9yZSB5b3UgbW92ZSBhIHNsaWRlcjwvaDM+CiAgICA8cD48c3Ryb25nPlRoaXMgaXMgYSBtZWNoYW5pY2FsIGNhbGN1bGF0b3IsIG5vdCBhIGZvcmVjYXN0Ljwvc3Ryb25nPiBFdmVyeSBudW1iZXIgc3RhcnRzIGZyb20gdGhlIExlZ2lzbGF0dXJlJ3MgYWN0dWFsIEZZMjAyNyBhcHByb3ByaWF0aW9uIGFuZCByZXZlbnVlIHRhYmxlcy4gU2xpZGVycyBhcHBseSBzaW1wbGUsIHN0YXRpYyBtYXRoIOKAlCBkb2xsYXItZm9yLWRvbGxhciBvciByYXRlLWZvci1yYXRlIOKAlCB3aXRoIG5vIGFzc3VtcHRpb24gYWJvdXQgaG93IHBlb3BsZSBvciBhZ2VuY2llcyB3b3VsZCBhY3R1YWxseSByZXNwb25kLiBSZWFsIGZpc2NhbCBub3RlcyBhcmUgbW9yZSBjYXJlZnVsIHRoYW4gdGhpcywgYW5kIHNvIHNob3VsZCB5b3UgYmUgYmVmb3JlIGNpdGluZyBhIG51bWJlciBmcm9tIGhlcmUuPC9wPgogICAgPHVsPgogICAgICA8bGk+PHN0cm9uZz5BIGJ1ZGdldCBiaWxsIGlzbid0IHRoZSBvbmx5IGRvb3IuPC9zdHJvbmc+IEpGQUMgc2V0cyBkb2xsYXIgYW1vdW50cywgYnV0IGVsaWdpYmlsaXR5LCBiZW5lZml0IGxldmVscywgYW5kIHByb2dyYW0gc3RydWN0dXJlIGFyZSB1c3VhbGx5IHNldCBpbiBzZXBhcmF0ZSBJZGFobyBDb2RlIHNlY3Rpb25zLiBSb3dzIHRhZ2dlZCA8c3BhbiBjbGFzcz0iY29kZS10YWciPmFtZW5kcyBjb2RlPC9zcGFuPiBhbHJlYWR5IHJlcXVpcmVkIG1vcmUgdGhhbiBhbiBhcHByb3ByaWF0aW9uIGJpbGwgdGhpcyB5ZWFyIOKAlCBjdXR0aW5nIG1vc3Qgb3RoZXIgbGluZXMgZnVydGhlciB3b3VsZCB0b28uPC9saT4KICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBGdW5kcyBhbmQgRGVkaWNhdGVkIEZ1bmRzIGFyZW4ndCBHZW5lcmFsIEZ1bmQncyB0byBzcGVuZC48L3N0cm9uZz4gVGhlIGdyYXkvZ29sZCBwb3J0aW9uIG9mIGVhY2ggYmFyIGlzIG1vbmV5IHRoZSBzdGF0ZSByZWNlaXZlcyBvciBjb2xsZWN0cyBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlIChmZWRlcmFsIG1hdGNoLCBmZWVzLCBlbmRvd21lbnQgZWFybmluZ3MpLiBDdXR0aW5nIGEgcHJvZ3JhbSdzIEdlbmVyYWwgRnVuZCBsaW5lIGRvZXNuJ3QgZnJlZSB1cCB0aGF0IG1vbmV5IGZvciBzb21ldGhpbmcgZWxzZSwgYW5kIGZvciBmZWRlcmFsbHkgbWF0Y2hlZCBwcm9ncmFtcyBpdCBjYW4gbWVhbiBmb3JmZWl0aW5nIHRoZSBtYXRjaCBlbnRpcmVseS48L2xpPgogICAgICA8bGk+PHN0cm9uZz5Tb21lIG9mIHRoZSBiaWdnZXN0IG51bWJlcnMgYXJlIGZvcm11bGFzLCBub3QgY2hvaWNlcy48L3N0cm9uZz4gUHVibGljIFNjaG9vbCBTdXBwb3J0IGZ1bmRzIGEgY29uc3RpdHV0aW9uYWwgb2JsaWdhdGlvbiAoSWRhaG8gQ29uc3QuIEFydC4gSVgsIFNlYy4gMSkgbGFyZ2VseSB0aHJvdWdoIHN0YXR1dG9yeSBwZXItcHVwaWwgZm9ybXVsYXM7IE1lZGljYWlkIGVucm9sbG1lbnQgaXMgZmVkZXJhbGx5IHJlZ3VsYXRlZCBlbGlnaWJpbGl0eSwgbm90IGEgSkZBQyBkaWFsLiBJZGFobydzIEZZMjAyNyByZWd1bGFyIE1lZGljYWlkIGZlZGVyYWwgbWF0Y2ggcmF0ZSAoRk1BUCkgaXMgNjcuMzElLCBzbyBhIHN0YXRlIEdlbmVyYWwgRnVuZCBjdXQgdG8gbWF0Y2hlZCBzZXJ2aWNlcyBmb3JmZWl0cyByb3VnaGx5ICQyLjA2IGluIGZlZGVyYWwgbW9uZXkgZm9yIGV2ZXJ5ICQxIHRoZSBzdGF0ZSBwdWxscyBiYWNrIOKAlCBzZWUgdGhlIE1lZGljYWlkIHJvdyBmb3IgdGhlIG1hdGguPC9saT4KICAgICAgPGxpPjxzdHJvbmc+VGhlIGdyb2NlcnktdGF4IGZpZ3VyZXMgYXJlIGVzdGltYXRlcywgbm90IElkYWhvIFRheCBDb21taXNzaW9uIGNvbGxlY3Rpb25zIGRhdGEuPC9zdHJvbmc+IElkYWhvIGRvZXNuJ3Qgc2VwYXJhdGVseSB0cmFjayBncm9jZXJ5IHNhbGVzIHRheCwgc28gdGhlIHN0YXRlJ3Mgb3duIGZpc2NhbCBhbmFseXN0cyB1c2VkIFV0YWgncyBncm9jZXJ5LXNoYXJlLW9mLXNhbGVzIGRhdGEgYXMgYSBwcm94eSBmb3IgdGhlIDIwMjUgYmFsbG90IGluaXRpYXRpdmUg4oCUIHNlZSB0aGUgY2l0YXRpb24gb24gdGhhdCBjYXJkLjwvbGk+CiAgICAgIDxsaT48c3Ryb25nPiJFbmRpbmcgQmFsYW5jZSIgbWF0Y2hlcyB0aGUgTGVnaXNsYXR1cmUncyBvd24gZGVmaW5pdGlvbiwgbm90IGp1c3QgUmV2ZW51ZSBtaW51cyBBcHByb3ByaWF0aW9ucy48L3N0cm9uZz4gVGhlIExGUidzIEdlbmVyYWwgRnVuZCBCdWRnZXQgUmVwb3J0IGRlZmluZXMgaXQgYXMgTmV0IFJldmVudWVzIG1pbnVzIEFwcHJvcHJpYXRpb25zLCB3aGVyZSBOZXQgUmV2ZW51ZXMgZm9sZHMgaW4gYSBiZWdpbm5pbmcgY2FzaCBiYWxhbmNlIGFuZCBlbmFjdGVkIG9uZS10aW1lIHRyYW5zZmVycy4gVGhvc2UgcGllY2VzIGFyZSBsb2NrZWQtaW4sIGFscmVhZHktc2V0dGxlZCBhbW91bnRzLCBzbyB0aGV5J3JlIGhlbGQgZml4ZWQgaGVyZSByYXRoZXIgdGhhbiBtb3Zpbmcgd2l0aCB0aGUgc2xpZGVycyDigJQgYSBoeXBvdGhldGljYWwgY2hhbmdlIHRvIHRoaXMgeWVhcidzIHRheCByYXRlcyBvciBhZ2VuY3kgYnVkZ2V0cyB3b3VsZG4ndCByZXdyaXRlIGxhc3QgeWVhcidzIGxlZnRvdmVyIGNhc2ggb3IgYmlsbHMgYWxyZWFkeSBzaWduZWQgaW50byBsYXcuPC9saT4KICAgICAgPGxpPjxzdHJvbmc+VGhlIEVuZGluZyBCYWxhbmNlJ3MgY2FzaC1wb3NpdGlvbiBmaWd1cmVzIGFyZSB1cGRhdGVkIHRocm91Z2ggSnVseSAyMDI2IGFjdHVhbHM7IHRoZSBlbmFjdGVkIGJ1ZGdldCBpdHNlbGYgaXMgbm90Ljwvc3Ryb25nPiBFdmVyeSBzbGlkZXIgaGVyZSBpcyBzdGlsbCBhbmNob3JlZCB0byB0aGUgRlkyMDI3IGJ1ZGdldCBhcyBwYXNzZWQgYXQgU2luZSBEaWUgKEFwcmlsIDIsIDIwMjYpIOKAlCB0aGF0J3MgdGhlIGxhdyBhcyB3cml0dGVuLCBhbmQgaXQgd29uJ3QgY2hhbmdlIHVudGlsIHRoZSBMZWdpc2xhdHVyZSBhY3RzIGFnYWluLiBCdXQgdGhlIGJlZ2lubmluZy1jYXNoIGFuZCB0cmFuc2ZlciBhbW91bnRzIHRoYXQgZmVlZCBpbnRvIEVuZGluZyBCYWxhbmNlIGFyZSBub3cga25vd24gZmFjdHMgcmF0aGVyIHRoYW4gQXByaWwgcHJvamVjdGlvbnM6IEZZMjAyNiBhY3R1YWxseSBjbG9zZWQgd2l0aCAkMjc1LjRNIGluIHN0YXJ0aW5nIGNhc2ggZm9yIEZZMjAyNywgJDE5MC43TSBhYm92ZSB3aGF0IHdhcyBwcm9qZWN0ZWQgYXQgU2luZSBEaWUsIGFuZCB0aGUgc3RhdHV0b3J5IEJ1ZGdldCBTdGFiaWxpemF0aW9uIEZ1bmQgc3dlZXAgY2FtZSBpbiBhdCAkMjguOU0gcmF0aGVyIHRoYW4gdGhlICQ1My43TSBvcmlnaW5hbGx5IGVzdGltYXRlZCwgc2luY2UgdGhlIGZ1bmQncyAxNSUtb2YtR2VuZXJhbC1GdW5kIGNhcCBtb3ZlZCB3aXRoIHRoZSBoaWdoZXIgcmV2ZW51ZS4gQXQgZXZlcnkgc2xpZGVyIGxlZnQgdW50b3VjaGVkLCB0aGlzIGRhc2hib2FyZCdzIEVuZGluZyBCYWxhbmNlIGlzICQzMzIsMDk5LDgwMCDigJQgU2luZSBEaWUncyBlbmFjdGVkIFJldmVudWUgYW5kIEFwcHJvcHJpYXRpb25zLCBwbHVzIHRoZSBub3ctYWN0dWFsIGNhc2ggcG9zaXRpb24uIFNvdXJjZXM6IExTTyBZZWFyIEVuZCBGWTIwMjYgR2VuZXJhbCBGdW5kIEJ1ZGdldCBNb25pdG9yIChBdWcuIDEwLCAyMDI2KSBhbmQgTFNPIEZZMjAyNyBHZW5lcmFsIEZ1bmQgQnVkZ2V0IE1vbml0b3Ig4oCTIEp1bHkgUmVzdWx0cyAoQXVnLiAxNywgMjAyNikuPC9saT4KICAgICAgPGxpPjxzdHJvbmc+REZNJ3Mgb3duIHJldmVudWUgZm9yZWNhc3QgaXMgYWxyZWFkeSBydW5uaW5nIHdlbGwgYWhlYWQgb2YgdGhlIGVuYWN0ZWQgZXN0aW1hdGUg4oCUIHdvcnRoIGtub3dpbmcsIGRlbGliZXJhdGVseSBub3QgYnVpbHQgaW50byB0aGUgc2xpZGVycy48L3N0cm9uZz4gSW4gQXVndXN0IDIwMjYsIERGTSByZXZpc2VkIGl0cyBGWTIwMjcgZm9yZWNhc3QgdXB3YXJkIHRvICQ1LDkzMC44TSAoKyQyOTEuMU0gYWJvdmUgdGhlIExlZ2lzbGF0dXJlJ3MgZW5hY3RlZCBlc3RpbWF0ZSksIGFuZCBKdWx5IGNvbGxlY3Rpb25zIHJhbiAkMTMuN00gYWhlYWQgb2YgZXZlbiB0aGF0IHJldmlzZWQgbnVtYmVyLiBJZiBjb2xsZWN0aW9ucyB0cmFjayB0aGUgcmV2aXNlZCBmb3JlY2FzdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIHllYXIsIExTTydzIG93biBwcm9qZWN0aW9uIHB1dHMgdGhlIEZZMjAyNyBlbmRpbmcgYmFsYW5jZSBhdCAkNjE5LjVNLiBUaGF0IGZpZ3VyZSBpc24ndCByZWZsZWN0ZWQgaW4gdGhlIHNsaWRlcnMgYmVsb3cgb24gcHVycG9zZTogREZNJ3MgZm9yZWNhc3QgaXMgYSBtb3ZpbmcgdGFyZ2V0IHRoYXQgZ2V0cyByZXZpc2VkIGFnYWluIHdpdGggbmV4dCBtb250aCdzIEJ1ZGdldCBNb25pdG9yLCB3aGlsZSB0aGUgZW5hY3RlZCBidWRnZXQgc3RheXMgZml4ZWQgZm9yIHRoZSBmaXNjYWwgeWVhciBhbmQgaXMgdGhlIHN0ZWFkaWVyIGFuY2hvciBmb3IgIndoYXQgd291bGQgaXQgdGFrZSB0byBjaGFuZ2UgdGhpcyIgbW9kZWxpbmcuIFNvdXJjZTogTFNPIEZZMjAyNyBHZW5lcmFsIEZ1bmQgQnVkZ2V0IE1vbml0b3Ig4oCTIEp1bHkgUmVzdWx0cyAoQXVnLiAxNywgMjAyNikuPC9saT4KICAgIDwvdWw+CiAgICA8cCBjbGFzcz0ic3JjIj5QcmltYXJ5IHNvdXJjZTogU3RhdGUgb2YgSWRhaG8sIDIwMjYgTGVnaXNsYXRpdmUgRmlzY2FsIFJlcG9ydCBmb3IgRmlzY2FsIFllYXIgMjAyNywgTGVnaXNsYXRpdmUgU2VydmljZXMgT2ZmaWNlLCBCdWRnZXQgYW5kIFBvbGljeSBBbmFseXNpcyBEaXZpc2lvbi4gR3JvY2VyeSB0YXggZmlndXJlczogSWRhaG8gRGl2aXNpb24gb2YgRmluYW5jaWFsIE1hbmFnZW1lbnQgZmlzY2FsIGltcGFjdCBzdGF0ZW1lbnQsIDIwMjUgUmVwZWFsIElkYWhvIEdyb2NlcnkgVGF4IGluaXRpYXRpdmUsIGFzIHJlcG9ydGVkIGJ5IElkYWhvIENhcGl0YWwgU3VuLjwvcD4KICA8L2Rpdj4KCiAgPGZvb3RlciBjbGFzcz0iY3JlZGl0cyI+CiAgICA8c3Bhbj5HZW0gU3RhdGUgQ2hyb25pY2xlIOKAlCBEYXRhIERlc2s8L3NwYW4+CiAgICA8c3Bhbj5CdWlsdCBmcm9tIHRoZSBGWTIwMjcgTGVnaXNsYXRpdmUgRmlzY2FsIFJlcG9ydDwvc3Bhbj4KICA8L2Zvb3Rlcj4KCjwvZGl2Pg== eyJtZXRhIjogeyJzb3VyY2UiOiAiMjAyNiBJZGFobyBMZWdpc2xhdGl2ZSBGaXNjYWwgUmVwb3J0IGZvciBGWTIwMjcsIExTTyBCdWRnZXQgJiBQb2xpY3kgQW5hbHlzaXMgRGl2aXNpb24iLCAiZmlzY2FsX3llYXIiOiAiRlkyMDI3IChKdWx5IDEsIDIwMjYgLSBKdW5lIDMwLCAyMDI3KSIsICJnZl9yZXZlbnVlX3RvdGFsX2Z5MjciOiA1NjM5NjcwMDAwLCAiZ2ZfYXBwcm9wcmlhdGlvbl90b3RhbF9meTI3IjogNTYyMTgzNzEwMCwgImFsbF9mdW5kc190b3RhbF9meTI3IjogMTQ0NDk3MjMyMDAsICJiZWdpbm5pbmdfYmFsYW5jZV9meTI3IjogMjc1NDAwMDAwLCAibmV0X3RyYW5zZmVyc19meTI3IjogMzg4NjY5MDAsICJlbmRpbmdfYmFsYW5jZV9yZWNvbmNpbGlhdGlvbl9ub3RlIjogIlRoZSBGWTIwMjcgR2VuZXJhbCBGdW5kIEJ1ZGdldCBSZXBvcnQgKExGUiBwLjMpIGRlZmluZXMgdGhlIG9mZmljaWFsIEVuZGluZyBCYWxhbmNlIGFzIE5ldCBSZXZlbnVlcyBtaW51cyBBcHByb3ByaWF0aW9ucywgd2hlcmUgTmV0IFJldmVudWVzID0gdGF4IHJldmVudWUgKyBhICQ2NywyOTQsNzAwIGNhc2ggYmFsYW5jZSBjYXJyaWVkIG92ZXIgZnJvbSBGWTIwMjYgKyAkNjMsNjQwLDcwMCBpbiBuZXQgb25lLXRpbWUgdHJhbnNmZXJzIChkb21pbmF0ZWQgYnkgYSAkNTMsNjczLDgwMCBzdGF0dXRvcnkgc3dlZXAgZnJvbSB0aGUgQnVkZ2V0IFN0YWJpbGl6YXRpb24gRnVuZCwgd2hpY2ggZXhjZWVkZWQgaXRzIDE1JS1vZi1HZW5lcmFsLUZ1bmQgc3RhdHV0b3J5IGNhcCkuIFRoaXMgZGFzaGJvYXJkJ3Mgc2xpZGVycyBvbmx5IGFkanVzdCBjdXJyZW50LXllYXIgdGF4IHJldmVudWUgYW5kIGFwcHJvcHJpYXRpb25zLCBzbyB0aGUgYmVnaW5uaW5nIGJhbGFuY2UgYW5kIG9uZS10aW1lIHRyYW5zZmVycyBhcmUgaGVsZCBmaXhlZCBhcyBhIGNvbnN0YW50IGFkZGl0aW9uIHRvIHRoZSBCYWxhbmNlIGZpZ3VyZSAtLSB0aGV5IHdvdWxkIG5vdCBjaGFuZ2UgYmFzZWQgb24gYSBoeXBvdGhldGljYWwgY2hhbmdlIHRvIHRoaXMgeWVhcidzIHRheCByYXRlcyBvciBhZ2VuY3kgYnVkZ2V0cy4iLCAiZGF0YV92aW50YWdlX25vdGUiOiAiRW5hY3RlZCBidWRnZXQgZmlndXJlcyAoUmV2ZW51ZSwgQXBwcm9wcmlhdGlvbnMsIGFuZCBlYWNoIHNwZW5kaW5nL3JldmVudWUgbGV2ZXIpIHJlZmxlY3QgdGhlIEZZMjAyNyBidWRnZXQgYXMgcGFzc2VkIGF0IFNpbmUgRGllIChBcHJpbCAyLCAyMDI2KSBhbmQgYXJlIHRoZSBhbmNob3IgZm9yIGV2ZXJ5IHNsaWRlciBpbiB0aGlzIHRvb2wgLS0gdGhhdCdzIHRoZSBsYXcgYXMgd3JpdHRlbiwgYW5kIHdvbid0IGNoYW5nZSB1bnRpbCB0aGUgTGVnaXNsYXR1cmUgYWN0cyBhZ2Fpbi4gVGhlIEVuZGluZyBCYWxhbmNlJ3MgYmVnaW5uaW5nLWNhc2ggYW5kIHRyYW5zZmVyIGNvbXBvbmVudHMsIGhvd2V2ZXIsIGFyZSBub3cga25vd24gZmFjdHMgcmF0aGVyIHRoYW4gcHJvamVjdGlvbnM6IEZZMjAyNiBjbG9zZWQgd2l0aCAkMjc1LjRNIGluIHN0YXJ0aW5nIGNhc2ggZm9yIEZZMjAyNyAoc3RhdGUgZW5kZWQgdGhlIHllYXIgJDE5MC43TSBhYm92ZSB0aGUgQXByaWwgcHJvamVjdGlvbiAtLSBMU08gWWVhciBFbmQgRlkyMDI2IEdlbmVyYWwgRnVuZCBCdWRnZXQgTW9uaXRvciwgQXVnLiAxMCwgMjAyNiksIGFuZCB0aGUgc3RhdHV0b3J5IEJ1ZGdldCBTdGFiaWxpemF0aW9uIEZ1bmQgc3dlZXAgY2FtZSBpbiBhdCAkMjguOU0gcmF0aGVyIHRoYW4gdGhlICQ1My43TSBlc3RpbWF0ZWQgYXQgU2luZSBEaWUsIHNpbmNlIHRoZSBmdW5kJ3MgMTUlLW9mLUdlbmVyYWwtRnVuZCBjYXAgbW92ZWQgd2l0aCB0aGUgaGlnaGVyIHJldmVudWUgKExTTyBGWTIwMjcgR2VuZXJhbCBGdW5kIEJ1ZGdldCBNb25pdG9yIC0tIEp1bHkgUmVzdWx0cywgQXVnLiAxNywgMjAyNikuIiwgImRmbV9mb3JlY2FzdF9jb250ZXh0IjogeyJub3RlIjogIkZvciBjb250ZXh0IGJleW9uZCB3aGF0IHRoaXMgZGFzaGJvYXJkIG1vZGVsczogREZNIHJldmlzZWQgaXRzIEZZMjAyNyBHZW5lcmFsIEZ1bmQgcmV2ZW51ZSBmb3JlY2FzdCB1cHdhcmQgdG8gJDUsOTMwLjhNIGluIEF1Z3VzdCAyMDI2ICgrJDI5MS4xTSBhYm92ZSB0aGUgTGVnaXNsYXR1cmUncyBlbmFjdGVkIGVzdGltYXRlKSwgYW5kIEp1bHkgY29sbGVjdGlvbnMgcmFuICQxMy43TSBhaGVhZCBvZiBldmVuIHRoYXQgcmV2aXNlZCBmb3JlY2FzdC4gSWYgY29sbGVjdGlvbnMgdHJhY2sgdGhlIHJldmlzZWQgZm9yZWNhc3QgZm9yIHRoZSByZXN0IG9mIHRoZSB5ZWFyLCBMU08ncyBvd24gcHJvamVjdGlvbiBwdXRzIHRoZSBGWTIwMjcgZW5kaW5nIGJhbGFuY2UgYXQgJDYxOS41TS4gVGhpcyBkYXNoYm9hcmQgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBmb2xkIHRoYXQgcmV2aXNpb24gaW50byB0aGUgc2xpZGVycyBiZWxvdyAtLSBERk0ncyBmb3JlY2FzdCBpcyBhIG1vdmluZyB0YXJnZXQgdGhhdCB3aWxsIGJlIHVwZGF0ZWQgYWdhaW4gbmV4dCBtb250aCwgd2hpbGUgdGhlIGVuYWN0ZWQgYnVkZ2V0IGlzIGZpeGVkIGZvciB0aGUgZmlzY2FsIHllYXIgYW5kIGlzIHRoZSBtb3JlIGRlZmVuc2libGUgYW5jaG9yIGZvciAnd2hhdCB3b3VsZCBpdCB0YWtlIHRvIGNoYW5nZSB0aGlzJyBtb2RlbGluZy4iLCAicmV2aXNlZF9yZXZlbnVlX2ZvcmVjYXN0IjogNTkzMDgwMDAwMCwgInJldmlzZWRfcmV2ZW51ZV9mb3JlY2FzdF9pbmNyZWFzZSI6IDI5MTEwMDAwMCwgImp1bHlfYWN0dWFsX3ZzX3JldmlzZWRfZm9yZWNhc3QiOiAxMzcwMDAwMCwgImxzb19wcm9qZWN0ZWRfZW5kaW5nX2JhbGFuY2VfaWZfZm9yZWNhc3RfaG9sZHMiOiA2MTk1MDAwMDAsICJzb3VyY2UiOiAiTFNPLCBGWTIwMjcgR2VuZXJhbCBGdW5kIEJ1ZGdldCBNb25pdG9yIC0tIEp1bHkgUmVzdWx0cywgQXVnLiAxNywgMjAyNiJ9fSwgInJldmVudWVfbGV2ZXJzIjogW3siaWQiOiAiaW5kaXZpZHVhbF9pbmNvbWVfdGF4IiwgImxhYmVsIjogIkluZGl2aWR1YWwgSW5jb21lIFRheCIsICJiYXNlX2Ftb3VudCI6IDI0NjgxNDUxNzUsICJiYXNlX3JhdGUiOiAwLjA1MywgInVuaXQiOiAicmF0ZSIsICJtaW5fcmF0ZSI6IDAuMCwgIm1heF9yYXRlIjogMC4wOCwgInN0ZXAiOiAwLjAwMSwgIm1lY2hhbmlzbSI6ICJzdGF0aWNfbGluZWFyIiwgImNpdGF0aW9uIjogIklkYWhvIENvZGUgNjMtMzAyNDsgcmF0ZSBjdXQgZnJvbSA1LjY5JSB0byA1LjMwJSBlZmZlY3RpdmUgSmFuLiAxLCAyMDI1IiwgImxlZ2FsX2NvbnN0cmFpbnQiOiAicmVxdWlyZXNfc3RhdHV0ZSIsICJub3RlIjogIkEgcmF0ZSBjaGFuZ2UgbmVlZHMgYSBiaWxsIGFtZW5kaW5nIElkYWhvIENvZGUgNjMtMzAyNCAtLSBKRkFDIGNhbm5vdCBkbyB0aGlzIHRocm91Z2ggdGhlIGFwcHJvcHJpYXRpb25zIHByb2Nlc3MgYWxvbmUuIn0sIHsiaWQiOiAiY29ycG9yYXRlX2luY29tZV90YXgiLCAibGFiZWwiOiAiQ29ycG9yYXRlIEluY29tZSBUYXgiLCAiYmFzZV9hbW91bnQiOiA0Njk3MDYyMTQsICJiYXNlX3JhdGUiOiAwLjA1MywgInVuaXQiOiAicmF0ZSIsICJtaW5fcmF0ZSI6IDAuMCwgIm1heF9yYXRlIjogMC4wOCwgInN0ZXAiOiAwLjAwMSwgIm1lY2hhbmlzbSI6ICJzdGF0aWNfbGluZWFyIiwgImNpdGF0aW9uIjogIklkYWhvIENvZGUgNjMtMzAyNTsgbWF0Y2hlcyB0aGUgaW5kaXZpZHVhbCBmbGF0IHJhdGUiLCAibGVnYWxfY29uc3RyYWludCI6ICJyZXF1aXJlc19zdGF0dXRlIiwgIm5vdGUiOiAiU2FtZSBmbGF0IHJhdGUgYXMgaW5kaXZpZHVhbCBpbmNvbWUgdGF4OyBhIGNoYW5nZSBuZWVkcyBhIHN0YXR1dGUgYW1lbmRtZW50LCBub3QgYSBidWRnZXQgYmlsbC4ifSwgeyJpZCI6ICJzYWxlc190YXgiLCAibGFiZWwiOiAiR2VuZXJhbCBTYWxlcyBUYXgiLCAiYmFzZV9hbW91bnQiOiAyNDMwMDU1MjYzLCAiYmFzZV9yYXRlIjogMC4wNiwgInVuaXQiOiAicmF0ZSIsICJtaW5fcmF0ZSI6IDAuMCwgIm1heF9yYXRlIjogMC4wOSwgInN0ZXAiOiAwLjAwMSwgIm1lY2hhbmlzbSI6ICJzdGF0aWNfbGluZWFyIiwgImNpdGF0aW9uIjogIklkYWhvIENvZGUgNjMtMzYxOTsgR2VuZXJhbCBGdW5kIHNoYXJlIG9ubHkgLS0gYSBwb3J0aW9uIG9mIGdyb3NzIDYlIHNhbGVzIHRheCBjb2xsZWN0aW9ucyBpcyBzdGF0dXRvcmlseSBkaXN0cmlidXRlZCB0byBjaXRpZXMvY291bnRpZXMgcmV2ZW51ZSBzaGFyaW5nIGFuZCBvdGhlciBkZWRpY2F0ZWQgZnVuZHMgYmVmb3JlIHJlYWNoaW5nIHRoZSBHZW5lcmFsIEZ1bmQsIHNvIHRoaXMgYmFzZSBpcyBzbWFsbGVyIHRoYW4gZ3Jvc3Mgc3RhdGV3aWRlIHNhbGVzIHRheCBjb2xsZWN0aW9ucyAofiQzLjdCKS4iLCAibGVnYWxfY29uc3RyYWludCI6ICJyZXF1aXJlc19zdGF0dXRlIiwgIm5vdGUiOiAiVGhpcyBmaWd1cmUgaXMgdGhlIHBvcnRpb24gdGhhdCByZWFjaGVzIHRoZSBHZW5lcmFsIEZ1bmQsIG5vdCBncm9zcyBzdGF0ZXdpZGUgY29sbGVjdGlvbnMuIn0sIHsiaWQiOiAiZ3JvY2VyeV9leGVtcHRpb24iLCAibGFiZWwiOiAiRXhlbXB0IGdyb2NlcmllcyBmcm9tIHNhbGVzIHRheCIsICJ0eXBlIjogInRvZ2dsZSIsICJiYXNlX2Ftb3VudCI6IDAsICJjb3N0X2lmX2VuYWJsZWQiOiAtNDQ3NTAwMDAwLCAiY29zdF9yYW5nZSI6IFstNDg1MDAwMDAwLCAtNDEwMDAwMDAwXSwgIm1lY2hhbmlzbSI6ICJzdGF0aWNfdG9nZ2xlIiwgImNpdGF0aW9uIjogIklkYWhvIERpdmlzaW9uIG9mIEZpbmFuY2lhbCBNYW5hZ2VtZW50IGZpc2NhbCBpbXBhY3Qgc3RhdGVtZW50LCAyMDI1IFJlcGVhbCBJZGFobyBHcm9jZXJ5IFRheCBiYWxsb3QgaW5pdGlhdGl2ZSAoSWRhaG8gQ2FwaXRhbCBTdW4sIEF1Zy4gMjAyNSkiLCAibGVnYWxfY29uc3RyYWludCI6ICJyZXF1aXJlc19zdGF0dXRlX29yX2luaXRpYXRpdmUiLCAibm90ZSI6ICJERk0gdXNlZCBVdGFoJ3MgZ3JvY2VyeS1zaGFyZS1vZi1yZXRhaWwtc2FsZXMgZGF0YSAoMTEtMTMlKSBhcyBhIHByb3h5IHNpbmNlIElkYWhvIGRvZXMgbm90IGluZGVwZW5kZW50bHkgdHJhY2sgZ3JvY2VyeSBzYWxlcyB0YXggY29sbGVjdGlvbnMgLS0gdGhpcyBpcyBhIHJhbmdlIGVzdGltYXRlLCBub3QgYSBwcmVjaXNlIGZpZ3VyZS4gVGhpcyBpcyB0aGUgZ3Jvc3Mgc2FsZXMtdGF4LW9ubHkgY29zdDsgaXQgZG9lcyBOT1QgaW5jbHVkZSBlbGltaW5hdGluZyB0aGUgZm9vZCB0YXggY3JlZGl0IChzZWUgbmV4dCBsZXZlcikgLS0gdGhvc2UgYXJlIHR3byBzZXBhcmF0ZSBwb2xpY2llcy4gVGhpcyBlc3RpbWF0ZSBzY2FsZXMgd2l0aCB0aGUgc2FsZXMgdGF4IHJhdGUgc2xpZGVyIGFib3ZlIC0tIGl0IGFzc3VtZXMgdGhlIGVuYWN0ZWQgNiUgcmF0ZSwgc28gZHJvcHBpbmcgdGhhdCByYXRlIGxvd2VycyB0aGlzIGZpZ3VyZSBwcm9wb3J0aW9uYWxseSwgYW5kIGEgMCUgc2FsZXMgdGF4IG1ha2VzIHRoaXMgdG9nZ2xlIHdvcnRoICQwIChubyB0YXggbGVmdCB0byBleGVtcHQgZ3JvY2VyaWVzIGZyb20pLiJ9LCB7ImlkIjogImZvb2RfdGF4X2NyZWRpdCIsICJsYWJlbCI6ICJGb29kIFRheCBDcmVkaXQgKHBlciBwZXJzb24sIHBlciB5ZWFyKSIsICJiYXNlX2Ftb3VudCI6IDE1NSwgInRvdGFsX3Byb2dyYW1fY29zdCI6IC0yMzI1MDAwMDAsICJjb3N0X3JhbmdlIjogWy0yNTUwMDAwMDAsIC0yMTAwMDAwMDBdLCAidW5pdCI6ICJkb2xsYXJzX3Blcl9wZXJzb24iLCAibWluX3ZhbCI6IDAsICJtYXhfdmFsIjogMzAwLCAic3RlcCI6IDUsICJtZWNoYW5pc20iOiAic3RhdGljX2xpbmVhciIsICJjaXRhdGlvbiI6ICJJZGFobyBDb2RlIDYzLTMwMjRBOyBjcmVkaXQgcmFpc2VkIGZyb20gJDEyMCB0byAkMTU1IHZpYSBIQjIzMSAoMjAyNSk7IHRvdGFsIHByb2dyYW0gY29zdCBwZXIgREZNIGZpc2NhbCBpbXBhY3QgYW5hbHlzaXMsIDIwMjUiLCAibGVnYWxfY29uc3RyYWludCI6ICJyZXF1aXJlc19zdGF0dXRlIiwgIm5vdGUiOiAiVGhpcyBjcmVkaXQgaXMgd2hhdCBhY3R1YWxseSBvZmZzZXRzIHRoZSBncm9jZXJ5IHNhbGVzIHRheCBmb3IgSWRhaG8gcmVzaWRlbnRzIHRvZGF5LiBaZXJvaW5nIGl0IG91dCBpcyBhIERJRkZFUkVOVCBwb2xpY3kgdGhhbiBleGVtcHRpbmcgZ3JvY2VyaWVzIGF0IHRoZSByZWdpc3RlciAocHJldmlvdXMgbGV2ZXIpIC0tIGVsaW1pbmF0aW5nIHRoZSBjcmVkaXQgcmFpc2VzIHJldmVudWU7IGV4ZW1wdGluZyBncm9jZXJpZXMgYXQgY2hlY2tvdXQgbG9zZXMgcmV2ZW51ZS4gVGhlIDIwMjUgYmFsbG90IGluaXRpYXRpdmUgYnVuZGxlZCBib3RoIGNoYW5nZXMgdG9nZXRoZXIgZm9yIGEgbmV0IGNvc3Qgb2YgJDIwMC0yMzBNL3llYXIuIn1dLCAicmV2ZW51ZV9yZWZlcmVuY2UiOiB7InByb2R1Y3RfdGF4ZXMiOiA2NjgxNDI0NSwgIm1pc2NfcmV2ZW51ZSI6IDIwNDk0OTEwMywgImJlZ2lubmluZ19iYWxhbmNlIjogNjcyOTQ3MDB9LCAicmVzZXJ2ZXMiOiB7ImJ1ZGdldF9zdGFiaWxpemF0aW9uX2Z1bmRfYmFsYW5jZSI6IDg4MDE4ODgyNSwgImNhcF9ub3RlIjogIkJhbGFuY2UgaXMgc3RhdHV0b3JpbHkgY2FwcGVkIGF0IDE1JSBvZiB0aGUgR2VuZXJhbCBGdW5kIGZvciB0aGUgZW5kaW5nIGZpc2NhbCB5ZWFyIChTZWN0aW9uIDU3LTgxNCwgSWRhaG8gQ29kZSkuIElmIEZZMjAyNyByZXZlbnVlIHByb2plY3Rpb25zIGhvbGQgbmVhciAkNS41MS01LjY0QiwgdGhlIDE1JSBjYXAgaXMgcm91Z2hseSAkODI1LTg0Nk0gLS0gYW55IHN1cnBsdXMgYWJvdmUgdGhlIGNhcCBub3JtYWxseSBzd2VlcHMgdG8gdGhlIEdlbmVyYWwgRnVuZCBhdXRvbWF0aWNhbGx5IHVubGVzcyB0aGUgTGVnaXNsYXR1cmUgYWN0cyB0byByZWRpcmVjdCBpdCwgd2hpY2ggaGFwcGVuZWQgaW4gdGhlIDIwMjYgc2Vzc2lvbi4iLCAibWFqb3JfcmVzZXJ2ZXNfdG90YWxfZnkyNyI6IDEyMzE0MjEwMDAsICJtYWpvcl9yZXNlcnZlc19wY3Rfb2ZfZ2YiOiAwLjIxOH0sICJzcGVuZGluZ19sZXZlcnMiOiBbeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiUHVibGljIFNjaG9vbCBTdXBwb3J0IiwgImZ0cCI6IDAuMCwgImdmIjogMjc1MDM3OTcwMCwgImRlZCI6IDEwNTQxMTQwMCwgImZlZCI6IDI2ODQ0NzgwMCwgInRvdGFsIjogMzEyNDIzODkwMCwgImZlZF9zaGFyZSI6IDAuMDg1OSwgImRlZF9zaGFyZSI6IDAuMDMzNywgImFtZW5kc19jb2RlIjogdHJ1ZSwgImJpbGxzIjogWyJTMTM2MiIsICJTMTQzOCIsICJTMTQ0NCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlRlYWNoZXJzIiwgInRleHQiOiAiVGhpcyBkaXZpc2lvbiBwcm92aWRlcyBzdGF0ZSBhbmQgZmVkZXJhbCBmdW5kaW5nIHRvIHN1cHBvcnQgdGhlIGluc3RydWN0aW9uYWwgc2VydmljZXMgaW4gSWRhaG8ncyBsb2NhbCBzY2hvb2xcbmRpc3RyaWN0cyBhbmQgcHVibGljIGNoYXJ0ZXIgc2Nob29scy4gRnVuZHMgYXJlIHByaW1hcmlseSBleHBlbmRlZCBmb3Igc2FsYXJpZXMgYW5kIGVtcGxveWVyLXBhaWQgYmVuZWZpdHMgKFBFUlNJIGFuZCBGSUNBKSJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0dWRlbnQgU3VwcG9ydCIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBwcm92aWRlcyBzdGF0ZSBmdW5kaW5nIHRvIHN1cHBvcnQgdGhlIGFkbWluaXN0cmF0aW9uIG9mIElkYWhvJ3MgbG9jYWwgc2Nob29sIGRpc3RyaWN0cyBhbmQgcHVibGljXG5jaGFydGVyIHNjaG9vbHMuIEZ1bmRpbmcgaXMgdXNlZCBmb3IgcGVyc29ubmVsIGNvc3RzIGFuZCB0aGUgZW1wbG95ZXItcGFpZCBiZW5lZml0cyAoUEVSU0kgYW5kIEZJQ0EpIGZvciBkaXN0cmljdCBhbmQgc2Nob29sIGFkbWluaXN0cmF0b3JzLFxud2hpY2ggaW5jbHVkZSBzdXBlcmludGVuZGVudHMsIGFzc2lzdGFudCBzdXBlcmludGVuZGVudHMsIHByaW5jaXBhbHMsIGFzc2lzdGFudCBwcmluY2lwYWxzLCBzdXBlcnZpc29ycywgYW5kIGNvb3JkaW5hdG9ycy4gVGhpcyBwcm9ncmFtIHdhc1xubW92ZWQgaW50byB0aGUgbmV3IFN0dWRlbnQgU3VwcG9ydCBEaXZpc2lvbiBpbiBINzYzIG9mIDIwMjQ7IHByaW9yIHRvIHRoYXQsIGl0IHdhcyBhIHN0YW5kYWxvbmUgZGl2aXNpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdHVkZW50IFN1cHBvcnQiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gcHJvdmlkZXMgc3RhdGUgZnVuZGluZyB0byBzdXBwb3J0IHRoZSBvcGVyYXRpb25zIG9mIElkYWhvJ3MgbG9jYWwgc2Nob29sIGRpc3RyaWN0cyBhbmQgcHVibGljIGNoYXJ0ZXJcbnNjaG9vbHMuIEZ1bmRzIGFyZSB1c2VkIGZvciBzYWxhcmllcyBhbmQgZW1wbG95ZXItcGFpZCBiZW5lZml0cyAoUEVSU0ksIGFuZCBGSUNBKSBmb3IgYSB3aWRlIHJhbmdlIG9mIGpvYiBkdXRpZXMgc3VjaCBhcyBidXNpbmVzc1xubWFuYWdlcnMsIG9mZmljZSBzdXBwb3J0LCBjb21wdXRlciB0ZWNobmljaWFucywgZ3JvdW5kc2tlZXBpbmcsIGFuZCBtYWludGVuYW5jZSAoY2xhc3NpZmllZCBzdGFmZikuIFRoaXMgcHJvZ3JhbSBhbHNvIGluY2x1ZGVzIGZ1bmRpbmcgZm9yXG5wdXBpbCB0cmFuc3BvcnRhdGlvbiwgdGVjaG5vbG9neSwgaGVhbHRoIGluc3VyYW5jZSBmdW5kcywgYW5kIGRpc2NyZXRpb25hcnkgZnVuZHMgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGFueSBlZHVjYXRpb25hbCBzdXBwb3J0IHNlcnZpY2VzIG9yXG5nZW5lcmFsIG9wZXJhdGlvbnMuIFRoaXMgcHJvZ3JhbSB3YXMgbW92ZWQgaW50byB0aGUgbmV3IFN0dWRlbnQgU3VwcG9ydCBEaXZpIn0sIHsic3ViX3Byb2dyYW0iOiAiU3R1ZGVudCBTdXBwb3J0IiwgInRleHQiOiAiQ2hpbGRyZW4ncyBQcm9ncmFtcyBpbmNsdWRlcyBwcm9ncmFtcyB0aGF0IHByb3ZpZGUgZGlyZWN0IGVkdWNhdGlvbmFsIG9yIG1hdGVyaWFsIGJlbmVmaXRzIHRvIGNoaWxkcmVuLCB3aGVyZVxuZnVuZGluZyBkb2VzIG5vdCBwcmltYXJpbHkgZ28gdG8gcGF5aW5nIGNlcnRpZmljYXRlZCB0ZWFjaGVycyBhbmQgYWRtaW5pc3RyYXRvcnMuIEl0IGFsc28gaW5jbHVkZXMgcHJvZ3JhbXMgdGhhdCBwcm92aWRlIGZ1bmRpbmcgZm9yIHRoZVxuc2VwYXJhdGUgaW5zdHJ1Y3Rpb24gb2YgaWRlbnRpZmllZCBzdWJncm91cHMgb2YgY2hpbGRyZW4gb3V0c2lkZSB0aGUgbm9ybWFsIGNsYXNzcm9vbSBvZiBhbiBJZGFobyBwdWJsaWMgc2Nob29sLiBUaGlzIHByb2dyYW0gd2FzIG1vdmVkIGludG9cbnRoZSBuZXcgU3R1ZGVudCBTdXBwb3J0IERpdmlzaW9uIGluIEg3NjMgb2YgMjAyNDsgcHJpb3IgdG8gdGhhdCBpdCB3YXMgYSBzdGFuZGFsb25lIGRpdmlzaW9uIn0sIHsic3ViX3Byb2dyYW0iOiAiRmFjaWxpdGllcyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBGYWNpbGl0aWVzIGluY2x1ZGVzIG1vbmV5cyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgZm9yIHRoZSBDaGFydGVyIFNjaG9vbCBGYWNpbGl0aWVzIFByb2dyYW0uXG5UaGlzIGRpdmlzaW9uIGFsc28gc3VwcG9ydHMgdGhlIGFwcHJvcHJpYXRlZCBmdW5kaW5nLCBpbmNsdWRpbmcgbG90dGVyeSBkaXN0cmlidXRpb25zLCBmb3IgdGhlIFNjaG9vbCBGYWNpbGl0aWVzIEZ1bmQgZXN0YWJsaXNoZWQgaW4gSDI5MiBvZiAyMDIzXG5hbmQgbW9kaWZpZWQgaW4gSDUyMSBvZiAyMDI0LiBQcmlvciB0byBGWSAyMDI1LCB0aGlzIGRpdmlzaW9uIGluY2x1ZGVkIGFwcHJvcHJpYXRpb25zIGZvciB0aGUgQm9uZCBMZXZ5IEVxdWFsaXphdGlvbiBQcm9ncmFtIGFuZCB0aGUgU2Nob29sXG5EaXN0cmljdCBGYWNpbGl0aWVzIE1haW50ZW5hbmNlIE1hdGNoIFByb2dyYW07IHRoZXNlIHByb2dyYW1zIGVuZGVkIHdpdGggcGFzc2FnZSBvZiBINTIxIG9mIDIwMjQifSwgeyJzdWJfcHJvZ3JhbSI6ICJDZW50cmFsIFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIENlbnRyYWwgU2VydmljZXMgaW5jbHVkZXMgdGhvc2UgcHJvZ3JhbXMgYW5kIGZ1bmRzIHRoYXQgYXJlIHNwZW50IGF0IHRoZSBzdGF0ZSBsZXZlbCBieSB0aGVcbkRlcGFydG1lbnQgb2YgRWR1Y2F0aW9uIGZvciB0aGUgYmVuZWZpdCBvZiBhbGwgc2Nob29sIGRpc3RyaWN0cyBhbmQgY2hhcnRlciBzY2hvb2xzLiBGdW5kcyBhcmUgcHJpbWFyaWx5IHVzZWQgdG8gY29udHJhY3QgZm9yIHNlcnZpY2VzIGFuZCBmb3JcbnByb2dyYW0gb3ZlcnNpZ2h0IGFuZCBldmFsdWF0aW9uIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiQWdyaWN1bHR1cmFsIFJlc2VhcmNoICYgRXh0ZW5zaW9uIFNlcnZpY2UiLCAiZnRwIjogMzA3Ljc3LCAiZ2YiOiAzODY2MzMwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiAzODY2MzMwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg3NiB0aGF0IHJlbW92ZWQgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZyB0aGVcbnRyYW5zZmVyIG9mIG1vbmV5cyBiZXR3ZWVuIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiT3V0cmVhY2ggUHJvZ3JhbXMiLCAidGV4dCI6ICJBZ3JpY3VsdHVyYWwgUmVzZWFyY2ggYW5kIENvb3BlcmF0aXZlIEV4dGVuc2lvbiBTZXJ2aWNlIChBUkVTKSBzY2llbnRpc3RzIGNvbmR1Y3QgcmVzZWFyY2ggb24gdGhlIFVuaXZlcnNpdHlcbm9mIElkYWhvIGNhbXB1cyBhbmQgYXQgdGhpcnRlZW4gcmVzZWFyY2ggYW5kIGV4dGVuc2lvbiBjZW50ZXJzIGFjcm9zcyB0aGUgc3RhdGUgdG8gZW5zdXJlIHRoYXQgSWRhaG8gYWdyaWN1bHR1cmUgcmVtYWlucyBwcm9kdWN0aXZlIGFuZFxucHJvZml0YWJsZS4gUmVzdWx0cyBvZiB0aGF0IHJlc2VhcmNoLCBhcyB3ZWxsIGFzIGZhbWlseSBhbmQgY29uc3VtZXIgc2VydmljZXMsIGFyZSB0aGVuIGRlbGl2ZXJlZCB0byB0aGUgYWdyaWN1bHR1cmFsIGNvbW11bml0eSBhbmQgY2l0aXplbnMgb2ZcbklkYWhvIHRocm91Z2ggZXh0ZW5zaW9uIG9mZmljZXMgbG9jYXRlZCBpbiA0MiBvZiBJZGFobydzIDQ0IGNvdW50aWVzLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAzMy0yOTA4LCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIkNvbGxlZ2UgYW5kIFVuaXZlcnNpdGllcyIsICJmdHAiOiA0ODY0Ljk0LCAiZ2YiOiAzNzUwODAxMDAsICJkZWQiOiAzNzA1Njk0MDAsICJmZWQiOiAwLCAidG90YWwiOiA3NDU2NDk1MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjQ5NywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiIsICJIOTIyIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDggb2YgSDg3NiBhdXRob3JpemVkIHRoZSBjb2xsZWdlIGFuZCB1bml2ZXJzaXRpZXMsIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZVxuaW5zdGl0dXRpb25hbCBwcmVzaWRlbnRzLCB0byBlbXBsb3kgYSB2b2x1bnRhcnkgc2VwYXJhdGlvbiBpbmNlbnRpdmUgcGxhbiBhcyBwYXJ0IG9mIHRoZWlyIG92ZXJhbGwgZmluYW5jaWFsIGFuZCBidWRnZXQgc3RyYXRlZ3kifSwgeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg3NiB0aGF0IHJlbW92ZWQgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZyB0aGVcbnRyYW5zZmVyIG9mIG1vbmV5cyBiZXR3ZWVuIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQm9pc2UgU3RhdGUgVW5pdmVyc2l0eSIsICJ0ZXh0IjogIkJvaXNlIFN0YXRlIFVuaXZlcnNpdHkgKEJTVSkgaXMgYSBjb21wcmVoZW5zaXZlLCB1cmJhbiB1bml2ZXJzaXR5IGZvY3VzZWQgb24gY3VsdGl2YXRpbmcgdGhlIHBlcnNvbmFsIGFuZFxuY2FyZWVyIGdyb3d0aCBvZiBzdHVkZW50cyB0aHJvdWdoIGVkdWNhdGlvbiBhbmQgcmVzZWFyY2guIEl0cyBhY2FkZW1pYyBjb2xsZWdlcyBvZmZlciBhbiBhcnJheSBvZiBkZWdyZWUgcHJvZ3JhbXMgaW4gYnVzaW5lc3MsXG5lbmdpbmVlcmluZywgaGVhbHRoY2FyZSwgZWR1Y2F0aW9uIGFuZCBwdWJsaWMgc2VydmljZSJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIFN0YXRlIFVuaXZlcnNpdHkiLCAidGV4dCI6ICJJZGFobyBTdGF0ZSBVbml2ZXJzaXR5LCBsb2NhdGVkIGluIFBvY2F0ZWxsbywgaXMgYSBkb2N0b3JhbCB1bml2ZXJzaXR5IHNlcnZpbmcgYSBkaXZlcnNlIHBvcHVsYXRpb24gdGhyb3VnaFxucmVzZWFyY2gsIHN0YXRlIGFuZCByZWdpb25hbCBwdWJsaWMgc2VydmljZSwgYW5kIHVuZGVyZ3JhZHVhdGUgYW5kIGdyYWR1YXRlIHByb2dyYW1zLiBUaGUgdW5pdmVyc2l0eSBhbHNvIGhhcyBzcGVjaWZpYyByZXNwb25zaWJpbGl0aWVzIGZvclxuZGVsaXZlcmluZyBwcm9ncmFtcyBpbiB0aGUgaGVhbHRoIHByb2Zlc3Npb25zIHdpdGggYW4gZW1waGFzaXMgaW4gdGhlIGJpb2xvZ2ljYWwgc2NpZW5jZXMuIElkYWhvIFN0YXRlIFVuaXZlcnNpdHkgYWxzbyBlbXBoYXNpemVzIGJ1c2luZXNzLFxuZWR1Y2F0aW9uIGFuZCB0ZWFjaGVyIHByZXBhcmF0aW9uLCBlbmdpbmVlcmluZywgdGVjaG5pY2FsIHRyYWluaW5nLCBsaWJlcmFsIGFydHMsIGFuZCBzY2llbmNlcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkxld2lzLUNsYXJrIFN0YXRlIENvbGxlZ2UiLCAidGV4dCI6ICJMZXdpcy1DbGFyayBTdGF0ZSBDb2xsZWdlLCBsb2NhdGVkIGluIExld2lzdG9uLCBpcyBhIHJlZ2lvbmFsIHN0YXRlIGNvbGxlZ2Ugb2ZmZXJpbmcgdW5kZXJncmFkdWF0ZSBpbnN0cnVjdGlvbiBpblxuYXJ0cyBhbmQgc2NpZW5jZXMsIHByb2Zlc3Npb25hbCBhcmVhcyB0YWlsb3JlZCB0byB0aGUgZWR1Y2F0aW9uYWwgbmVlZHMgb2YgSWRhaG8sIGFwcGxpZWQgdGVjaG5pY2FsIHByb2dyYW1zIGFuZCBuaWNoZSBncmFkdWF0ZSBwcm9ncmFtc1xuKGUuZy4sIG51cnNpbmcgbGVhZGVyc2hpcCkgd2hpY2ggc3VwcG9ydCB0aGUgc3RhdGUgYW5kIGxvY2FsIGVjb25vbXkuIFRoZSBjb2xsZWdlIGVtcGhhc2l6ZXMgYnVzaW5lc3MsIGNyaW1pbmFsIGp1c3RpY2UsIG51cnNpbmcsIHNvY2lhbCB3b3JrLFxudGVhY2hlciBwcmVwYXJhdGlvbiwgYW5kIGNhcmVlciB0ZWNobmljYWwgZWR1Y2F0aW9uLiBUaGUgY29sbGVnZSBhbHNvIHByb3ZpZGVzIHNlbGVjdCBwcm9ncmFtcyBvZmZlcmVkIG9uIGFuZCBvZmYgY2FtcHVzIGF0IG5vbi10cmFkaXRpb25hbFxudGltZXMsIHVzaW5nIG5vbi10cmFkaXRpb25hbCBtZWFucyBvZiBkZWxpdmVyeSJ9LCB7InN1Yl9wcm9ncmFtIjogIlVuaXZlcnNpdHkgb2YgSWRhaG8iLCAidGV4dCI6ICJUaGUgVW5pdmVyc2l0eSBvZiBJZGFobywgbG9jYXRlZCBpbiBNb3Njb3csIGlzIGEgbGFuZC1ncmFudCBpbnN0aXR1dGlvbiBjb21taXR0ZWQgdG8gdW5kZXJncmFkdWF0ZSBhbmQgZ3JhZHVhdGVcbnJlc2VhcmNoIGVkdWNhdGlvbiB3aXRoIGV4dGVuc2lvbiBzZXJ2aWNlcyByZXNwb25zaXZlIHRvIElkYWhvIGFuZCB0aGUgcmVnaW9uJ3MgYnVzaW5lc3MgYW5kIGNvbW11bml0eSBuZWVkcy4gVGhlIHVuaXZlcnNpdHkgaXMgYWxzb1xucmVzcG9uc2libGUgZm9yIHJlZ2lvbmFsIG1lZGljYWwgYW5kIHZldGVyaW5hcnkgZWR1Y2F0aW9uIHByb2dyYW1zIGluIHdoaWNoIHRoZSBzdGF0ZSBvZiBJZGFobyBwYXJ0aWNpcGF0ZXMuIFRoZSBVbml2ZXJzaXR5IG9mIElkYWhvXG5lbXBoYXNpemVzIGFncmljdWx0dXJlLCBuYXR1cmFsIHJlc291cmNlcywgbWV0YWxsdXJneSwgZW5naW5lZXJpbmcsIGFyY2hpdGVjdHVyZSwgbGF3LCBmb3JlaWduIGxhbmd1YWdlcywgdGVhY2hlciBwcmVwYXJhdGlvbiwgYW5kXG5pbnRlcm5hdGlvbmFsIHByb2dyYW1zIn0sIHsic3ViX3Byb2dyYW0iOiAiU3lzdGVtd2lkZSBQcm9ncmFtcyIsICJ0ZXh0IjogIkZ1bmRpbmcgZm9yIFN5c3RlbXdpZGUgUHJvZ3JhbXMgaXMgaW5jbHVkZWQgaW4gdGhlIENvbGxlZ2UgYW5kIFVuaXZlcnNpdGllcyBhcHByb3ByaWF0aW9uIGFuZCBpcyBlaXRoZXJcbmRpc3RyaWJ1dGVkIHRvIHRoZSBpbnN0aXR1dGlvbnMgYnkgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIG9yIGV4cGVuZGVkIGZvciBwcm9qZWN0cyBvciBzZXJ2aWNlcyB0aGF0IGJlbmVmaXQgYWxsIGluc3RpdHV0aW9ucyJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIkNvbW11bml0eSBDb2xsZWdlcyIsICJmdHAiOiAwLjAsICJnZiI6IDY3MzY5MzAwLCAiZGVkIjogODAwMDAwLCAiZmVkIjogMCwgInRvdGFsIjogNjgxNjkzMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAxMTcsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NzYiLCAiSDkwNiJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg3NiB0aGF0IHJlbW92ZWQgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZyB0aGVcbnRyYW5zZmVyIG9mIG1vbmV5cyBiZXR3ZWVuIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ29sbGVnZSBvZiBFYXN0ZXJuIElkYWhvIiwgInRleHQiOiAiVGhlIENvbGxlZ2Ugb2YgRWFzdGVybiBJZGFobywgbG9jYXRlZCBpbiBJZGFobyBGYWxscywgaXMgYSBjb21wcmVoZW5zaXZlIGNvbW11bml0eSBjb2xsZWdlIHRoYXQgcHJvdmlkZXNcbmFjY2VzcyB0byBhZmZvcmRhYmxlLCBxdWFsaXR5IGVkdWNhdGlvbiB0aGF0IG1lZXRzIHRoZSBuZWVkcyBvZiBzdHVkZW50cywgcmVnaW9uYWwgZW1wbG95ZXJzLCBhbmQgdGhlIGNvbW11bml0eS4gVGhlIGluc3RpdHV0aW9uLCBwcmV2aW91c2x5XG5rbm93biBhcyBFYXN0ZXJuIElkYWhvIFRlY2huaWNhbCBDb2xsZWdlLCByZWNlaXZlZCBzdXBwb3J0IGZyb20gQm9ubmV2aWxsZSBDb3VudHkgdm90ZXJzIGluIDIwMTcgdG8gYmVjb21lIElkYWhvJ3MgZm91cnRoIGNvbW11bml0eVxuY29sbGVnZS4gRnVuZGluZyBmb3IgdGhlIGNvbGxlZ2UgY29tZXMgZnJvbSBhIHZhcmlldHkgb2Ygc291cmNlcywgaW5jbHVkaW5nIHRoZSBzdGF0ZSBHZW5lcmFsIEZ1bmQsIHByb3BlcnR5IHRheGVzIGZyb20gdGhlIHRheGluZyBkaXN0cmljdFxuKEJvbm5ldmlsbGUgQ291bnR5KSwgY291bnR5IHR1aXRpb24sIHR1aXRpb24gYW5kIGZlZXMsIGFuZCBzdGF0ZSBsaXF1b3IgZnVuZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb2xsZWdlIG9mIFNvdXRoZXJuIElkYWhvIiwgInRleHQiOiAiVGhlIENvbGxlZ2Ugb2YgU291dGhlcm4gSWRhaG8sIGxvY2F0ZWQgaW4gVHdpbiBGYWxscywgaXMgYSBjb21wcmVoZW5zaXZlIGNvbW11bml0eSBjb2xsZWdlIHRoYXQgcHJvdmlkZXNcbmVkdWNhdGlvbmFsLCBzb2NpYWwsIGN1bHR1cmFsLCBlY29ub21pYywgYW5kIHdvcmtmb3JjZSBkZXZlbG9wbWVudCBvcHBvcnR1bml0aWVzLiBUaGUgY29sbGVnZSBoYXMgb2ZmLWNhbXB1cyBjZW50ZXJzIGluIEJ1cmxleSwgR29vZGluZyxcbmFuZCBKZXJvbWUuIEluIDE5NjMgdGhlIElkYWhvIExlZ2lzbGF0dXJlIHBhc3NlZCB0aGUgSnVuaW9yIENvbGxlZ2UgQWN0LCB3aGljaCBwcm92aWRlZCBmb3IgdGhlIGVzdGFibGlzaG1lbnQgb2YganVuaW9yIGNvbGxlZ2UgZGlzdHJpY3RzXG4oQ2hhcHRlciAyMSwgVGl0bGUgMzMsIElkYWhvIENvZGUpLiBUd2luIEZhbGxzIENvdW50eSB2b3RlZCB0byBmb3JtIGEganVuaW9yIGNvbGxlZ2UgZGlzdHJpY3QgaW4gTm92ZW1iZXIgMTk2NC4gVGhlIGZvbGxvd2luZyB5ZWFyLCBKZXJvbWVcbkNvdW50eSBjaXRpemVucyB2b3RlZCB0byBqb2luIHRoZSBqdW5pb3IgY29sbGVnZSBkaXN0cmljdC4gRnVuZGluZyBmb3IgdGhlIGNvbGxlZyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbGxlZ2Ugb2YgV2VzdGVybiBJZGFobyIsICJ0ZXh0IjogIlRoZSBDb2xsZWdlIG9mIFdlc3Rlcm4gSWRhaG8gY3VycmVudGx5IG9mZmVycyBvdmVyIDkwIEFjYWRlbWljIFRyYW5zZmVyIGFuZCBjYXJlZXItdGVjaG5pY2FsIHByb2dyYW1zIGxlYWRpbmdcbnRvIGFuIEFzc29jaWF0ZSBvZiBBcnRzIG9yIFNjaWVuY2UgZGVncmVlLCBhbiBBc3NvY2lhdGUgb2YgQXBwbGllZCBTY2llbmNlIGRlZ3JlZSwgb3IgYSBjZXJ0aWZpY2F0ZS4gQ1dJIHdpbGwgYmVnaW4gb2ZmZXJpbmcgYW4gQXBwbGllZFxuQmFjaGVsb3Igb2YgU2NpZW5jZSBkZWdyZWUgaW4gdGhlIEZhbGwgb2YgMjAyNS4gQ1dJIGFsc28gZGVsaXZlcnMgQmFzaWMgU2tpbGxzIEVkdWNhdGlvbiB0byBoZWxwIHByZXBhcmUgZm9yIGEgR0VELCBEdWFsIENyZWRpdCBwcm9ncmFtcyBmb3JcbmhpZ2ggc2Nob29sIHN0dWRlbnRzLCBhbmQgaGFzIG1vcmUgdGhhbiAyMCBmYXN0LXRyYWNrLCBub25jcmVkaXQgY2FyZWVyIHRyYWluaW5nIHByb2dyYW1zIGZvciB3b3JraW5nIHByb2Zlc3Npb25hbHMuIFRoZSB0YXhpbmcgZGlzdHJpY3QgZm9yXG5DV0kgd2FzIGNyZWF0ZWQgaW4gTWF5IDIwMDcgd2hlbiB2b3RlcnMgaW4gQWRhIENvdW50eSBhbmQgQ2FueW9uIENvdW50eSAifSwgeyJzdWJfcHJvZ3JhbSI6ICJOb3J0aCBJZGFobyBDb2xsZWdlIiwgInRleHQiOiAiTm9ydGggSWRhaG8gQ29sbGVnZSAoTklDKSBpcyBhIGNvbXByZWhlbnNpdmUgY29tbXVuaXR5IGNvbGxlZ2UgZXN0YWJsaXNoZWQgaW4gMTkzMyBvbiB0aGUgc2hvcmVzIG9mIExha2VcbkNvZXVyIGQnQWxlbmUuIE5JQyBjdXJyZW50bHkgc2VydmVzIDYsMDAwKyBzdHVkZW50cyBlbnJvbGxlZCBpbiBjcmVkaXQgY291cnNlcyBhbmQgbW9yZSB0aGFuIDQsNTAwIHN0dWRlbnRzIHRha2luZyBub24tY3JlZGl0IGNvdXJzZXMuIE5JQ1xub2ZmZXJzIG1vcmUgdGhhbiA4MCBhY2FkZW1pYyBkZWdyZWUgYW5kIGNhcmVlciBhbmQgdGVjaG5pY2FsIGVkdWNhdGlvbiBjZXJ0aWZpY2F0ZSBwcm9ncmFtcy4gVGhlc2UgY2FyZWVyIHBhdGh3YXlzIGNvdmVyIHZhcmlvdXMgaW50ZXJlc3RcbmFyZWFzLCBpbmNsdWRpbmcgYXJ0cywgY29tbXVuaWNhdGlvbnMgYW5kIGh1bWFuaXRpZXM7IGhlYWx0aGNhcmU7IHNjaWVuY2UsIHRlY2hub2xvZ3ksIGVuZ2luZWVyaW5nIGFuZCBtYXRoOyBidXNpbmVzcyBhZG1pbmlzdHJhdGlvbiBhbmRcbm1hbmFnZW1lbnQ7IG1hbnVmYWN0dXJpbmcgYW5kIHRyYWRlczsgYW5kIHNvY2lhbCBzY2llbmNlcyBhbmQgaHVtYW4gc2VydmljZXMuIFRoZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNDIFN5c3RlbXdpZGUiLCAidGV4dCI6ICJGdW5kaW5nIGZvciBTeXN0ZW13aWRlIFByb2dyYW1zIGlzIGluY2x1ZGVkIGluIHRoZSBDb21tdW5pdHkgQ29sbGVnZXMgYXBwcm9wcmlhdGlvbiBhbmQgaXMgZXhwZW5kZWQgZm9yXG5wcm9qZWN0cyBvciBzZXJ2aWNlcyB0aGF0IGJlbmVmaXQgYWxsIGluc3RpdHV0aW9ucyJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIk9mZmljZSBvZiB0aGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIiwgImZ0cCI6IDgwLjQyLCAiZ2YiOiAxNzI1MDgwMCwgImRlZCI6IDg2NDQ3MDAsICJmZWQiOiA0MDAwMDAwLCAidG90YWwiOiAyOTg5NTUwMCwgImZlZF9zaGFyZSI6IDAuMTMzOCwgImRlZF9zaGFyZSI6IDAuMjg5MiwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiIsICJIOTIxIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiT1NCRSBBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIEJvYXJkIG9mIEVkdWNhdGlvbiAoT1NCRSkgcHJvdmlkZXMgcHJvZmVzc2lvbmFsIHN0YWZmIHN1cHBvcnQgdG8gdGhlIGVpZ2h0LW1lbWJlciBTdGF0ZVxuQm9hcmQgb2YgRWR1Y2F0aW9uIGluIGZpc2NhbCwgYWNhZGVtaWMsIGxlZ2FsLCBwb2xpY3ksIGFuZCBwZXJzb25uZWwgYXJlYXMuIFRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBnZW5lcmFsXG5zdXBlcnZpc2lvbiwgZ292ZXJuYW5jZSwgYW5kIGNvbnRyb2wgb2YgSWRhaG8ncyBwdWJsaWMgZWR1Y2F0aW9uIHN5c3RlbSBmcm9tIGtpbmRlcmdhcnRlbiB0aHJvdWdoIHRoZSBkb2N0b3JhbCBsZXZlbC4gW0F1dGhvcml0eTogSWRhaG9cbkNvbnN0aXR1dGlvbiwgQXJ0aWNsZSBJWCwgU2VjdGlvbiAyLCBhbmQgU2VjdGlvbiAzMy0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiSVQgYW5kIERhdGEgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBJVCBhbmQgRGF0YSBNYW5hZ2VtZW50IFByb2dyYW0gd2FzIGNyZWF0ZWQgaW4gdGhlIDIwMjAgbGVnaXNsYXRpdmUgc2Vzc2lvbiBmb3IgRlkgMjAyMSB0byBjZW50cmFsaXplXG5zdGF0ZSBlZHVjYXRpb24gSVQgYW5kIGRhdGEgbWFuYWdlbWVudCB3aXRoaW4gdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uLiBUaGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvclxucHVibGlzaGluZyBhIHB1YmxpYyBpbnZlbnRvcnkgYW5kIGRpY3Rpb25hcnkgb3IgaW5kZXggb2YgZGF0YSBlbGVtZW50cyAocHVyc3VhbnQgdG8gU2VjdGlvbiAzMy0xMzMoMykoYSksIElkYWhvIENvZGUpOyBkZXZlbG9waW5nIGEgZGV0YWlsZWRcbmRhdGEgc2VjdXJpdHkgcGxhbiAocHVyc3VhbnQgdG8gU2VjdGlvbiAzMy0xMzMoMykoZCksIElkYWhvIENvZGUpOyBhbmQgZGV2ZWxvcGluZyBtb2RlbCBwb2xpY2llcyBmb3Igc2Nob29sIGRpc3RyaWN0cyBhbmQgcHVibGljIGNoYXJ0ZXJcbnNjaG9vbHMgdGhhdCBnb3Zlcm4gZGF0YSBjb2xsZWN0aW9uLCBhY2Nlc3MsIHNlY3VyaXR5LCBhbmQgdXNlIG9mIHN0dWRlbnQgZGF0YSAifSwgeyJzdWJfcHJvZ3JhbSI6ICJTY2hvb2wgU2FmZXR5IGFuZCBTZWN1cml0eSBQcm9ncmFtIiwgInRleHQiOiAiVGhlIFNjaG9vbCBTYWZldHkgYW5kIFNlY3VyaXR5IFByb2dyYW0gd2FzIGNyZWF0ZWQgYnkgdGhlIExlZ2lzbGF0dXJlIGluIDIwMTYgdG8gc3VwcG9ydCB0aGUgZWZmb3J0cyBvZiBJZGFob1xucHVibGljIHNjaG9vbHMgYXMgdGhleSB3b3JrIHRvIGNyZWF0ZSBzYWZlciBsZWFybmluZyBlbnZpcm9ubWVudHMuIFB1cnN1YW50IHRvIENoYXB0ZXIgNTksIElkYWhvIENvZGUsIHRoZSBvZmZpY2Ugd29ya3Mgd2l0aGluIGEgdHJpZW5uaWFsXG5zY2hlZHVsZSB0byBwZXJmb3JtIGNvbXByZWhlbnNpdmUgdGhyZWF0IGFuZCB2dWxuZXJhYmlsaXR5IGFzc2Vzc21lbnRzIG9uIGV2ZXJ5IHNjaG9vbCBjYW1wdXMuIEluIGFkZGl0aW9uIHRvIGFzc2Vzc21lbnQgc2VydmljZXMsIHRoZVxub2ZmaWNlIGFsc28gcHJvdmlkZXMgdHJhaW5pbmcsIHN1cHBvcnQsIGFuZCBzZXJ2ZXMgYXMgYSBjb21wcmVoZW5zaXZlIHJlcG9zaXRvcnkgb2YgZWZmZWN0aXZlIHByYWN0aWNlcy4gUHJpb3IgdG8gYmVpbmcgaG91c2VkIHdpdGhpbiB0aGUgT2ZmaWNlXG5vZiB0aGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uLCB0aGUgU2Nob29sIFNhZmV0eSBhbmQgU2VjdXJpdHkgUHJvZ3JhbSJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIkhlYWx0aCBFZHVjYXRpb24gUHJvZ3JhbXMiLCAiZnRwIjogNDguNDYsICJnZiI6IDI5ODAwOTAwLCAiZGVkIjogNDIyMDAwLCAiZmVkIjogMCwgInRvdGFsIjogMzAyMjI5MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAxNCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiIsICJIOTIwIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDMgb2YgSDkyMCBkaXJlY3RzIHRoYXQgZnVuZHMgZnJvbSB0aGUgUnVyYWwgSGVhbHRoIFRyYW5zZm9ybWF0aW9uIFByb2dyYW1cbihSSFRQKSBiZSB1c2VkIHRvIGZ1bmQgdGhlIGFkZGl0aW9uYWwgRlkgMjAyNyByZXNpZGVuY2llcyBhbmQgZmVsbG93c2hpcCwgaWYgUkhUUCBmdW5kcyBiZWNvbWUgYXZhaWxhYmxlIGZvciB0aGlzIHB1cnBvc2UifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiAzIG9mIEg5MjAgZGlyZWN0ZWQgdGhhdCBmdW5kcyBmcm9tIHRoZSBSdXJhbCBIZWFsdGggVHJhbnNmb3JtYXRpb24gUHJvZ3JhbVxuKFJIVFApIGJlIHVzZWQgdG8gZnVuZCB0aGUgYWRkaXRpb25hbCBGWSAyMDI3IHJlc2lkZW5jaWVzIGFuZCBmZWxsb3dzaGlwLCBpZiBSSFRQIGZ1bmRzIGJlY29tZSBhdmFpbGFibGUgZm9yIHRoaXMgcHVycG9zZSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkJvaXNlIEludGVybmFsIE1lZGljaW5lIiwgInRleHQiOiAiVGhlIEJvaXNlIEludGVybmFsIE1lZGljaW5lIChCSU0pIFJlc2lkZW5jeSBQcm9ncmFtIHByb3ZpZGVzIGludGVybmFsIG1lZGljaW5lIHJlc2lkZW5jeSB0cmFpbmluZyBhdCBydXJhbCBhbmRcbnVuZGVyc2VydmVkIHNpdGVzIGluIElkYWhvLiBUaGlzIHByb2dyYW0gaXMgYSBwYXJ0bmVyc2hpcCB3aXRoIHRoZSBmZWRlcmFsIERlcGFydG1lbnQgb2YgVmV0ZXJhbnMgQWZmYWlycywgU3QuIEFscGhvbnN1cyBSZWdpb25hbCBIZWFsdGhcbkNhcmUgU3lzdGVtLCBTdC4gTHVrZSdzIFJlZ2lvbmFsIEhlYWx0aCBDYXJlIFN5c3RlbSwgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIE1lZGljYWwgQ2VudGVyLCBhbmQgSGFyYm9ydmlldyBNZWRpY2FsIENlbnRlci4gVGhpc1xucHJvZ3JhbSBzdXBwb3J0cyAzNSByZXNpZGVudHMgc3BlY2lhbGl6aW5nIGluIGludGVybmFsIG1lZGljaW5lIn0sIHsic3ViX3Byb2dyYW0iOiAiRWFzdGVybiBJZGFobyBNZWQgUmVzaWRlbmNpZXMiLCAidGV4dCI6ICJJbiBGWSAyMDE5LCB0aGUgTGVnaXNsYXR1cmUgZnVuZGVkIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBzdGF0ZS1mdW5kZWQgbWVkaWNhbCByZXNpZGVuY3kgcHJvZ3JhbSBhdCB0aGUgRWFzdGVyblxuSWRhaG8gUmVnaW9uYWwgTWVkaWNhbCBDZW50ZXIgKEVJTVIpIGluIElkYWhvIEZhbGxzLiBFSU1SIHJlY2VpdmVkIGl0cyBpbnN0aXR1dGlvbmFsIGFjY3JlZGl0YXRpb24gZnJvbSB0aGUgQWNjcmVkaXRhdGlvbiBDb3VuY2lsIGZvclxuR3JhZHVhdGUgTWVkaWNhbCBFZHVjYXRpb24gKEFDR01FKSBpbiBNYXkgb2YgMjAxNy4gVGhlIHJlc2lkZW5jeSBwcm9ncmFtcyBhcmUgdGhyZWUgeWVhcnMgaW4gbGVuZ3RoLCBhbGxvd2luZyBlYWNoIGNvaG9ydCB0byBpbmNsdWRlXG5hcHByb3hpbWF0ZWx5IDE1IHJlc2lkZW50cyJ9LCB7InN1Yl9wcm9ncmFtIjogIkZhbWlseSBNZWRpY2luZSBSZXNpZGVuY2llcyIsICJ0ZXh0IjogIklkYWhvJ3MgdGhyZWUgRmFtaWx5IE1lZGljaW5lIFJlc2lkZW5jeSBwcm9ncmFtcyAodGhlIEZhbWlseSBNZWRpY2luZSBSZXNpZGVuY3kgb2YgSWRhaG8gaW4gQm9pc2UsIHRoZSBJZGFob1xuU3RhdGUgVW5pdmVyc2l0eSBGYW1pbHkgTWVkaWNpbmUgUmVzaWRlbmN5IGluIFBvY2F0ZWxsbywgYW5kIHRoZSBLb290ZW5haSBIZWFsdGggRmFtaWx5IE1lZGljaW5lIFJlc2lkZW5jeSBpbiBDb2V1ciBkJ0FsZW5lKSBkZWxpdmVyIHRoZVxuZmluYWwgdGhyZWUgeWVhcnMgb2YgZm9ybWFsIGZhbWlseSBwaHlzaWNpYW4gdHJhaW5pbmcgdG8gbmV3bHkgZ3JhZHVhdGVkIG1lZGljYWwgZG9jdG9ycy4gVGhlIGdvYWwgaXMgdG8gcHJvZHVjZSBmYW1pbHkgZG9jdG9ycyB0byBwcmFjdGljZSBpblxuSWRhaG8ncyB1bmRlcnNlcnZlZCBydXJhbCBhcmVhcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIERlbnRhbCBFZHVjYXRpb24gUHJvZ3JhbSIsICJ0ZXh0IjogIlRoZSBJZGFobyBEZW50YWwgRWR1Y2F0aW9uIFByb2dyYW0gKElERVApIHByb3ZpZGVzIGFjY2VzcyB0byBwb3N0Z3JhZHVhdGUgZGVudGFsIGVkdWNhdGlvbiBmb3IgSWRhaG9cbnN0dWRlbnRzIGFubnVhbGx5IHRocm91Z2ggYSBjb29wZXJhdGl2ZSBwcm9ncmFtIGF0IElkYWhvIFN0YXRlIFVuaXZlcnNpdHkgYW5kIENyZWlnaHRvbiBVbml2ZXJzaXR5IGluIE9tYWhhLCBOZWJyYXNrYSJ9LCB7InN1Yl9wcm9ncmFtIjogIlBzeWNoaWF0cnkgRWR1Y2F0aW9uIiwgInRleHQiOiAiVGhlIFBzeWNoaWF0cnkgRWR1Y2F0aW9uIFByb2dyYW0gcHJvdmlkZXMgcmVzaWRlbmN5IG9wcG9ydHVuaXRpZXMgZm9yIG1lZGljYWwgcmVzaWRlbnRzIGluIHRoZSBmaWVsZCBvZlxucHN5Y2hpYXRyeS4gVGhlIHByb2dyYW0gaXMgYSBjb2xsYWJvcmF0aW9uIHdpdGggdGhlIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3RvbiBTY2hvb2wgb2YgTWVkaWNpbmUsIFZldGVyYW5zIEFkbWluaXN0cmF0aW9uLCBTdC4gQWxwaG9uc3VzXG5SZWdpb25hbCBIZWFsdGggQ2FyZSBTeXN0ZW0sIGFuZCBTdC4gTHVrZSdzIFJlZ2lvbmFsIEhlYWx0aCBDYXJlIFN5c3RlbS4gUmVzaWRlbnRzIHNwZW5kIHRoZSBmaXJzdCB0d28geWVhcnMgaW4gU2VhdHRsZSAoVW5pdmVyc2l0eSBvZlxuV2FzaGluZ3RvbikgYW5kIHRoZSBsYXN0IHR3byB5ZWFycyBpbiBCb2lzZS4gQm9pc2UtYmFzZWQgdHJhaW5pbmcgaW5jbHVkZXMgb3V0cGF0aWVudCBwc3ljaGlhdHJ5LCBjb25zdWx0YXRpb24gbGlhaXNvbiBwc3ljaGlhdHJ5LCBhbmQgcHJpbWFyeVxuY2FyZSBjb25zdWx0YXRpb24gcm90YXRpb25zLiBDbGluaWNhbCByb3RhdGlvbnMgbWF5IGJlIGNvbXBsZXRlZCBhdCB0aGUgQm9pc2UgVkEgaCJ9LCB7InN1Yl9wcm9ncmFtIjogIlVuaXZlcnNpdHkgb2YgVXRhaCBNZWRpY2FsIEVkdWNhdGlvbiIsICJ0ZXh0IjogIlRoZSBVbml2ZXJzaXR5IG9mIFV0YWggTWVkaWNhbCBTY2hvb2wgUHJvZ3JhbSBwcm92aWRlcyBhY2Nlc3MgdG8gcG9zdGdyYWR1YXRlIG1lZGljYWwgZWR1Y2F0aW9uIGZvciBJZGFob1xuc3R1ZGVudHMgYW5udWFsbHkgdGhyb3VnaCBhIGNvb3BlcmF0aXZlIHByb2dyYW0gYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaC4gRmlzY2FsIHllYXIgMjAyMCBzYXcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGxhdGVzdCBidWlsZC1vdXQgb2ZcbnNlYXRzIGZvciB0aGUgbWVkaWNhbCBwcm9ncmFtLiBCZWdpbm5pbmcgaW4gZmlzY2FsIHllYXIgMjAyMCwgdGhlIGFwcHJvcHJpYXRpb24gaW5jbHVkZWQgc3VwcG9ydCBmb3IgcHN5Y2hpYXRyaWMgcmVzaWRlbmN5IHBvc2l0aW9ucyBpblxuY29sbGFib3JhdGlvbiB3aXRoIElkYWhvIFN0YXRlIFVuaXZlcnNpdHkifSwgeyJzdWJfcHJvZ3JhbSI6ICJXSU1VIFZldGVyaW5hcnkgRWR1Y2F0aW9uIiwgInRleHQiOiAiVGhlIFdJTVUgKFdhc2hpbmd0b24tSWRhaG8tTW9udGFuYS1VdGFoKSBWZXRlcmluYXJ5IEVkdWNhdGlvbiBQcm9ncmFtIHByb3ZpZGVzIElkYWhvIHN0dWRlbnRzIHdpdGhcbmFjY2VzcyB0byB2ZXRlcmluYXJ5IG1lZGljYWwgZWR1Y2F0aW9uIHRocm91Z2ggYSBjb29wZXJhdGl2ZSBhZ3JlZW1lbnQgYmV0d2VlbiB0aGUgVW5pdmVyc2l0eSBvZiBJZGFobywgTW9udGFuYSBTdGF0ZSBVbml2ZXJzaXR5LCBVdGFoXG5TdGF0ZSBVbml2ZXJzaXR5LCBhbmQgV2FzaGluZ3RvbiBTdGF0ZSBVbml2ZXJzaXR5IFNjaG9vbCBvZiBWZXRlcmluYXJ5IE1lZGljaW5lIn0sIHsic3ViX3Byb2dyYW0iOiAiV0lNVSBWZXRlcmluYXJ5IEVkdWNhdGlvbiIsICJ0ZXh0IjogIlRoZSBXV0FNSSAoV2FzaGluZ3Rvbi1XeW9taW5nLUFsYXNrYS1Nb250YW5hLUlkYWhvKSBNZWRpY2FsIEVkdWNhdGlvbiBQcm9ncmFtIHByb3ZpZGVzIGFjY2VzcyB0b1xucG9zdGdyYWR1YXRlIG1lZGljYWwgZWR1Y2F0aW9uIGZvciBJZGFobyBzdHVkZW50cyBhbm51YWxseSB0aHJvdWdoIGEgY29vcGVyYXRpdmUgcHJvZ3JhbSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBJZGFobyB3aXRoIHRoZSBVbml2ZXJzaXR5IG9mXG5XYXNoaW5ndG9uIn1dfSwgeyJhcmVhIjogIkVkdWNhdGlvbiIsICJhZ2VuY3kiOiAiQ2FyZWVyIFRlY2huaWNhbCBFZHVjYXRpb24iLCAiZnRwIjogNTY3LjE0LCAiZ2YiOiA4ODg5ODEwMCwgImRlZCI6IDc0MzAxMDAsICJmZWQiOiAxMjI1NzcwMCwgInRvdGFsIjogMTA4NTg1OTAwLCAiZmVkX3NoYXJlIjogMC4xMTI5LCAiZGVkX3NoYXJlIjogMC4wNjg0LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2IiwgIkg5MDciXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIEg4NzYgdGhhdCByZW1vdmVkIGFsbCByZXN0cmljdGlvbnMgbGltaXRpbmcgdGhlXG50cmFuc2ZlciBvZiBtb25leXMgYmV0d2VlbiBwZXJzb25uZWwgY29zdHMsIG9wZXJhdGluZyBleHBlbmRpdHVyZXMsIGNhcGl0YWwgb3V0bGF5LCBhbmQgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNURSBBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBDVEUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBpbmNsdWRlcyBjZW50cmFsIHN0YWZmIHRvIHByb3ZpZGUgbGVhZGVyc2hpcCwgYWRtaW5pc3RyYXRpdmUgYW5kIHRlY2huaWNhbFxuYXNzaXN0YW5jZSwgb3ZlcnNpZ2h0LCBhbmQgYWNjb3VudGFiaWxpdHkgdG8gdGhlIHN0YXRld2lkZSBlZHVjYXRpb25hbCBzeXN0ZW0gdGhhdCBwcm92aWRlcyBjYXJlZXIgdGVjaG5pY2FsIHByb2dyYW1zIGF0IHRoZSBzdGF0ZSdzIHNlY29uZGFyeVxuc2Nob29scyAoZ3JhZGVzIDctMTIpLCB0ZWNobmljYWwgY29sbGVnZXMsIGFkdWx0IGVkdWNhdGlvbiBwcm9ncmFtcywgYW5kIHdvcmtmb3JjZSB0cmFpbmluZyBjZW50ZXJzLiBUaGlzIHN5c3RlbSBwcmVwYXJlcyBJZGFobydzIHlvdXRoIGFuZFxuYWR1bHRzIGZvciBoaWdoLXNraWxsLCBpbi1kZW1hbmQgY2FyZWVycywgaW5jbHVkaW5nIG9uZS15ZWFyIGFuZCB0d28teWVhciBjcmVkZW50aWFscyBhbmQgaW5kdXN0cnkgY2VydGlmaWNhdGlvbnMsIGFzIHdlbGwgYXMgZm9yIGZ1cnRoZXJcbmVkdWNhdGlvbmFsIGF0dGFpbm1lbnQgYW5kIHJldHJhaW5pbmcuIFRoaXMgYnVkZ2V0ZWQgcHJvZ3JhbSB3YXMgcHJldmlvdXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTZWNvbmRhcnkgYW5kIEdlbmVyYWwgUHJvZ3JhbXMiLCAidGV4dCI6ICJTZWNvbmRhcnkgYW5kIEdlbmVyYWwgUHJvZ3JhbXMgcHJvdmlkZSBzZWNvbmRhcnkgc3R1ZGVudHMgd2l0aCBjYXJlZXIgYW5kIHRlY2huaWNhbCBwcm9ncmFtcyBhbmQgcHJvdmlkZVxubGVhcm5lcnMgd2l0aCB0aGUgc2tpbGxzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBhbmQvb3IgYWR2YW5jZSBpbiB0aGVpciBjaG9zZW4gb2NjdXBhdGlvbiBvciB0byB0cmFuc2l0aW9uIGludG8gY2FyZWVyIHRlY2huaWNhbCBwb3N0c2Vjb25kYXJ5XG5wcm9ncmFtcyBhdCB0aGUgdGVjaG5pY2FsIGNvbGxlZ2VzLiBUaGVzZSBwcm9ncmFtcyBpbmNsdWRlIHJlc291cmNlcyB0byBhZHZhbmNlIHN0dWRlbnQgbGVhZGVyc2hpcCBvcHBvcnR1bml0aWVzIHRocm91Z2ggdGhlIGFwcGxpY2FibGVcbmNhcmVlciB0ZWNobmljYWwgc3R1ZGVudCBvcmdhbml6YXRpb24uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDMzLTIyMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiUG9zdHNlY29uZGFyeSBQcm9ncmFtcyIsICJ0ZXh0IjogIlBvc3RzZWNvbmRhcnkgUHJvZ3JhbXMgcHJvdmlkZXMgY29sbGVnZSBzdHVkZW50cyB3aXRoIG9wcG9ydHVuaXRpZXMgdG8gb2J0YWluIHR3by15ZWFyIGRlZ3JlZXMgYW5kIHNob3J0ZXJcbnRlcm0gY2VydGlmaWNhdGlvbnMgbmVlZGVkIGZvciBlbXBsb3ltZW50IGluIHNraWxsZWQgYW5kIHRlY2huaWNhbCBvY2N1cGF0aW9ucyB0aGF0IHJlcXVpcmUgbGVzcyB0aGFuIGEgYmFjY2FsYXVyZWF0ZSBkZWdyZWUuIEl0IGFsc28gcHJvdmlkZXNcbnBlcnNvbnMgYWxyZWFkeSBpbiB0aGUgd29ya2ZvcmNlIHdpdGggdGhlIHNraWxscyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gb3IgYWR2YW5jZSBpbiB0aGVpciBjaG9zZW4gb2NjdXBhdGlvbi4gVGhlIGFwcHJvcHJpYXRpb24gZm9yIHRoaXNcbnByb2dyYW0gaXMgaW50ZW5kZWQgdG8gZnVuZCAxMDAlIG9mIHRoZSBkaXJlY3QgY29zdHMgYXQgSWRhaG8ncyBzaXggdGVjaG5pY2FsIGNvbGxlZ2VzLiBUaG9zZSBjb2xsZWdlcyBhcmUgbG9jYXRlZCB3aXRoaW4gSWRhaG8gU3RhdGVcblVuaXZlcnNpdHksIExld2lzLUNsYXJrIFN0YXRlIENvbGxlZ2UsIENvbGxlZ2Ugb2YgU291dGhlcm4gSWRhaG8sIENvbGxlZ2Ugb2YgV2UifSwgeyJzdWJfcHJvZ3JhbSI6ICJFZHVjYXRvciBTZXJ2aWNlcyBQcm9ncmFtIiwgInRleHQiOiAiVGhlIEVkdWNhdG9yIFNlcnZpY2VzIFByb2dyYW0gaW5jbHVkZXMgYXBwcm9wcmlhdGlvbnMgdGFyZ2V0ZWQgdG93YXJkIGluc3RydWN0b3IgcHJlcGFyYXRpb24sIHJldGVudGlvbiwgYW5kXG5yZWNydWl0bWVudC4gVGhlIG1ham9yaXR5IG9mIENURSBjZXJ0aWZpZWQgaW5zdHJ1Y3Rpb25hbCBzdGFmZiBjb21lIGRpcmVjdGx5IGZyb20gaW5kdXN0cnkuIFRoaXMgcHJvZ3JhbSBwcm92aWRlcyB0aGUgcmVzb3VyY2VzIGZvciB0cmFpbmluZyBhbmRcbm1lbnRvcmluZyB0byBoZWxwIHByZXBhcmUgdGhlc2Ugc3ViamVjdCBtYXR0ZXIgZXhwZXJ0cyBmb3IgdGhlIGNsYXNzcm9vbSBhbmQgdGhlbiBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IG1lbnRvcmluZyBhbmQgc3VwcG9ydCB0byByZXRhaW5cbnRoZW0uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDMzLTIyMDEsIElkYWhvIENvZGUsIGV0IHNlcS4gYW5kIFNlY3Rpb24gMzktNTAwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJSZWxhdGVkIFByb2dyYW1zIiwgInRleHQiOiAiUmVsYXRlZCBQcm9ncmFtcyBhZG1pbmlzdGVycyBBZHVsdCBCYXNpYyBFZHVjYXRpb24gKEFCRSkgYW5kIEdlbmVyYWwgRWR1Y2F0aW9uYWwgRGV2ZWxvcG1lbnQgKEdFRCkuXG5bQXV0aG9yaXR5OiBTZWN0aW9uIDMzLTI0MDEsIElkYWhvIENvZGUsIGV0IHNlcS4gYW5kIEV4ZWN1dGl2ZSBPcmRlciBOby4gMjAwNy0wNF0ifV19LCB7ImFyZWEiOiAiRWR1Y2F0aW9uIiwgImFnZW5jeSI6ICJJZGFobyBQdWJsaWMgVGVsZXZpc2lvbiIsICJmdHAiOiAxNS4wLCAiZ2YiOiAyOTcyMDAwLCAiZGVkIjogMTAwNzAwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDM5NzkwMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjI1MzEsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NzYiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJJZGFobyBQdWJsaWMgVGVsZXZpc2lvbiAoSVBUVikgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODc2IHRoYXQgcHJvdmlkZWQgYSBjb250aW51b3VzXG5hcHByb3ByaWF0aW9uIGZvciB0aGUgYWdlbmN5J3MgZnVuZGluZyBhbmQgRlRQIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVkaWNhdGVkIE1pc2NlbGxhbmVvdXMgUmV2ZW51ZSBGdW5kLiBUaGlzIGV4ZW1wdGlvbiByZXF1aXJlc1xubGVnaXNsYXRpdmUgYXBwcm92YWwgZWFjaCB5ZWFyIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiUmVsYXRlZCBQcm9ncmFtcyIsICJ0ZXh0IjogIlVuZGVyIHRoZSBnZW5lcmFsIHN1cGVydmlzaW9uIG9mIHRoZSBTdGF0ZSBCb2FyZCBvZiBFZHVjYXRpb24sIElkYWhvIFB1YmxpYyBUZWxldmlzaW9uIHByb3ZpZGVzIGVkdWNhdGlvbmFsIGFuZFxuaW5zdHJ1Y3Rpb25hbCB0ZWxldmlzaW9uIHByb2dyYW1zIGR1cmluZyBhbmQgYWZ0ZXIgc2Nob29sIGhvdXJzLCB0ZWxlY29tbXVuaWNhdGlvbnMgc2VydmljZXMsIGFuZCBcInByaW1lIHRpbWVcIiBwcm9ncmFtcy4gSWRhaG8gUHVibGljXG5UZWxldmlzaW9uJ3Mgc3RhdGV3aWRlIHN5c3RlbSByZWFjaGVzIGFwcHJveGltYXRlbHkgOTglIG9mIHRoZSBzdGF0ZSdzIHBvcHVsYXRpb24gdmlhIDQ3IHRyYW5zbGF0b3JzIGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgc3RhdGUgYW5kIGZpdmVcbnRyYW5zbWl0dGVycyBsb2NhdGVkIG5lYXIgQ29ldXIgZCdBbGVuZSwgTW9zY293LCBCb2lzZSwgVHdpbiBGYWxscywgYW5kIFBvY2F0ZWxsbyJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIlNwZWNpYWwgUHJvZ3JhbXMiLCAiZnRwIjogNDkuMjcsICJnZiI6IDMwMTQ5OTAwLCAiZGVkIjogMCwgImZlZCI6IDQ3NTM5MDAsICJ0b3RhbCI6IDM0OTAzODAwLCAiZmVkX3NoYXJlIjogMC4xMzYyLCAiZGVkX3NoYXJlIjogMC4wLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODc2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDE1IG9mIEg4NzYgcmVxdWlyZWQgdGhhdCB1bmV4cGVuZGVkIGFuZCB1bmN1bWJlcmVkIGZ1bmRzIGFwcHJvcHJpYXRlZCB0b1xudGhlIFNjaG9sYXJzaGlwIGFuZCBHcmFudHMgUHJvZ3JhbSBvbiBKdW5lIDMwLCAyMDI2IHNoYWxsIGJlIHRyYW5zZmVycmVkIHRvIGJ5IHRoZSBPZmZpY2Ugb2YgU3RhdGUgQ29udHJvbGxlciB0byB0aGUgT3Bwb3J0dW5pdHkgU2Nob2xhcnNoaXBcbkZ1bmQgY3JlYXRlZCBpbiBTZWN0aW9uIDMzLTQzMDMsIElkYWhvIENvZGUifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJGb3Jlc3QgVXRpbGl6YXRpb24gUmVzZWFyY2giLCAidGV4dCI6ICJUaGUgRm9yZXN0IFV0aWxpemF0aW9uIFJlc2VhcmNoIChGVVIpIFByb2dyYW0gaXMgYSBwYXJ0IG9mIHRoZSBVbml2ZXJzaXR5IG9mIElkYWhvJ3MgQ29sbGVnZSBvZiBOYXR1cmFsXG5SZXNvdXJjZXMuIEZVUiB3b3JrcyB0byBpbmNyZWFzZSB0aGUgcHJvZHVjdGl2aXR5IG9mIElkYWhvJ3MgZm9yZXN0cyBieTogKDEpIGltcHJvdmluZyBmb3Jlc3QgbWFuYWdlbWVudCwgaGFydmVzdCwgYW5kIHJlZ2VuZXJhdGlvblxucHJhY3RpY2VzOyAoMikgaW1wcm92aW5nIHdvb2QgdXNlIGFuZCB3b29kIHJlc2lkdWUgdXRpbGl6YXRpb24gdGVjaG5vbG9naWVzOyBhbmQgKDMpIGltcHJvdmluZyBmb3Jlc3QgbnVyc2VyeSBtYW5hZ2VtZW50IHByYWN0aWNlcy4gRlVSXG5hbHNvIGluY2x1ZGVzIHRoZSBQb2xpY3kgQW5hbHlzaXMgR3JvdXAsIHdoaWNoIHByb3ZpZGVzIHRpbWVseSwgc2NpZW50aWZpYywgYW5kIG9iamVjdGl2ZSBkYXRhIGFuZCBhbmFseXNpcyBvbiByZXNvdXJjZSBhbmQgbGFuZCB1c2UgaXNzdWVzIG9mXG5pbnRlcmVzdCB0byB0aGUgcGVvcGxlIG9mIElkYWhvLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAzOC03MDEsIElkYWhvIENvZGUsIGV0In0sIHsic3ViX3Byb2dyYW0iOiAiR2VvbG9naWNhbCBTdXJ2ZXkiLCAidGV4dCI6ICJUaGUgSWRhaG8gR2VvbG9naWNhbCBTdXJ2ZXkgKElHUykgaXMgYWRtaW5pc3RlcmVkIGJ5IHRoZSBVbml2ZXJzaXR5IG9mIElkYWhvIHdpdGhpbiB0aGUgT2ZmaWNlIG9mIFJlc2VhcmNoIGFuZFxuRWNvbm9taWMgRGV2ZWxvcG1lbnQuIEl0IGlzIHRoZSBsZWFkIHN0YXRlIGFnZW5jeSBmb3IgdGhlIGNvbGxlY3Rpb24sIGFuYWx5c2lzLCBhbmQgZGlzc2VtaW5hdGlvbiBvZiBhbGwgZ2VvbG9naWMgYW5kIG1pbmVyYWwgZGF0YSBmb3IgdGhlXG5zdGF0ZS4gVGhlIElHUyBhY2NvbXBsaXNoZXMgdGhpcyBtaXNzaW9uIHRocm91Z2ggYXBwbGllZCByZXNlYXJjaCBhbmQgcHVibGljIHNlcnZpY2UuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDQ3LTIwMSwgSWRhaG8gQ29kZSwgZXRcbnNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiTXVzZXVtIG9mIE5hdHVyYWwgSGlzdG9yeSIsICJ0ZXh0IjogIlRoZSBNdXNldW0gb2YgTmF0dXJhbCBIaXN0b3J5LCBsb2NhdGVkIGF0IElkYWhvIFN0YXRlIFVuaXZlcnNpdHksIGNvbGxlY3RzIGFuZCBwcmVzZXJ2ZXMgYXJ0aWZhY3RzIGFuZFxuZGlzc2VtaW5hdGVzIGtub3dsZWRnZSBvZiB0aGUgbmF0dXJhbCBoaXN0b3J5IG9mIElkYWhvIGFuZCB0aGUgSW50ZXJtb3VudGFpbiBXZXN0LiBUaGUgbXVzZXVtIG1haW50YWlucyBjb2xsZWN0aW9ucyBpbiB0aGUgYXJlYXMgb2ZcbmFudGhyb3BvbG9neSwgYm90YW55LCBnZW9sb2d5LCBwYWxlb250b2xvZ3ksIGFuZCB6b29sb2d5LiBUaGUgbXVzZXVtIGFsc28gc3VwcG9ydHMgcmVzZWFyY2gsIGV4aGliaXRpb25zLCBwdWJsaWNhdGlvbnMsIGFuZCBpbnRlcnByZXRpdmVcbnByb2dyYW1zIG9uIHRob3NlIHRvcGljcyB0byBiZW5lZml0IElkYWhvIGNpdGl6ZW5zLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAzMy0zMDEyLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlNjaG9sYXJzaGlwcyBhbmQgR3JhbnRzIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQm9hcmQgb2YgRWR1Y2F0aW9uIGFkbWluaXN0ZXJzIGZpdmUgcHJvZ3JhbXM6IFJ1cmFsIGFuZCBVbmRlcnNlcnZlZCBFZHVjYXRvclxuSW5jZW50aXZlIFByb2dyYW0gKFNlY3Rpb24gMzMtNjUwMSwgSWRhaG8gQ29kZSk7IE9wcG9ydHVuaXR5IFNjaG9sYXJzaGlwIChTZWN0aW9uIDMzLTQzMDMsIElkYWhvIENvZGUpOyBBcm1lZCBGb3JjZXMgYW5kIFB1YmxpYyBTYWZldHlcbk9mZmljZXIgU2Nob2xhcnNoaXAgKFNlY3Rpb24gMzMtNDMwMiwgSWRhaG8gQ29kZSk7IEdhaW5pbmcgRWFybHkgQXdhcmVuZXNzIGFuZCBSZWFkaW5lc3MgVW5kZXJncmFkdWF0ZSBQcm9ncmFtIChHRUFSVVApIGZlZGVyYWxcbnNjaG9sYXJzaGlwczsgSWRhaG8gV29yayBTdHVkeSBQcm9ncmFtIChTZWN0aW9uIDMzLTQ0MDEsIElkYWhvIENvZGUpIn0sIHsic3ViX3Byb2dyYW0iOiAiU21hbGwgQnVzaW5lc3MgRGV2ZWxvcG1lbnQgQ2VudGVycyIsICJ0ZXh0IjogIlRoZSBJZGFobyBTbWFsbCBCdXNpbmVzcyBEZXZlbG9wbWVudCBDZW50ZXIgKElTQkRDKSBwcm92aWRlcyBkaXJlY3Qgc2VydmljZXMgdG8gaW5kaXZpZHVhbCBzbWFsbCBidXNpbmVzc2VzXG5pbiBJZGFobyB0aHJvdWdoIGEgaGlnaGVyIGVkdWNhdGlvbi1iYXNlZCBuZXR3b3JrLiBJU0JEQyBpcyBoZWFkcXVhcnRlcmVkIGF0IEJvaXNlIFN0YXRlIFVuaXZlcnNpdHkgd2l0aCBmaWVsZCBvZmZpY2VzIGluIENvZXVyIGQnQWxlbmUsXG5MZXdpc3RvbiwgVHdpbiBGYWxscywgUG9jYXRlbGxvLCBhbmQgSWRhaG8gRmFsbHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIE5vcnRoIElkYWhvIENvbGxlZ2UsIExld2lzLUNsYXJrIFN0YXRlIENvbGxlZ2UsIHRoZSBDb2xsZWdlIG9mXG5Tb3V0aGVybiBJZGFobywgYW5kIElkYWhvIFN0YXRlIFVuaXZlcnNpdHksIHJlc3BlY3RpdmVseS4gRnJvbSBpdHMgc2l4IG9mZmljZXMsIElTQkRDIGNvbnN1bHRhbnRzIHByb3ZpZGUgYnVzaW5lc3MgY291bnNlbGluZywgbm9uLWFjYWRlbWljXG5jcmVkaXQgdHJhaW5pbmcsIHJlc2VhcmNoLCBhbmQgdGVjaG5pY2FsIHN1cHBvcnQgcHJpbWFyaWx5IHRvIHZlcnkgc21hbGwgYnVzaW4ifSwgeyJzdWJfcHJvZ3JhbSI6ICJUZWNoSGVscCIsICJ0ZXh0IjogIlRlY2hIZWxwIHByb3ZpZGVzIG1hbnVmYWN0dXJpbmcgY29uc3VsdGluZyBzZXJ2aWNlcyB0byBzbWFsbCBhbmQgbWVkaXVtIHNpemVkIGNvbXBhbmllcy4gVGVjaEhlbHBcbnNwZWNpYWxpc3RzIHByb3ZpZGUgdGVjaG5pY2FsIGFuZCBwcm9mZXNzaW9uYWwgYXNzaXN0YW5jZSwgdHJhaW5pbmcsIGFuZCBpbmZvcm1hdGlvbiB0byBJZGFobyBtYW51ZmFjdHVyZXJzLCBwcm9jZXNzb3JzLCBhbmQgaW52ZW50b3JzIHRvXG5zdHJlbmd0aGVuIHRoZWlyIGdsb2JhbCBjb21wZXRpdGl2ZW5lc3MgdGhyb3VnaCBwcm9kdWN0IGFuZCBwcm9jZXNzIGltcHJvdmVtZW50cy4gVGhpcyBpcyBhIHBhcnRuZXJzaGlwIG9mIElkYWhvJ3MgdGhyZWUgc3RhdGUgdW5pdmVyc2l0aWVzXG5hbmQgYW4gYWZmaWxpYXRlIG9mIHRoZSBOYXRpb25hbCBJbnN0aXR1dGUgb2YgU3RhbmRhcmRzIGFuZCBUZWNobm9sb2d5IE1hbnVmYWN0dXJpbmcgRXh0ZW5zaW9uIFBhcnRuZXJzaGlwLiBJdCBpcyBhbHNvIElkYWhvJ3MgRWNvbm9taWNcbkRldmVsb3BtZW50IEFkbWluaXN0cmF0aW9uIFVuaXZlcnNpdHkgQ2VudGVyLCB0YXJnZXRpbmcgZWNvbm9taWNhbGx5IGRpc3RyZXNzZWQgYXJlYXMgb2YifV19LCB7ImFyZWEiOiAiRWR1Y2F0aW9uIiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIEVkdWNhdGlvbiIsICJmdHAiOiAxMjcuMCwgImdmIjogMTE2MTgzMDAsICJkZWQiOiAxNDM5MjMwMCwgImZlZCI6IDIwNDA2MDAwLCAidG90YWwiOiA0NjQxNjYwMCwgImZlZF9zaGFyZSI6IDAuNDM5NiwgImRlZF9zaGFyZSI6IDAuMzEwMSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiIsICJIOTIxIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBpbmNsdWRlcyB0aGUgZnVuY3Rpb25zIG9mIEFjY291bnRpbmcsIENlcnRpZmljYXRpb24gYW5kIFByb2Zlc3Npb25hbCBTdGFuZGFyZHMsXG5Db21tdW5pY2F0aW9ucywgSHVtYW4gUmVzb3VyY2VzLCBhbmQgUHVibGljIFNjaG9vbCBGaW5hbmNlIn0sIHsic3ViX3Byb2dyYW0iOiAiU3R1ZGVudCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBTdHVkZW50IFNlcnZpY2VzIFByb2dyYW0gaW5jbHVkZXMgdGhlIGZ1bmN0aW9ucyBvZiBBc3Nlc3NtZW50IGFuZCBBY2NvdW50YWJpbGl0eSwgQ2hpbGQgTnV0cml0aW9uXG5Qcm9ncmFtcywgRmVkZXJhbCBQcm9ncmFtcywgSW5kaWFuIEVkdWNhdGlvbiwgSW5zdHJ1Y3Rpb25hbCBTdXBwb3J0IGZvciBTdHVkZW50LUNlbnRlcmVkIExlYXJuaW5nLCBTYWZldHkgYW5kIFN0dWRlbnQgRW5nYWdlbWVudCxcblNjaG9vbCBDaG9pY2UsIFNwZWNpYWwgRWR1Y2F0aW9uLCBhbmQgU3R1ZGVudCBUcmFuc3BvcnRhdGlvbiJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIlZvY2F0aW9uYWwgUmVoYWJpbGl0YXRpb24iLCAiZnRwIjogMTQ0LjM3LCAiZ2YiOiA1MjQzMTAwLCAiZGVkIjogMTQxOTMwMCwgImZlZCI6IDIwMTUyNjAwLCAidG90YWwiOiAyNjgxNTAwMCwgImZlZF9zaGFyZSI6IDAuNzUxNSwgImRlZF9zaGFyZSI6IDAuMDUyOSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg3NiIsICJIODc3Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiVm9jYXRpb25hbCBSZWhhYmlsaXRhdGlvbiIsICJ0ZXh0IjogIlZvY2F0aW9uYWwgUmVoYWJpbGl0YXRpb24gYXNzaXN0cyBpbmRpdmlkdWFscyB3aXRoIGRpc2FiaWxpdGllcyBpbiBvYnRhaW5pbmcgYW5kIG1haW50YWluaW5nIGVtcGxveW1lbnRcbmNvbW1lbnN1cmF0ZSB3aXRoIHRoZWlyIGFiaWxpdGllcywgc2tpbGxzLCBhbmQgZGVzaXJlcy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMzMtMjMwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb3VuY2lsIGZvciB0aGUgRGVhZiBhbmQgSGFyZCBvZiBIZWFyaW5nIiwgInRleHQiOiAiVGhlIENvdW5jaWwgZm9yIHRoZSBEZWFmIGFuZCBIYXJkIG9mIEhlYXJpbmcgY29vcmRpbmF0ZXMgc3RhdGUtbGV2ZWwgcHJvZ3JhbXMgYW5kIGVuc3VyZXMgYWNjb21tb2RhdGlvbnNcbmFuZCBhY2Nlc3MgdG8gc2VydmljZXMgZm9yIGluZGl2aWR1YWxzIHdobyBhcmUgZGVhZiBvciBoZWFyaW5nIGltcGFpcmVkLiBUaGUgY291bmNpbCB3YXMgb3JnYW5pemVkIHdpdGhpbiB0aGUgRGVwYXJ0bWVudCBvZiBIZWFsdGggYW5kXG5XZWxmYXJlIHVudGlsIEZZIDIwMTEsIGF0IHdoaWNoIHRpbWUgaXQgbW92ZWQgdG8gdGhlIERpdmlzaW9uIG9mIFZvY2F0aW9uYWwgUmVoYWJpbGl0YXRpb24uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTczMDEsIElkYWhvIENvZGUsXG5ldCBzZXEuXSJ9XX0sIHsiYXJlYSI6ICJFZHVjYXRpb24iLCAiYWdlbmN5IjogIkNoYXJ0ZXIgU2Nob29sIENvbW1pc3Npb24iLCAiZnRwIjogNS4wLCAiZ2YiOiAxOTI2MDAsICJkZWQiOiA1NTIxMDAsICJmZWQiOiAwLCAidG90YWwiOiA3NDQ3MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjc0MTQsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NzYiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXX0sIHsiYXJlYSI6ICJIZWFsdGggYW5kIEh1bWFuIFNlcnZpY2VzIiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZSIsICJmdHAiOiAyNjA2LjI3LCAiZ2YiOiAyMjEzMTk2MDAsICJkZWQiOiAxMjIwNzcxMDAsICJmZWQiOiA2OTAzMDY4MDAsICJ0b3RhbCI6IDEwMzM3MDM1MDAsICJmZWRfc2hhcmUiOiAwLjY2NzgsICJkZWRfc2hhcmUiOiAwLjExODEsICJhbWVuZHNfY29kZSI6IHRydWUsICJiaWxscyI6IFsiSDk3OCIsICJTMTQyOSIsICJTMTQzMiIsICJTMTQzNCIsICJTMTQzNSIsICJTMTQ1NCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBNZW50YWwgSGVhbHRoIFNlcnZpY2VzIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzE0MjkgdGhhdCBwcm92aWRlcyBhblxuZXhlbXB0aW9uIGZyb20gdGhlIHJlc3RyaWN0aW9ucyBwbGFjZWQgb24gdGhlIERlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlIGluIFMxNDM1LCB3aGljaCBsaW1pdCB0aGUgdHJhbnNmZXIgb2YgbW9uZXlzIGZvciB0cnVzdGVlIGFuZFxuYmVuZWZpdCBwYXltZW50cyJ9LCB7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIFBzeWNoaWF0cmljIEhvc3BpdGFsaXphdGlvbiByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxNDI5IHRoYXQgcHJvdmlkZXNcbmFuIGV4ZW1wdGlvbiBmcm9tIHRoZSByZXN0cmljdGlvbnMgcGxhY2VkIG9uIHRoZSBEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZSBpbiBTMTQzNSwgd2hpY2ggbGltaXQgdGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBmb3IgdHJ1c3RlZVxuYW5kIGJlbmVmaXQgcGF5bWVudHMifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgZm91ciBzZWN0aW9ucyBvZiByZXF1aXJlbWVudHMgcmVsZXZhbnQgdG8gdGhpcyBwcm9ncmFtLiBTZWN0aW9uIDNcbnByb3ZpZGVkIHRoYXQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBzaGFsbCBtYWtlIHBlcmlvZGljIHRyYW5zZmVycyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgdG8gdGhlIENvb3BlcmF0aXZlIFdlbGZhcmUgRnVuZCwgYXNcbmFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBvZiBFeGFtaW5lcnMuIFNlY3Rpb24gNCBwcm92aWRlZCB0aGF0IG5vIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3IgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBjYW4gYmUgdHJhbnNmZXJyZWQgdG9cbmFueSBvdGhlciBleHBlbnNlIGNsYXNzLiBTZWN0aW9uIDUgcHJvdmlkZWQgdCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlNvdXRod2VzdCBJZGFobyBUcmVhdG1lbnQgQ2VudGVyIiwgInRleHQiOiAiRmFtaWx5IGFuZCBDb21tdW5pdHkgUGFydG5lcnNoaXBzIGlzIHJlc3BvbnNpYmxlIGZvciBpbXByb3ZpbmcgY3VzdG9tZXIgc2VydmljZSB0byBjbGllbnRzLiBUaGlzIGlzXG5hY2NvbXBsaXNoZWQgYnk6IDEpIHByb21vdGluZyBjb29yZGluYXRpb24gYWNyb3NzIHByb2dyYW1zOyAyKSBkZWxpdmVyaW5nIGVtZXJnZW5jeSBhc3Npc3RhbmNlIHNlcnZpY2VzIHRocm91Z2ggYSBjb25zb2xpZGF0ZWQgdW5pdDsgMylcbmlkZW50aWZ5aW5nIHNlcnZpY2VzIHRoYXQgY2xpZW50cyBhcmUgYWNjZXNzaW5nIGFjcm9zcyBhbGwgZGl2aXNpb25zIGFuZCBjb29yZGluYXRpbmcgdG8gcmVkdWNlIGR1cGxpY2F0aW9uOyBhbmQgNCkgY29vcmRpbmF0aW5nIGFjY2VzcyB0byBjcm9zcy1cbmRpdmlzaW9uYWwgc3RhZmZpbmcgZm9yIGNsaWVudHMgYXQgcmlzayBvZiBoaWdoZXIgY29zdCBzZXJ2aWNlIG5lZWRzIG9yIG1vcmUgY29tcGxpY2F0ZWQgc2VydmljZSBuZWVkcy4gVGhpcyBwcm9ncmFtIHdhcyBjYWxsZWQgU2VydmljZVxuSW50ZWdyYXRpb24gcHJpb3IgdG8gRlkgMjAyNiJ9LCB7InN1Yl9wcm9ncmFtIjogIlBoeXNpY2FsIEhlYWx0aCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIHByZXZlbnRpdmUsIGVkdWNhdGlvbmFsLCB0cmVhdG1lbnQsIHN1cnZlaWxsYW5jZSwgYW5kIGhlYWx0aCBzZXJ2aWNlcyB0byBmYW1pbGllcyBpbiBJZGFoby4gTW9zdCBcImhhbmRzLVxub24gc2VydmljZXNcIiBhcmUgcHJvdmlkZWQgYnkgY29udHJhY3QgdGhyb3VnaCBzZXZlbiBwdWJsaWMgaGVhbHRoIGRpc3RyaWN0cywgYmFzZWQgdXBvbiBhIGNvb3BlcmF0aXZlIHB1YmxpYyBoZWFsdGggcGxhbm5pbmcgc3lzdGVtIn0sIHsic3ViX3Byb2dyYW0iOiAiRW1lcmdlbmN5IE1lZGljYWwgU2VydmljZXMiLCAidGV4dCI6ICJQcm92aWRlcyBhIHN0YXRld2lkZSBzeXN0ZW0gdG8gcmVzcG9uZCB0byBjcml0aWNhbCBpbGxuZXNzIGFuZCBpbmp1cnkgc2l0dWF0aW9ucy4gQmVnaW5uaW5nIGluIEZZIDIwMjYsIHRoaXNcbnByb2dyYW0gaXMgaG91c2VkIHdpdGhpbiB0aGUgSWRhaG8gTWlsaXRhcnkgRGl2aXNpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJMYWJvcmF0b3J5IFNlcnZpY2VzIiwgInRleHQiOiAiUHJvdmlkZXMgbGFib3JhdG9yeSBzdXBwb3J0IGZvciBkZXBhcnRtZW50YWwgcHJvZ3JhbXMuIFRoaXMgcHJvZ3JhbSB3YXMgcGFydCBvZiBQdWJsaWMgSGVhbHRoIFNlcnZpY2VzIHVudGlsXG5GWSAyMDAzIHdoZW4gaXQgd2FzIGVzdGFibGlzaGVkIGFzIGEgc2VwYXJhdGUgc3RhbmQtYWxvbmUgcHJvZ3JhbSJ9LCB7InN1Yl9wcm9ncmFtIjogIlN1aWNpZGUgUHJldmVudGlvbiBhbmQgQXdhcmVuZXNzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHdhcyBjcmVhdGVkIGluIDIwMTYgdG8gZXN0YWJsaXNoIGFuZCBvcGVyYXRlIGEgU3VpY2lkZSBQcmV2ZW50aW9uIGFuZCBBd2FyZW5lc3MgUHJvZ3JhbSBpbiB0aGVcbkRlcGFydG1lbnQgb2YgSGVhbHRoIGFuZCBXZWxmYXJlLiBUaGUgcHJvZ3JhbSdzIGluaXRpYWwgZ29hbHMgd2VyZSB0byBjcmVhdGUgeW91dGggcHJvZ3JhbW1pbmcgaW4gY29vcGVyYXRpb24gd2l0aCB0aGUgU3RhdGUgRGVwYXJ0bWVudCBvZlxuRWR1Y2F0aW9uLCBlc3RhYmxpc2ggYSBwdWJsaWMgYXdhcmVuZXNzIGNhbXBhaWduLCBhbmQgcHJvdmlkZSBmaW5hbmNpYWwgYXNzaXN0YW5jZSB0byB0aGUgSWRhaG8gU3VpY2lkZSBIb3RsaW5lLiBUaGUgcHJvZ3JhbSB3YXMgY3JlYXRlZFxuaW4gcmVzcG9uc2UgdG8gcmVjb21tZW5kYXRpb25zIG1hZGUgYnkgdGhlIEhlYWx0aCBRdWFsaXR5IFBsYW5uaW5nIENvbW1pc3Npb24sIGFzIHJlcXVpcmVkIGJ5IFNDUjEwNCBvZiB0aGUgMjAxNSBsZWdpc2xhdGl2ZSBzZXNzaW9uLlxuSW4gQXVndXN0IDIwMTgsIGluIHBhcnRuZXJzaGlwIHdpdGggcmVsZXZhbnQgc3Rha2Vob2xkZXJzLCB0aGUgcHJvZ3JhbSBkZXZlbG9wZWQgYSJ9LCB7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBDYXJlIFBvbGljeSBJbml0aWF0aXZlcyIsICJ0ZXh0IjogIlRoZSBwcm9ncmFtIHdhcyBlc3RhYmxpc2hlZCBpbiAyMDE1IHRvIGFkbWluaXN0ZXIgdGhlIFN0YXRlIEhlYWx0aGNhcmUgSW5ub3ZhdGlvbiBQbGFuIChTSElQKSBhbmQgb3RoZXJcbnN0YXRld2lkZSBoZWFsdGgtcG9saWN5IGluaXRpYXRpdmVzIGZvY3VzZWQgb24gaW1wcm92aW5nIElkYWhvXHUyMDE5cyBoZWFsdGggY2FyZSBzeXN0ZW0uIEluIDIwMTcsIHRoZSBMZWdpc2xhdHVyZSBhZGRlZCBmdW5kaW5nIHRvIHN1cHBvcnRcbk1lZGljYWlkLWVsaWdpYmxlIHNlcnZpY2VzIGluIHRoZSBHcmFkdWF0ZSBNZWRpY2FsIEVkdWNhdGlvbiAoR01FKSBQcm9ncmFtLiBJbiAyMDIwLCB0aGUgTGVnaXNsYXR1cmUgYXBwcm92ZWQgbW92aW5nIHRoZSBwcm9ncmFtIGZyb20gYVxuc3RhbmQtYWxvbmUgZGl2aXNpb24gYW5kIHByb2dyYW0gdG8gYSBwcm9ncmFtIHdpdGhpbiB0aGUgUHVibGljIEhlYWx0aCBTZXJ2aWNlcyBEaXZpc2lvbiJ9LCB7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBDYXJlIFBvbGljeSBJbml0aWF0aXZlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIHBvbGljeSBkaXJlY3Rpb24sIGFkbWluaXN0cmF0aXZlIGxlYWRlcnNoaXAsIGFuZCBtYW5hZ2VtZW50IHN1cHBvcnQgbmVjZXNzYXJ5IGZvciB0aGUgZGVwYXJ0bWVudCB0b1xub3BlcmF0ZS4gSW5jbHVkZXMgdGhlIERpdmlzaW9uIG9mIEluZm9ybWF0aW9uIFNlcnZpY2VzLCB0aGUgRGl2aXNpb24gb2YgTWFuYWdlbWVudCBTZXJ2aWNlcywgTGVnYWwgU2VydmljZXMsIHRoZSBPZmZpY2Ugb2YgUHVibGljXG5QYXJ0aWNpcGF0aW9uLCB0aGUgT2ZmaWNlIG9mIHRoZSBEaXJlY3RvciwgYW5kIFJlZ2lvbmFsIEFkbWluaXN0cmF0aW9uIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHN1cnZleXMsIGluc3BlY3RzLCBsaWNlbnNlcywgYW5kIGNlcnRpZmllcyBoZWFsdGggY2FyZSBmYWNpbGl0aWVzIHRoYXQgcmVxdWlyZSBjZXJ0aWZpY2F0aW9uIG9yIGxpY2Vuc3VyZVxuYnkgZWl0aGVyIHN0YXRlIG9yIGZlZGVyYWwgcmVxdWlyZW1lbnRzLiBUaGUgcHJvZ3JhbSBpbnZlc3RpZ2F0ZXMgY29tcGxhaW50cywgY29uZHVjdHMgb24tc2l0ZSBzdXJ2ZXlzLCBhbmQgdGFrZXMgYXBwcm9wcmlhdGUgbGljZW5zdXJlXG5hY3Rpb24gdG8gcHJvdGVjdCB0aGUgaGVhbHRoIGFuZCBzYWZldHkgb2YgdnVsbmVyYWJsZSBwZW9wbGUgcmVjZWl2aW5nIGhlYWx0aC1yZWxhdGVkIHNlcnZpY2VzIGFuZCBzdXBwb3J0LiBbU3RhdHV0b3J5IEF1dGhvcml0eSBUaXRsZSAzOV0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJDaGlsZHJlbidzIE1lbnRhbCBIZWFsdGgiLCAidGV4dCI6ICJQcm92aWRlcyBhc3Nlc3NtZW50IGFuZCBldmFsdWF0aW9uLCBjbGluaWNhbCBjYXNlIG1hbmFnZW1lbnQsIGhvc3BpdGFsaXphdGlvbiwgcmVzaWRlbnRpYWwgdHJlYXRtZW50LCBhbmRcbnRoZXJhcGV1dGljIGZvc3RlciBjYXJlIGZvciBjaGlsZHJlbiB3aXRoIHNlcmlvdXMgZW1vdGlvbmFsIGRpc3R1cmJhbmNlcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkFkdWx0IE1lbnRhbCBIZWFsdGgiLCAidGV4dCI6ICJQcm92aWRlcyBjb21tdW5pdHktYmFzZWQgc2VydmljZXMgZm9yIGFkdWx0cyBleHBlcmllbmNpbmcgc2VyaW91cyBhbmQgcGVyc2lzdGVudCBtZW50YWwgaWxsbmVzcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSBIb3NwaXRhbGl6YXRpb24iLCAidGV4dCI6ICJGdW5kcyBhcmUgdXNlZCB0byBwYXkgZm9yIHBhdGllbnQgY2FyZSBvbmNlIGFuIGluZGl2aWR1YWwgaGFzIGJlZW4gY29tbWl0dGVkIHRvIHN0YXRlIGN1c3RvZHksIGJ1dCBiZWZvcmUgYSBiZWRcbmlzIGF2YWlsYWJsZSBpbiBvbmUgb2YgdGhlIHR3byBzdGF0ZSBpbnN0aXR1dGlvbnMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIb3NwaXRhbCBOb3J0aCIsICJ0ZXh0IjogIlN0YXRlIEhvc3BpdGFsIE5vcnRoIChTSE4pLCBpbiBPcm9maW5vLCB3YXMgZXN0YWJsaXNoZWQgdG8gZGlhZ25vc2UsIGNhcmUgZm9yLCBhbmQgdHJlYXQgbWVudGFsbHkgaWxsIGNpdGl6ZW5zIHRoYXRcbmhhdmUgYmVlbiBhZGp1ZGljYXRlZCBieSBhIGNvdXJ0IG9mIGxhdyJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhvc3BpdGFsIFNvdXRoIiwgInRleHQiOiAiU3RhdGUgSG9zcGl0YWwgU291dGggKFNIUyksIGluIEJsYWNrZm9vdCwgc2VydmVzIGFzIHRoZSBtYWpvciBhZHVsdCBwc3ljaGlhdHJpYyBpbnBhdGllbnQgZmFjaWxpdHkgZm9yIHRoZSBzdGF0ZS4gVGhlXG5ob3NwaXRhbCBwcm92aWRlcyBpbnRlbnNpdmUgcHN5Y2hpYXRyaWMgdHJlYXRtZW50IGZvciBhY3V0ZSwgY2hyb25pYywgZ2VyaWF0cmljLCBhbmQgZm9yZW5zaWMgcGF0aWVudHMgaW4gYSByZXNpZGVudGlhbCBzZXR0aW5nIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgSG9zcGl0YWwgV2VzdCIsICJ0ZXh0IjogIlN0YXRlIEhvc3BpdGFsIFdlc3QgKFNIVyksIHdhcyBlc3RhYmxpc2hlZCBpbiAyMDIwIHdpdGggcGFzc2FnZSBvZiBINTk3LiBUaGUgYWRvbGVzY2VudCB1bml0IHdpbGwgaGF2ZSBhIDE2XG5iZWQgY2FwYWNpdHkgYW5kIHdpbGwgYmUgbG9jYXRlZCBpbiBOYW1wYSwgSWRhaG8uIFNIVyB3aWxsIHByb3ZpZGUgY2FyZSB0byBtZWRpY2FsbHkgc3RhYmxlIGFuZCBoZWFsdGh5IHBhdGllbnRzIHdpdGggYSBwcmltYXJ5IHBzeWNoaWF0cmljXG5kaWFnbm9zaXMgdGhhdCB3aWxsIGluY2x1ZGUgb25lLW9uLW9uZSBjb3Vuc2VsaW5nLCBzb2NpYWwgdGhlcmFweSwgYSBtZWRpY2FsIHJlZ2ltZSwgcmVjcmVhdGlvbmFsIGFuZCBvY2N1cGF0aW9uYWwgdGhlcmFwaWVzLCBhbmQgYSBjb250aW51aW5nXG5lZHVjYXRpb24gZW52aXJvbm1lbnQuIFRoZSBhdmVyYWdlIGxlbmd0aCBvZiBzdGF5IGlzIGVzdGltYXRlZCBhdCAzMCBkYXlzIGFuZCB0aGUgZGVwYXJ0bWVudCBjYWxjdWxhdGVzIHNlcnZpbmcgYWJvdXQgMTI1LTE1MFxuYWRvbGVzY2VudHMgZWFjaCB5ZWFyIn1dLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIkluZGlyZWN0IFN1cHBvcnQgU2VydmljZXMiLCAiZ2YiOiAyMDg5OTQwMCwgImRlZCI6IDM0NzMzMDAsICJmZWQiOiAzMTk1OTkzMDAsICJ0b3RhbCI6IDM0Mzk3MjAwMCwgImZlZF9zaGFyZSI6IDAuOTI5MSwgImRlZF9zaGFyZSI6IDAuMDEwMSwgImJpbGxzIjogWyJTMTQzMiIsICJTMTQzNSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgbmluZSBzZWN0aW9ucyBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyByZWxldmFudCB0byB0aGlzXG5wcm9ncmFtLiBTZWN0aW9uIDMgcHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmVcbldlbGZhcmUgRnVuZCwgYXMgYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhblxuYmUgdHJhbnNmZXJyZWQgdG8gYW55IG90aGVyIGV4cGVucyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBDYXJlIFBvbGljeSBJbml0aWF0aXZlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIHBvbGljeSBkaXJlY3Rpb24sIGFkbWluaXN0cmF0aXZlIGxlYWRlcnNoaXAsIGFuZCBtYW5hZ2VtZW50IHN1cHBvcnQgbmVjZXNzYXJ5IGZvciB0aGUgZGVwYXJ0bWVudCB0b1xub3BlcmF0ZS4gSW5jbHVkZXMgdGhlIERpdmlzaW9uIG9mIEluZm9ybWF0aW9uIFNlcnZpY2VzLCB0aGUgRGl2aXNpb24gb2YgTWFuYWdlbWVudCBTZXJ2aWNlcywgTGVnYWwgU2VydmljZXMsIHRoZSBPZmZpY2Ugb2YgUHVibGljXG5QYXJ0aWNpcGF0aW9uLCB0aGUgT2ZmaWNlIG9mIHRoZSBEaXJlY3RvciwgYW5kIFJlZ2lvbmFsIEFkbWluaXN0cmF0aW9uIn1dfSwgeyJuYW1lIjogIlB1YmxpYyBIZWFsdGggU2VydmljZXMiLCAiZ2YiOiAxMDE2MTkwMCwgImRlZCI6IDU2NjA3NDAwLCAiZmVkIjogNzQ0MjY1MDAsICJ0b3RhbCI6IDE0MTE5NTgwMCwgImZlZF9zaGFyZSI6IDAuNTI3MSwgImRlZF9zaGFyZSI6IDAuNDAwOSwgImJpbGxzIjogWyJIOTc4IiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCBmb3VyIHNlY3Rpb25zIG9mIHJlcXVpcmVtZW50cyByZWxldmFudCB0byB0aGlzIHByb2dyYW0uIFNlY3Rpb24gM1xucHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmUgV2VsZmFyZSBGdW5kLCBhc1xuYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhbiBiZSB0cmFuc2ZlcnJlZCB0b1xuYW55IG90aGVyIGV4cGVuc2UgY2xhc3MuIFNlY3Rpb24gNSBwcm92aWRlZCB0In0sIHsidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlMxNDM1IGluY2x1ZGVkIHNldmVuIHNlY3Rpb25zIG9mIHJlcXVpcmVtZW50cyByZWxldmFudCB0byB0aGlzIHByb2dyYW0uIFNlY3Rpb24gM1xucHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmUgV2VsZmFyZSBGdW5kLCBhc1xuYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhbiBiZSB0cmFuc2ZlcnJlZCB0b1xuYW55IG90aGVyIGV4cGVuc2UgY2xhc3MuIFNlY3Rpb24gNSBwcm92aWRlZCAifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJQaHlzaWNhbCBIZWFsdGggU2VydmljZXMiLCAidGV4dCI6ICJQcm92aWRlcyBwcmV2ZW50aXZlLCBlZHVjYXRpb25hbCwgdHJlYXRtZW50LCBzdXJ2ZWlsbGFuY2UsIGFuZCBoZWFsdGggc2VydmljZXMgdG8gZmFtaWxpZXMgaW4gSWRhaG8uIE1vc3QgXCJoYW5kcy1cbm9uIHNlcnZpY2VzXCIgYXJlIHByb3ZpZGVkIGJ5IGNvbnRyYWN0IHRocm91Z2ggc2V2ZW4gcHVibGljIGhlYWx0aCBkaXN0cmljdHMsIGJhc2VkIHVwb24gYSBjb29wZXJhdGl2ZSBwdWJsaWMgaGVhbHRoIHBsYW5uaW5nIHN5c3RlbSJ9LCB7InN1Yl9wcm9ncmFtIjogIkVtZXJnZW5jeSBNZWRpY2FsIFNlcnZpY2VzIiwgInRleHQiOiAiUHJvdmlkZXMgYSBzdGF0ZXdpZGUgc3lzdGVtIHRvIHJlc3BvbmQgdG8gY3JpdGljYWwgaWxsbmVzcyBhbmQgaW5qdXJ5IHNpdHVhdGlvbnMuIEJlZ2lubmluZyBpbiBGWSAyMDI2LCB0aGlzXG5wcm9ncmFtIGlzIGhvdXNlZCB3aXRoaW4gdGhlIElkYWhvIE1pbGl0YXJ5IERpdmlzaW9uIn0sIHsic3ViX3Byb2dyYW0iOiAiTGFib3JhdG9yeSBTZXJ2aWNlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIGxhYm9yYXRvcnkgc3VwcG9ydCBmb3IgZGVwYXJ0bWVudGFsIHByb2dyYW1zLiBUaGlzIHByb2dyYW0gd2FzIHBhcnQgb2YgUHVibGljIEhlYWx0aCBTZXJ2aWNlcyB1bnRpbFxuRlkgMjAwMyB3aGVuIGl0IHdhcyBlc3RhYmxpc2hlZCBhcyBhIHNlcGFyYXRlIHN0YW5kLWFsb25lIHByb2dyYW0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdWljaWRlIFByZXZlbnRpb24gYW5kIEF3YXJlbmVzcyIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSB3YXMgY3JlYXRlZCBpbiAyMDE2IHRvIGVzdGFibGlzaCBhbmQgb3BlcmF0ZSBhIFN1aWNpZGUgUHJldmVudGlvbiBhbmQgQXdhcmVuZXNzIFByb2dyYW0gaW4gdGhlXG5EZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZS4gVGhlIHByb2dyYW0ncyBpbml0aWFsIGdvYWxzIHdlcmUgdG8gY3JlYXRlIHlvdXRoIHByb2dyYW1taW5nIGluIGNvb3BlcmF0aW9uIHdpdGggdGhlIFN0YXRlIERlcGFydG1lbnQgb2ZcbkVkdWNhdGlvbiwgZXN0YWJsaXNoIGEgcHVibGljIGF3YXJlbmVzcyBjYW1wYWlnbiwgYW5kIHByb3ZpZGUgZmluYW5jaWFsIGFzc2lzdGFuY2UgdG8gdGhlIElkYWhvIFN1aWNpZGUgSG90bGluZS4gVGhlIHByb2dyYW0gd2FzIGNyZWF0ZWRcbmluIHJlc3BvbnNlIHRvIHJlY29tbWVuZGF0aW9ucyBtYWRlIGJ5IHRoZSBIZWFsdGggUXVhbGl0eSBQbGFubmluZyBDb21taXNzaW9uLCBhcyByZXF1aXJlZCBieSBTQ1IxMDQgb2YgdGhlIDIwMTUgbGVnIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIENhcmUgUG9saWN5IEluaXRpYXRpdmVzIiwgInRleHQiOiAiVGhlIHByb2dyYW0gd2FzIGVzdGFibGlzaGVkIGluIDIwMTUgdG8gYWRtaW5pc3RlciB0aGUgU3RhdGUgSGVhbHRoY2FyZSBJbm5vdmF0aW9uIFBsYW4gKFNISVApIGFuZCBvdGhlclxuc3RhdGV3aWRlIGhlYWx0aC1wb2xpY3kgaW5pdGlhdGl2ZXMgZm9jdXNlZCBvbiBpbXByb3ZpbmcgSWRhaG9cdTIwMTlzIGhlYWx0aCBjYXJlIHN5c3RlbS4gSW4gMjAxNywgdGhlIExlZ2lzbGF0dXJlIGFkZGVkIGZ1bmRpbmcgdG8gc3VwcG9ydFxuTWVkaWNhaWQtZWxpZ2libGUgc2VydmljZXMgaW4gdGhlIEdyYWR1YXRlIE1lZGljYWwgRWR1Y2F0aW9uIChHTUUpIFByb2dyYW0uIEluIDIwMjAsIHRoZSBMZWdpc2xhdHVyZSBhcHByb3ZlZCBtb3ZpbmcgdGhlIHByb2dyYW0gZnJvbSBhXG5zdGFuZC1hbG9uZSBkaXZpc2lvbiBhbmQgcHJvZ3JhbSB0byBhIHByb2dyYW0gd2l0aGluIHRoZSBQdWJsaWMgSGVhbHRoIFNlcnZpY2VzIERpdmlzaW9uIn1dfSwgeyJuYW1lIjogIkRpdmlzaW9uIG9mIFdlbGZhcmUiLCAiZ2YiOiA1MDQ3NjMwMCwgImRlZCI6IDQ5MDExMDAsICJmZWQiOiA4MTMwNzQwMCwgInRvdGFsIjogMTM2Njg0ODAwLCAiZmVkX3NoYXJlIjogMC41OTQ5LCAiZGVkX3NoYXJlIjogMC4wMzU5LCAiYmlsbHMiOiBbIlMxNDM0IiwgIlMxNDM1Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW119LCB7Im5hbWUiOiAiWW91dGggU2FmZXR5ICYgUGVybWFuZW5jeSIsICJnZiI6IDUzODkzNzAwLCAiZGVkIjogOTM4NzAwLCAiZmVkIjogNjgwODY4MDAsICJ0b3RhbCI6IDEyMjkxOTIwMCwgImZlZF9zaGFyZSI6IDAuNTUzOSwgImRlZF9zaGFyZSI6IDAuMDA3NiwgImJpbGxzIjogWyJTMTQzNSIsICJTMTQ1NCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdfSwgeyJuYW1lIjogIkVhcmx5IExlYXJuaW5nICYgRGV2ZWxvcG1lbnQiLCAiZ2YiOiAyMTExNjcwMCwgImRlZCI6IDE0Njg5MDAsICJmZWQiOiA4NDE0MDAwMCwgInRvdGFsIjogMTA2NzI1NjAwLCAiZmVkX3NoYXJlIjogMC43ODg0LCAiZGVkX3NoYXJlIjogMC4wMTM4LCAiYmlsbHMiOiBbIlMxNDM1IiwgIlMxNDU0Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW119LCB7Im5hbWUiOiAiUHN5Y2hpYXRyaWMgSG9zcGl0YWxpemF0aW9uIiwgImdmIjogMjM5NjU5MDAsICJkZWQiOiA0MzYyODEwMCwgImZlZCI6IDEwMTc3MDAsICJ0b3RhbCI6IDY4NjExNzAwLCAiZmVkX3NoYXJlIjogMC4wMTQ4LCAiZGVkX3NoYXJlIjogMC42MzU5LCAiYmlsbHMiOiBbIlMxNDI5IiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIFBzeWNoaWF0cmljIEhvc3BpdGFsaXphdGlvbiByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxNDI5IHRoYXQgcHJvdmlkZXNcbmFuIGV4ZW1wdGlvbiBmcm9tIHRoZSByZXN0cmljdGlvbnMgcGxhY2VkIG9uIHRoZSBEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZSBpbiBTMTQzNSwgd2hpY2ggbGltaXQgdGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBmb3IgdHJ1c3RlZVxuYW5kIGJlbmVmaXQgcGF5bWVudHMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgSG9zcGl0YWxpemF0aW9uIiwgInRleHQiOiAiRnVuZHMgYXJlIHVzZWQgdG8gcGF5IGZvciBwYXRpZW50IGNhcmUgb25jZSBhbiBpbmRpdmlkdWFsIGhhcyBiZWVuIGNvbW1pdHRlZCB0byBzdGF0ZSBjdXN0b2R5LCBidXQgYmVmb3JlIGEgYmVkXG5pcyBhdmFpbGFibGUgaW4gb25lIG9mIHRoZSB0d28gc3RhdGUgaW5zdGl0dXRpb25zIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgSG9zcGl0YWwgTm9ydGgiLCAidGV4dCI6ICJTdGF0ZSBIb3NwaXRhbCBOb3J0aCAoU0hOKSwgaW4gT3JvZmlubywgd2FzIGVzdGFibGlzaGVkIHRvIGRpYWdub3NlLCBjYXJlIGZvciwgYW5kIHRyZWF0IG1lbnRhbGx5IGlsbCBjaXRpemVucyB0aGF0XG5oYXZlIGJlZW4gYWRqdWRpY2F0ZWQgYnkgYSBjb3VydCBvZiBsYXcifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIb3NwaXRhbCBTb3V0aCIsICJ0ZXh0IjogIlN0YXRlIEhvc3BpdGFsIFNvdXRoIChTSFMpLCBpbiBCbGFja2Zvb3QsIHNlcnZlcyBhcyB0aGUgbWFqb3IgYWR1bHQgcHN5Y2hpYXRyaWMgaW5wYXRpZW50IGZhY2lsaXR5IGZvciB0aGUgc3RhdGUuIFRoZVxuaG9zcGl0YWwgcHJvdmlkZXMgaW50ZW5zaXZlIHBzeWNoaWF0cmljIHRyZWF0bWVudCBmb3IgYWN1dGUsIGNocm9uaWMsIGdlcmlhdHJpYywgYW5kIGZvcmVuc2ljIHBhdGllbnRzIGluIGEgcmVzaWRlbnRpYWwgc2V0dGluZyJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhvc3BpdGFsIFdlc3QiLCAidGV4dCI6ICJTdGF0ZSBIb3NwaXRhbCBXZXN0IChTSFcpLCB3YXMgZXN0YWJsaXNoZWQgaW4gMjAyMCB3aXRoIHBhc3NhZ2Ugb2YgSDU5Ny4gVGhlIGFkb2xlc2NlbnQgdW5pdCB3aWxsIGhhdmUgYSAxNlxuYmVkIGNhcGFjaXR5IGFuZCB3aWxsIGJlIGxvY2F0ZWQgaW4gTmFtcGEsIElkYWhvLiBTSFcgd2lsbCBwcm92aWRlIGNhcmUgdG8gbWVkaWNhbGx5IHN0YWJsZSBhbmQgaGVhbHRoeSBwYXRpZW50cyB3aXRoIGEgcHJpbWFyeSBwc3ljaGlhdHJpY1xuZGlhZ25vc2lzIHRoYXQgd2lsbCBpbmNsdWRlIG9uZS1vbi1vbmUgY291bnNlbGluZywgc29jaWFsIHRoZXJhcHksIGEgbWVkaWNhbCByZWdpbWUsIHJlY3JlYXRpb25hbCBhbmQgb2NjdXBhdGlvbmFsIHRoZXJhcGllcywgYW5kIGEgY29udGludWluZ1xuZWR1Y2F0aW9uIGVudmlyb25tZW50LiBUaGUgYXZlcmFnZSBsZW5ndGggb2Ygc3RheSBpcyBlc3RpbWF0ZWQgYXQgMzAgZGF5cyBhbmQgdGhlIGRlcGFydG1lbnQgY2FsY3VsYXRlcyBzZXJ2aSJ9XX0sIHsibmFtZSI6ICJNZW50YWwgSGVhbHRoIFNlcnZpY2VzIiwgImdmIjogMzY4OTI0MDAsICJkZWQiOiAzMTQyNjAwLCAiZmVkIjogMTI1MTA2MDAsICJ0b3RhbCI6IDUyNTQ1NjAwLCAiZmVkX3NoYXJlIjogMC4yMzgxLCAiZGVkX3NoYXJlIjogMC4wNTk4LCAiYmlsbHMiOiBbIlMxNDI5IiwgIlMxNDM1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIE1lbnRhbCBIZWFsdGggU2VydmljZXMgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTQyOSB0aGF0IHByb3ZpZGVzIGFuXG5leGVtcHRpb24gZnJvbSB0aGUgcmVzdHJpY3Rpb25zIHBsYWNlZCBvbiB0aGUgRGVwYXJ0bWVudCBvZiBIZWFsdGggYW5kIFdlbGZhcmUgaW4gUzE0MzUsIHdoaWNoIGxpbWl0IHRoZSB0cmFuc2ZlciBvZiBtb25leXMgZm9yIHRydXN0ZWUgYW5kXG5iZW5lZml0IHBheW1lbnRzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ2hpbGRyZW4ncyBNZW50YWwgSGVhbHRoIiwgInRleHQiOiAiUHJvdmlkZXMgYXNzZXNzbWVudCBhbmQgZXZhbHVhdGlvbiwgY2xpbmljYWwgY2FzZSBtYW5hZ2VtZW50LCBob3NwaXRhbGl6YXRpb24sIHJlc2lkZW50aWFsIHRyZWF0bWVudCwgYW5kXG50aGVyYXBldXRpYyBmb3N0ZXIgY2FyZSBmb3IgY2hpbGRyZW4gd2l0aCBzZXJpb3VzIGVtb3Rpb25hbCBkaXN0dXJiYW5jZXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJBZHVsdCBNZW50YWwgSGVhbHRoIiwgInRleHQiOiAiUHJvdmlkZXMgY29tbXVuaXR5LWJhc2VkIHNlcnZpY2VzIGZvciBhZHVsdHMgZXhwZXJpZW5jaW5nIHNlcmlvdXMgYW5kIHBlcnNpc3RlbnQgbWVudGFsIGlsbG5lc3MifV19LCB7Im5hbWUiOiAiU3Vic3RhbmNlIEFidXNlIFRyZWF0bWVudCAmIFByZXZlbnRpb24iLCAiZ2YiOiAwLCAiZGVkIjogMzE4NzEwMCwgImZlZCI6IDIzNTI0MzAwLCAidG90YWwiOiAyNjcxMTQwMCwgImZlZF9zaGFyZSI6IDAuODgwNywgImRlZF9zaGFyZSI6IDAuMTE5MywgImJpbGxzIjogWyJTMTQyOSIsICJTMTQzNSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgc2l4IHNlY3Rpb25zIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zIHJlbGV2YW50IHRvIHRoaXNcbnByb2dyYW0uIFNlY3Rpb24gMyBwcm92aWRlZCB0aGF0IHRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIENvbnRyb2xsZXIgc2hhbGwgbWFrZSBwZXJpb2RpYyB0cmFuc2ZlcnMgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIHRvIHRoZSBDb29wZXJhdGl2ZVxuV2VsZmFyZSBGdW5kLCBhcyBhcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLiBTZWN0aW9uIDQgcHJvdmlkZWQgdGhhdCBubyBmdW5kcyBhcHByb3ByaWF0ZWQgZm9yIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgY2FuXG5iZSB0cmFuc2ZlcnJlZCB0byBhbnkgb3RoZXIgZXhwZW5zZSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBDYXJlIFBvbGljeSBJbml0aWF0aXZlcyIsICJ0ZXh0IjogIlRoZSBTdWJzdGFuY2UgQWJ1c2UgVHJlYXRtZW50ICYgUHJldmVudGlvbiBQcm9ncmFtIHdhcyBpbnN0aXR1dGVkIHRvIHJlZHVjZSB0aGUgaW1wYWN0IG9mIGFsY29ob2wgYW5kIG90aGVyXG5kcnVnIGFidXNlIGJ5IGRldmVsb3BpbmcgdHJlYXRtZW50IHByb2dyYW1zIGZvciBwZW9wbGUgd2hvIGFyZSBkZXBlbmRlbnQgdXBvbiB0aGVzZSBzdWJzdGFuY2VzOyBhbmQgYnkgZGV2ZWxvcGluZyBwcmV2ZW50aW9uIHByb2dyYW1zXG5mb3IgcGVvcGxlIHdobyBhcmUgYXQgcmlzayBvZiBkZXZlbG9waW5nIGEgc3Vic3RhbmNlIHVzZSBkZXBlbmRlbmN5In1dfSwgeyJuYW1lIjogIkluZGVwZW5kZW50IENvdW5jaWxzIiwgImdmIjogNTYzNDAwLCAiZGVkIjogMzYxMDkwMCwgImZlZCI6IDEzOTA3NjAwLCAidG90YWwiOiAxODA4MTkwMCwgImZlZF9zaGFyZSI6IDAuNzY5MSwgImRlZF9zaGFyZSI6IDAuMTk5NywgImJpbGxzIjogW10sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTQzNSBpbmNsdWRlZCB0aHJlZSBzZWN0aW9ucyBvZiByZXF1aXJlbWVudHMgcmVsZXZhbnQgdG8gdGhpcyBwcm9ncmFtLiBTZWN0aW9uIDNcbnByb3ZpZGVkIHRoYXQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBzaGFsbCBtYWtlIHBlcmlvZGljIHRyYW5zZmVycyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgdG8gdGhlIENvb3BlcmF0aXZlIFdlbGZhcmUgRnVuZCwgYXNcbmFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBvZiBFeGFtaW5lcnMuIFNlY3Rpb24gNCBwcm92aWRlZCB0aGF0IG5vIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3IgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBjYW4gYmUgdHJhbnNmZXJyZWQgdG9cbmFueSBvdGhlciBleHBlbnNlIGNsYXNzLiBTZWN0aW9uIDI2IHByb3ZpZGVkIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRGV2ZWxvcG1lbnRhbCBEaXNhYmlsaXRpZXMgQ291bmNpbCIsICJ0ZXh0IjogIk1haW50YWluIGEgY2VudHJhbCBwb2ludCBmb3IgY29vcGVyYXRpb24gYW5kIGNvb3JkaW5hdGlvbiBiZXR3ZWVuIHRoZSBwdWJsaWMgYW5kIHByaXZhdGUgc2VjdG9ycyB0byBlbnN1cmUgdGhhdFxudGhvc2Ugd2l0aCBkZXZlbG9wbWVudGFsIGRpc2FiaWxpdGllcyByZWNlaXZlIG5lY2Vzc2FyeSBzZXJ2aWNlcyBhbmQgb3RoZXIgYXNzaXN0YW5jZS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNjcwMSwgSWRhaG8gQ29kZV0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJEb21lc3RpYyBWaW9sZW5jZSBDb3VuY2lsIiwgInRleHQiOiAiUHJvdmlkZXMgY291bnNlbGluZywgbWVkaWNpbmUsIGFuZCBmaW5hbmNpYWwgYXNzaXN0YW5jZSB0byB2aWN0aW1zIG9mIGRvbWVzdGljIHZpb2xlbmNlLiBbU3RhdHV0b3J5IEF1dGhvcml0eTpcblNlY3Rpb24gMzktNTIwMywgSWRhaG8gQ29kZV0ifV19LCB7Im5hbWUiOiAiTGljZW5zaW5nIGFuZCBDZXJ0aWZpY2F0aW9uIiwgImdmIjogMjMzNjMwMCwgImRlZCI6IDEwNDk1MDAsICJmZWQiOiA1NDMwNzAwLCAidG90YWwiOiA4ODE2NTAwLCAiZmVkX3NoYXJlIjogMC42MTYsICJkZWRfc2hhcmUiOiAwLjExOSwgImJpbGxzIjogWyJTMTQzNCIsICJTMTQzNSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgZml2ZSBzZWN0aW9ucyBvZiByZXF1aXJlbWVudHMgcmVsZXZhbnQgdG8gdGhpcyBwcm9ncmFtLiBTZWN0aW9uIDNcbnByb3ZpZGVkIHRoYXQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBzaGFsbCBtYWtlIHBlcmlvZGljIHRyYW5zZmVycyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgdG8gdGhlIENvb3BlcmF0aXZlIFdlbGZhcmUgRnVuZCwgYXNcbmFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBvZiBFeGFtaW5lcnMuIFNlY3Rpb24gNCBwcm92aWRlZCB0aGF0IG5vIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3IgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBjYW4gYmUgdHJhbnNmZXJyZWQgdG9cbmFueSBvdGhlciBleHBlbnNlIGNsYXNzLiBTZWN0aW9uIDUgcHJvdmlkZWQgdCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBDYXJlIFBvbGljeSBJbml0aWF0aXZlcyIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBzdXJ2ZXlzLCBpbnNwZWN0cywgbGljZW5zZXMsIGFuZCBjZXJ0aWZpZXMgaGVhbHRoIGNhcmUgZmFjaWxpdGllcyB0aGF0IHJlcXVpcmUgY2VydGlmaWNhdGlvbiBvciBsaWNlbnN1cmVcbmJ5IGVpdGhlciBzdGF0ZSBvciBmZWRlcmFsIHJlcXVpcmVtZW50cy4gVGhlIHByb2dyYW0gaW52ZXN0aWdhdGVzIGNvbXBsYWludHMsIGNvbmR1Y3RzIG9uLXNpdGUgc3VydmV5cywgYW5kIHRha2VzIGFwcHJvcHJpYXRlIGxpY2Vuc3VyZVxuYWN0aW9uIHRvIHByb3RlY3QgdGhlIGhlYWx0aCBhbmQgc2FmZXR5IG9mIHZ1bG5lcmFibGUgcGVvcGxlIHJlY2VpdmluZyBoZWFsdGgtcmVsYXRlZCBzZXJ2aWNlcyBhbmQgc3VwcG9ydC4gW1N0YXR1dG9yeSBBdXRob3JpdHkgVGl0bGUgMzldIn1dfSwgeyJuYW1lIjogIkZhbWlseSBhbmQgQ29tbXVuaXR5IFBhcnRuZXJzaGlwcyIsICJnZiI6IDEwMTM2MDAsICJkZWQiOiA2OTUwMCwgImZlZCI6IDYzNTU5MDAsICJ0b3RhbCI6IDc0MzkwMDAsICJmZWRfc2hhcmUiOiAwLjg1NDQsICJkZWRfc2hhcmUiOiAwLjAwOTMsICJiaWxscyI6IFsiUzE0MzUiLCAiUzE0NTQiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlMxNDM1IGluY2x1ZGVkIGZvdXIgc2VjdGlvbnMgb2YgcmVxdWlyZW1lbnRzIHJlbGV2YW50IHRvIHRoaXMgcHJvZ3JhbS4gU2VjdGlvbiAzXG5wcm92aWRlZCB0aGF0IHRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIENvbnRyb2xsZXIgc2hhbGwgbWFrZSBwZXJpb2RpYyB0cmFuc2ZlcnMgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIHRvIHRoZSBDb29wZXJhdGl2ZSBXZWxmYXJlIEZ1bmQsIGFzXG5hcHByb3ZlZCBieSB0aGUgQm9hcmQgb2YgRXhhbWluZXJzLiBTZWN0aW9uIDQgcHJvdmlkZWQgdGhhdCBubyBmdW5kcyBhcHByb3ByaWF0ZWQgZm9yIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgY2FuIGJlIHRyYW5zZmVycmVkIHRvXG5hbnkgb3RoZXIgZXhwZW5zZSBjbGFzcy4gU2VjdGlvbiA1IHByb3ZpZGVkIHQifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aHdlc3QgSWRhaG8gVHJlYXRtZW50IENlbnRlciIsICJ0ZXh0IjogIkZhbWlseSBhbmQgQ29tbXVuaXR5IFBhcnRuZXJzaGlwcyBpcyByZXNwb25zaWJsZSBmb3IgaW1wcm92aW5nIGN1c3RvbWVyIHNlcnZpY2UgdG8gY2xpZW50cy4gVGhpcyBpc1xuYWNjb21wbGlzaGVkIGJ5OiAxKSBwcm9tb3RpbmcgY29vcmRpbmF0aW9uIGFjcm9zcyBwcm9ncmFtczsgMikgZGVsaXZlcmluZyBlbWVyZ2VuY3kgYXNzaXN0YW5jZSBzZXJ2aWNlcyB0aHJvdWdoIGEgY29uc29saWRhdGVkIHVuaXQ7IDMpXG5pZGVudGlmeWluZyBzZXJ2aWNlcyB0aGF0IGNsaWVudHMgYXJlIGFjY2Vzc2luZyBhY3Jvc3MgYWxsIGRpdmlzaW9ucyBhbmQgY29vcmRpbmF0aW5nIHRvIHJlZHVjZSBkdXBsaWNhdGlvbjsgYW5kIDQpIGNvb3JkaW5hdGluZyBhY2Nlc3MgdG8gY3Jvc3MtXG5kaXZpc2lvbmFsIHN0YWZmaW5nIGZvciBjbGllbnRzIGF0IHJpc2sgb2YgaGlnaGVyIGNvc3Qgc2VydmljZSBuZWVkcyBvciBtb3JlIGNvbXBsaWNhdGVkIHNlcnZpY2UgbmVlZHMuIFRoaXMgcHJvZ3JhbSB3In1dfV19LCB7ImFyZWEiOiAiSGVhbHRoIGFuZCBIdW1hbiBTZXJ2aWNlcyIsICJhZ2VuY3kiOiAiRGl2aXNpb24gb2YgTWVkaWNhaWQiLCAiZnRwIjogMzAzLjUsICJnZiI6IDEwNDc4OTkzMDAsICJkZWQiOiAxMjY1MTAxMjAwLCAiZmVkIjogMzE5MzExNzkwMCwgInRvdGFsIjogNTUwNjExODQwMCwgImZlZF9zaGFyZSI6IDAuNTc5OSwgImRlZF9zaGFyZSI6IDAuMjI5OCwgImFtZW5kc19jb2RlIjogdHJ1ZSwgImJpbGxzIjogWyJTMTQzMyIsICJTMTQzNSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkZFREVSQUwgTUFUQ0ggUkFURSAoRk1BUCkiLCAidGV4dCI6ICJJZGFobydzIHJlZ3VsYXIgTWVkaWNhaWQgRk1BUCBmb3IgRlkyMDI3IGlzIDY3LjMxJSAoQ0hJUCdzIGVuaGFuY2VkIHJhdGUgaXMgNzcuMTIlKSwgcGVyIEhIUydzIG9mZmljaWFsIEZlZGVyYWwgUmVnaXN0ZXIgbm90aWNlLiBUaGF0IG1lYW5zIGZvciBldmVyeSAkMSBvZiBzdGF0ZSBzcGVuZGluZyBvbiByZWd1bGFyIEZNQVAtbWF0Y2hlZCBNZWRpY2FpZCBzZXJ2aWNlcywgdGhlIGZlZGVyYWwgZ292ZXJubWVudCBjb250cmlidXRlcyBhYm91dCAkMi4wNiBpbiBtYXRjaC4gQ3V0dGluZyAkMSBvZiBzdGF0ZSBHZW5lcmFsIEZ1bmQgZnJvbSB0aGF0IHBvcnRpb24gb2YgTWVkaWNhaWQgZG9lc24ndCBqdXN0IHNhdmUgdGhlIHN0YXRlICQxIC0tIGl0IGNhbiByZW1vdmUgcm91Z2hseSAkMy4wNiBvZiB0b3RhbCBmdW5kZWQgY2FyZSwgc2luY2UgdGhlIHN0YXRlJ3Mgc2hhcmUgaXMgd2hhdCB0cmlnZ2VycyB0aGUgZmVkZXJhbCBtYXRjaCBpbiB0aGUgZmlyc3QgcGxhY2UuIE5vdGUgdGhlIERpdmlzaW9uIG9mIE1lZGljYWlkJ3MgJDEsMDQ3LjlNIEdlbmVyYWwgRnVuZCBsaW5lIGJsZW5kcyBzZXZlcmFsIGRpZmZlcmVudCBtYXRjaCByYXRlcyAocmVndWxhciBGTUFQLCBBQ0EgZXhwYW5zaW9uIGF0IGEgZml4ZWQgOTAlIGZlZGVyYWwsIENISVAncyBlbmhhbmNlZCByYXRlLCBhbmQgfjUwJSBmb3IgYWRtaW5pc3RyYXRpdmUgY29zdHMpLCBzbyB0aGlzIG11bHRpcGxpZXIgYXBwbGllcyBtb3N0IGRpcmVjdGx5IHRvIHRyYWRpdGlvbmFsIE1lZGljYWlkIHNlcnZpY2VzLCBub3QgdGhlIHdob2xlIGxpbmUuIn0sIHsidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlMxNDM1IGluY2x1ZGVkIHNpeCBzZWN0aW9ucyBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyByZWxldmFudCB0byB0aGlzXG5wcm9ncmFtLiBTZWN0aW9uIDMgcHJvdmlkZWQgdGhhdCB0aGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBDb250cm9sbGVyIHNoYWxsIG1ha2UgcGVyaW9kaWMgdHJhbnNmZXJzIGZyb20gdGhlIEdlbmVyYWwgRnVuZCB0byB0aGUgQ29vcGVyYXRpdmVcbldlbGZhcmUgRnVuZCwgYXMgYXBwcm92ZWQgYnkgdGhlIEJvYXJkIG9mIEV4YW1pbmVycy4gU2VjdGlvbiA0IHByb3ZpZGVkIHRoYXQgbm8gZnVuZHMgYXBwcm9wcmlhdGVkIGZvciB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIGNhblxuYmUgdHJhbnNmZXJyZWQgdG8gYW55IG90aGVyIGV4cGVuc2UifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiUzE0MzUgaW5jbHVkZWQgMTEgc2VjdGlvbnMgb2YgY29uZGl0aW9ucywgbGltaXRhdGlvbnMsIGFuZCByZXN0cmljdGlvbnMgcmVsZXZhbnQgdG8gdGhpc1xucHJvZ3JhbS4gU2VjdGlvbiAzIHByb3ZpZGVkIHRoYXQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBzaGFsbCBtYWtlIHBlcmlvZGljIHRyYW5zZmVycyBmcm9tIHRoZSBHZW5lcmFsIEZ1bmQgdG8gdGhlIENvb3BlcmF0aXZlXG5XZWxmYXJlIEZ1bmQsIGFzIGFwcHJvdmVkIGJ5IHRoZSBCb2FyZCBvZiBFeGFtaW5lcnMuIFNlY3Rpb24gNCBwcm92aWRlZCB0aGF0IG5vIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3IgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cyBjYW5cbmJlIHRyYW5zZmVycmVkIHRvIGFueSBvdGhlciBleHBlbnNlICJ9XSwgImZtYXBfcmVndWxhciI6IDAuNjczMSwgImZtYXBfZW5oYW5jZWRfY2hpcCI6IDAuNzcxMiwgImZtYXBfY2l0YXRpb24iOiAiSEhTLCBcIkZlZGVyYWwgRmluYW5jaWFsIFBhcnRpY2lwYXRpb24gaW4gU3RhdGUgQXNzaXN0YW5jZSBFeHBlbmRpdHVyZXMuLi4gZm9yIE9jdG9iZXIgMSwgMjAyNiwgVGhyb3VnaCBTZXB0ZW1iZXIgMzAsIDIwMjcsXCIgOTAgRmVkLiBSZWcuIDU0Njk2IChOb3YuIDI4LCAyMDI1KSIsICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJNZWRpY2FpZCBBZG1pbmlzdHJhdGlvbiBhbmQgTWVkaWNhbCBNZ210IiwgInRleHQiOiAiSW5jbHVkZXMgYWxsIGV4cGVuZGl0dXJlcyB0byBhZG1pbmlzdGVyIGEgY29tcHJlaGVuc2l2ZSBwcm9ncmFtIG9mIG1lZGljYWwgY292ZXJhZ2UgdG8gZWxpZ2libGUgcmVjaXBpZW50cyBpblxuSWRhaG8uIENvdmVyYWdlIGlzIHByb3ZpZGVkIHRocm91Z2ggdHJhZGl0aW9uYWwgTWVkaWNhaWQgKFRpdGxlIFhJWCkgYW5kIENISVAgKFRpdGxlIFhYSSkuIEFkbWluaXN0cmF0aXZlIGZ1bmN0aW9ucyBpbmNsdWRlIG1hbmFnaW5nIHByb3ZpZGVyXG5wYXltZW50cywgY29udHJhY3RzIHdpdGggZ292ZXJubWVudGFsIGFuZCBub24tZ292ZXJubWVudGFsIGVudGl0aWVzIGZvciBtZWRpY2FsIG1hbmFnZW1lbnQsIGRydWcgdXRpbGl6YXRpb24gcmV2aWV3cywgYW5kIGFzc2Vzc21lbnRzLlxuQXMgb2YgRlkgMjAyNiwgdGhlIGZvbGxvd2luZyBzZXJ2aWNlcyBhcmUgYWxzbyB1bmRlciB0aGlzIGJ1ZGdldGVkIHByb2dyYW06IHRoZSBNZWRpY2FpZCBQcm9ncmFtIEludGVncml0eSBVbml0IChmb3JtZXJseSBwYXJ0IG9mIEluZGlyZWN0XG5TdXBwb3J0IFNlcnZpY2VzKTsgdGhlIElkYWhvIEJlaGF2aW9yYWwgSGVhbHRoIFBsYW4gc3RhZmYgKGZvcm1lcmx5IHBhcnQgbyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvb3JkaW5hdGVkIE1lZGljYWlkIFBsYW4iLCAidGV4dCI6ICJCZW5lZmljaWFyaWVzIGNvdmVyZWQgaW4gdGhpcyBwbGFuIHByaW1hcmlseSBjb25zaXN0IG9mIHRob3NlIHdobyBhcmUgYWdlIDY1IGFuZCBvbGRlci4gQWxsIGluZGl2aWR1YWxzIGR1YWxseVxuZWxpZ2libGUgZm9yIE1lZGljYWlkIGFuZCBNZWRpY2FyZSwgcmVnYXJkbGVzcyBvZiBhZ2UsIG1heSBlbGVjdCB0byByZWNlaXZlIGNvdmVyYWdlIHVuZGVyIHRoaXMgcGxhbiJ9LCB7InN1Yl9wcm9ncmFtIjogIkVuaGFuY2VkIE1lZGljYWlkIFBsYW4iLCAidGV4dCI6ICJNZWRpY2FpZCBlbGlnaWJsZSBncm91cCBwcmltYXJpbHkgbWFkZSB1cCBvZiBjaGlsZHJlbiBhbmQgYWR1bHRzIChub24tZWxkZXJseSkgd2l0aCBkaXNhYmlsaXRpZXMgb3Igb3RoZXIgaW5kaXZpZHVhbHNcbndpdGggc3BlY2lhbCBoZWFsdGggbmVlZHMsIHN1Y2ggYXMgZm9zdGVyIGNoaWxkcmVuLiBJbmRpdmlkdWFscyBpbmNsdWRlZCBpbiB0aGlzIHBsYW4gbWF5IGVsZWN0IHRvIHJlbWFpbiBpbiB0aGlzIHBsYW4gYWZ0ZXIgdGhleSB0dXJuIDY1IHllYXJzIG9sZCJ9LCB7InN1Yl9wcm9ncmFtIjogIkJhc2ljIE1lZGljYWlkIFBsYW4iLCAidGV4dCI6ICJNZWRpY2FpZCBlbGlnaWJsZSBncm91cCBwcmltYXJpbHkgY29uc2lzdGluZyBvZiBQcmVnbmFudCBXb21lbiBhbmQgQ2hpbGRyZW4gKFBXQyksIEZhbWlseSBNZWRpY2FpZCwgYW5kXG5JZGFobydzIENoaWxkcmVuIEhlYWx0aCBJbnN1cmFuY2UgUHJvZ3JhbSAoQ0hJUCkuIFRoZXNlIHBvcHVsYXRpb25zIGFyZSBhc3N1bWVkIHRvIGhhdmUgYXZlcmFnZSBsZXZlbHMgb2YgaGVhbHRoIGFuZCBkaXNlYXNlIn0sIHsic3ViX3Byb2dyYW0iOiAiRXhwYW5zaW9uIE1lZGljYWlkIFBsYW4iLCAidGV4dCI6ICJJbiBOb3ZlbWJlciAyMDE4LCA2MSUgb2YgdGhlIHBlb3BsZSBvZiBJZGFobyBhcHByb3ZlZCBNZWRpY2FpZCBleHBhbnNpb24gd2l0aCBwYXNzYWdlIG9mIFByb3Bvc2l0aW9uIDIuXG5UaGlzIGJhbGxvdCBpbml0aWF0aXZlIGFsbG93ZWQgZm9yIElkYWhvYW5zIHdpdGggYW4gaW5jb21lIGF0IDEzMyUgb3IgbGVzcyBvZiB0aGUgZmVkZXJhbCBwb3ZlcnR5IGxpbWl0IChGUEwpIHRvIGVucm9sbCBpbiBNZWRpY2FpZC4gU2VydmljZXMgZm9yXG5leHBhbnNpb24gYXJlIG91dGxpbmVkIGluIENoYXB0ZXIgMiwgVGl0bGUgNTYsIElkYWhvIENvZGUsIGFuZCB3ZW50IGxpdmUgb24gSmFudWFyeSAxLCAyMDIwIn0sIHsic3ViX3Byb2dyYW0iOiAiSG9zcGl0YWwgQXNzZXNzbWVudCIsICJ0ZXh0IjogIkNyZWF0ZWQgZHVyaW5nIHRoZSAyMDI2IGxlZ2lzbGF0aXZlIHNlc3Npb24sIHRoaXMgcHJvZ3JhbSBzZXJ2ZXMgdG8gaWRlbnRpZnkgYW5kIHRyYWNrIGFwcHJvcHJpYXRpb24gYW5kXG5leHBlbmRpdHVyZXMgcmVsYXRlZCB0byB0aGUgdXBwZXItcGF5bWVudCBsaW1pdCAoVVBMKSBzdXBwbGVtZW50YWwgcGF5bWVudCBwcm9ncmFtLiBNZWRpY2FpZCBVUEwgc3VwcGxlbWVudGFsIHBheW1lbnRzIGFyZSBhZGRpdGlvbmFsLFxubm9uLWNsYWltLWJhc2VkIGZ1bmRzIHN0YXRlcyBwYXkgdG8gcHJvdmlkZXJzIChob3NwaXRhbHMsIGludGVybWVkaWF0ZSBjYXJlIGZhY2lsaXRpZXMsIG51cnNpbmcgZmFjaWxpdGllcykgaW4gZmVlLWZvci1zZXJ2aWNlIChGRlMpIG1vZGVscy5cblRoZXNlIHBheW1lbnRzIGNvdmVyIHRoZSBnYXAgYmV0d2VlbiBiYXNlIE1lZGljYWlkIHJhdGVzIGFuZCB3aGF0IE1lZGljYXJlIHdvdWxkIGhhdmUgcGFpZCBmb3IgdGhlIHNhbWUgc2VydmljZXMuIEFsc28gaW5jbHVkZWQgaW4gdGhpc1xucHJvZ3JhbSBhcmUgRGlzcHJvcG9ydGlvbmF0ZSBTaGFyZSBIb3NwaXRhbCAoRFNIKSBwYXltZW50cywgd2hpY2ggYXJlIHJlcXVpcmVkIHBheW0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJFeHRlbmRlZCBFbXBsb3ltZW50IFNlcnZpY2VzIiwgInRleHQiOiAiRXh0ZW5kZWQgRW1wbG95bWVudCBTZXJ2aWNlcyAoRUVTKSBpcyBhIHByb2dyYW0gZGVzaWduZWQgdG8gcHJvdmlkZSByZW11bmVyYXRpdmUgd29yayBhbmQgc3VwcG9ydCBmb3JcbmFkdWx0cyB3aXRoIGRldmVsb3BtZW50YWwgZGlzYWJpbGl0aWVzIG9yIG1lbnRhbCBpbGxuZXNzIHdobyBsYWNrIHRoZSBza2lsbHMgYW5kIGV4cGVyaWVuY2UgdG8gb2J0YWluIGFuZCBtYWludGFpbiBlbXBsb3ltZW50IGluIHRoZVxuY29tcGV0aXRpdmUgbGFib3IgbWFya2V0LiBUaGlzIHByb2dyYW0gd2FzIHByZXZpb3VzbHkgbmFtZWQgXCJDb21tdW5pdHkgU3VwcG9ydGVkIEVtcGxveW1lbnQuXCIgW1N0YXR1dG9yeSBBdXRob3JpdHk6IENoYXB0ZXIgMTcsIFRpdGxlXG41NiwgSWRhaG8gQ29kZSBdIFRoZSBidWRnZXRlZCBwcm9ncmFtIEVFUyB3YXMgbW92ZWQgdG8gdGhlIERpdmlzaW9uIG9mIE1lZGljYWlkIGZyb20gdGhlIERpdmlzaW9uIG9mIFNlcnZpY2VzIGZvciB0aGUgRGV2ZWxvcG1lbnRhbGx5XG5EaXNhYmxlZCBiZWdpbm5pbmcgaW4gRlkgMjAyNiJ9XX0sIHsiYXJlYSI6ICJIZWFsdGggYW5kIEh1bWFuIFNlcnZpY2VzIiwgImFnZW5jeSI6ICJTdGF0ZSBJbmRlcGVuZGVudCBMaXZpbmcgQ291bmNpbCIsICJmdHAiOiA0LjAsICJnZiI6IDI4MzYwMCwgImRlZCI6IDQwNzAwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDY5MDYwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuNTg5MywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzExMzIiLCAiUzE0MzUiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEb21lc3RpYyBWaW9sZW5jZSBDb3VuY2lsIiwgInRleHQiOiAiVGhlIFN0YXRlIEluZGVwZW5kZW50IExpdmluZyBDb3VuY2lsIChTSUxDKSBwcm9tb3RlcyBpbmRlcGVuZGVudCBsaXZpbmcgdG8gbWF4aW1pemUgdGhlIGluZGVwZW5kZW5jZSBhbmRcbnByb2R1Y3Rpdml0eSBvZiBpbmRpdmlkdWFscyB3aXRoIGRpc2FiaWxpdGllcyBhbmQgdGhlIGludGVncmF0aW9uIGFuZCBmdWxsIGluY2x1c2lvbiBvZiBpbmRpdmlkdWFscyB3aXRoIGRpc2FiaWxpdGllcyBpbnRvIG1haW5zdHJlYW0gc29jaWV0eS5cbltTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDU2LTEyMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJhcmVhIjogIlB1YmxpYyBTYWZldHkiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgQ29ycmVjdGlvbiIsICJmdHAiOiAyMjU0LjM1LCAiZ2YiOiAzODU4MDY4MDAsICJkZWQiOiA0MDcxMzMwMCwgImZlZCI6IDI0OTQ2MDAsICJ0b3RhbCI6IDQyOTAxNDcwMCwgImZlZF9zaGFyZSI6IDAuMDA1OCwgImRlZF9zaGFyZSI6IDAuMDk0OSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNjEiLCAiUzEzODgiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMyBvZiBTMTM4OCByZXF1aXJlZCBhIHJlcG9ydCBvbiBDb21tdW5pdHkgUmVlbnRyeSBDZW50ZXIgZWZmaWNpZW5jeSBhbmRcbmVmZmVjdGl2ZW5lc3MsIGFuZCByZXF1aXJlZCB0aGUgZGVwYXJ0bWVudCB0byBpbml0aWF0ZSBhIHJlcXVlc3QgZm9yIGluZm9ybWF0aW9uIHRvIGV2YWx1YXRlIHBvdGVudGlhbCBvdXRzb3VyY2luZyBtb2RlbHMifSwgeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzEzNjEgdGhhdCBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zLCBwcm92aWRlZCB0aGF0IG1vbmV5cyBhcHByb3ByaWF0ZWQgdG8gdGhlIENvdW50eSBhbmQgT3V0LW9mLVN0YXRlIFBsYWNlbWVudCBQcm9ncmFtIGFuZFxudGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBtYXkgb25seSBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHNhaWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEb21lc3RpYyBWaW9sZW5jZSBDb3VuY2lsIiwgInRleHQiOiAiTWFuYWdlbWVudCBTZXJ2aWNlcyBpbmNsdWRlcyB0aGUgQm9hcmQgb2YgQ29ycmVjdGlvbiBhbmQgdGhlIERpcmVjdG9yJ3MgT2ZmaWNlLiBJdCBhbHNvIGhhcyBkZXBhcnRtZW50LXdpZGVcbm92ZXJzaWdodCBvZiBodW1hbiByZXNvdXJjZXMsIGluZm9ybWF0aW9uIHNlcnZpY2VzLCBjb25zdHJ1Y3Rpb24sIGZpbmFuY2lhbCBzZXJ2aWNlcywgY2VudHJhbCByZWNvcmRzLCByZXNlYXJjaCBhbmQgcXVhbGl0eSBhc3N1cmFuY2UsIGFuZFxubGVnYWwgc2VydmljZXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJQcmlzb25zIEFkbWluaXN0cmF0aW9uIiwgInRleHQiOiAiUHJpc29ucyBBZG1pbmlzdHJhdGlvbiBoYXMgb3ZlcnNpZ2h0IG92ZXIgSWRhaG8ncyB0ZW4gc3RhdGUgcHJpc29ucy4gSXQgZW5zdXJlcyBjb21wbGlhbmNlIHdpdGggYWxsIHBvbGljaWVzIGFuZFxucHJvY2VkdXJlcywgYW5kIHN0YXRlIGFuZCBmZWRlcmFsIGd1aWRlbGluZXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJJZGFobyBTdGF0ZSBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIklkYWhvIFN0YXRlIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiBpcyB0aGUgc3RhdGUncyBvbGRlc3QgYW5kIGxhcmdlc3Qgc3RhdGUtb3BlcmF0ZWQgZmFjaWxpdHkuIEl0IGlzIHRoZSBwcmltYXJ5IGZhY2lsaXR5XG5mb3IgbG9uZy10ZXJtIG1hbGUsIG1lZGl1bS1jdXN0b2R5IG9mZmVuZGVycy4gSXQgYWxzbyBoYXMgc3BlY2lhbC11c2UgYmVkcyBmb3IgaW5maXJtYXJ5LCBvdXRwYXRpZW50IG1lbnRhbCBoZWFsdGgsIGFuZCBnZXJpYXRyaWMgaW5tYXRlcy4gVGhlXG5jb21wb3VuZCBpbmNsdWRlcyBhIGNoYXBlbCwgcmVjcmVhdGlvbiBjZW50ZXIsIHNjaG9vbCwgbGFyZ2UgY29ycmVjdGlvbmFsIGluZHVzdHJpZXMgb3BlcmF0aW9uLCBhbmQgYSBtZWRpY2FsIGNsaW5pYy4gVGhlIHNhZmUgb3BlcmF0aW5nXG5jYXBhY2l0eSBhdCBJU0NJIGlzIDEsNTc3IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJJZGFobyBTdGF0ZSBDb3JyZWN0aW9uYWwgQ2VudGVyIC0gQm9pc2UiLCAidGV4dCI6ICJUaGUgSWRhaG8gU3RhdGUgQ29ycmVjdGlvbmFsIENlbnRlciBvcGVuZWQgaW4gSnVseSAyMDAwIGFzIHRoZSBmaXJzdCBzdGF0ZS1vd25lZCwgcHJpdmF0ZWx5IG9wZXJhdGVkIGZhY2lsaXR5LiBJdFxud2FzIGJ1aWx0IG9uIHN0YXRlIHByb3BlcnR5IGJ5IHRoZSBDb3JyZWN0aW9ucyBDb3JwLiBvZiBBbWVyaWNhIChDQ0EpIGFuZCBvcGVyYXRlZCBieSBDQ0EgdW50aWwgSnVseSAxLCAyMDE0LCBhdCB3aGljaCB0aW1lIHRoZSBEZXBhcnRtZW50XG5vZiBDb3JyZWN0aW9uIGFzc3VtZWQgZnVsbCBtYW5hZ2VtZW50IGFuZCBvcGVyYXRpb24uIEl0IGhvdXNlcyBjbG9zZSwgbWVkaXVtLCBhbmQgbWluaW11bS1jdXN0b2R5IG1hbGUgb2ZmZW5kZXJzLiBUaGUgc2FmZSBvcGVyYXRpbmdcbmNhcGFjaXR5IGF0IHRoaXMgZmFjaWxpdHkgaXMgMiwxMjggYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIE9yb2Zpbm8iLCAidGV4dCI6ICJJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBPcm9maW5vIGlzIGEgbW9kaWZpZWQgc3RhdGUgc2Nob29sIGFuZCBob3NwaXRhbCBtZW50YWwgaGVhbHRoIGJ1aWxkaW5nLiBBIG5ld1xud2luZyB3YXMgYWRkZWQgaW4gMTk4OC4gSXQgaXMgYSBzdGFuZGFyZCBwcmlzb24gZGVzaWduZWQgZm9yIG1hbGUgaW5tYXRlcyBvZiBhbGwgY3VzdG9keSBsZXZlbHMgaW5jbHVkaW5nIHByb3RlY3RpdmUgY3VzdG9keSBpbm1hdGVzLiBJQ0lPXG5vZmZlcnMgdm9jYXRpb25hbCB3b3JrIHByb2dyYW1zLCBlZHVjYXRpb24sIGFuZCBvdGhlciBwcm9ncmFtbWluZyBvcHBvcnR1bml0aWVzIHdpdGggYSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBvZiA1ODggYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIE1heGltdW0gU2VjdXJpdHkgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIklkYWhvIE1heGltdW0gU2VjdXJpdHkgSW5zdGl0dXRpb24gLSBCb2lzZSBvcGVuZWQgaW4gMTk4OSB0byBjb25maW5lIElkYWhvJ3MgaGlnaGVzdCByaXNrIG9mZmVuZGVycy4gVGhlIHByaXNvblxuaXMgbG9jYXRlZCB3aXRoaW4gYSBkb3VibGUgcGVyaW1ldGVyIGZlbmNlIHJlaW5mb3JjZWQgd2l0aCByYXpvciB3aXJlIGFuZCBhbiBlbGVjdHJvbmljIGRldGVjdGlvbiBzeXN0ZW0uIFRoZSBpbm1hdGUgcG9wdWxhdGlvbiBpcyBjb21wb3NlZFxub2YgYSBsYXJnZSBudW1iZXIgb2YgbWVudGFsIGhlYWx0aCBpbm1hdGVzLCBpbmNsdWRpbmcgY2l2aWwgY29tbWl0bWVudHMuIElNU0kgaGFzIHJlc3RyaWN0aXZlIGhvdXNpbmcgYmVkcyBkZWRpY2F0ZWQgdG8gYWRtaW5pc3RyYXRpdmVcbnNlZ3JlZ2F0aW9uIGFuZCBkZWF0aCByb3cuIFRoZSByZW1haW5pbmcgYmVkcyBhcmUgYWxsb2NhdGVkIGZvciBjbG9zZS1jdXN0b2R5LCBnZW5lcmFsIHBvcHVsYXRpb24gaW5tYXRlcy4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0XG5JTVNJIGlzIDUwOCBiZWRzLiBPZiB0aGF0IG51bWJlciwgMzIgYmVkcyBhcmUgZGVkaWNhdGVkIGZvciBtZW50YWwgaGVhbHRoLCAifSwgeyJzdWJfcHJvZ3JhbSI6ICJOb3J0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBDb3R0b253b29kIiwgInRleHQiOiAiTm9ydGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQ290dG9ud29vZCBpcyBhIGZvcm1lciBtaWxpdGFyeSByYWRhciBzdGF0aW9uIG5vcnRoIG9mIHRoZSB0b3duIG9mXG5Db3R0b253b29kLiBUaGlzIGlzIGEgcHJvZ3JhbS1zcGVjaWZpYyBwcmlzb24gZGVzaWduZWQgZm9yIG1hbGUgaW5tYXRlcyBzZW50ZW5jZWQgdG8gYSByZXRhaW5lZCBqdXJpc2RpY3Rpb24gY29tbWl0bWVudCAocmlkZXIpIGJ5IHRoZVxuY291cnQuIEl0IHByb3ZpZGVzIGEgc2VudGVuY2luZyBhbHRlcm5hdGl2ZSBmb3IgdGhlIGNvdXJ0cyB0byB0YXJnZXQgdGhvc2Ugb2ZmZW5kZXJzIHdobyBtaWdodCwgYWZ0ZXIgYSBwZXJpb2Qgb2YgcHJvZ3JhbW1pbmcgYW5kIGV2YWx1YXRpb24sIGJlXG52aWFibGUgY2FuZGlkYXRlcyBmb3IgcHJvYmF0aW9uIHJhdGhlciB0aGFuIGluY2FyY2VyYXRpb24uIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBhdCBOSUNJIGlzIDQyOCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSAoU0lDSSkgaXMgYSB3b3JraW5nIGZhY2lsaXR5IHdoaWNoIGhvdXNlcyAzNzIgbWFsZSBtaW5pbXVtLWN1c3RvZHlcbmlubWF0ZXMgaW4gYSBkb3JtaXRvcnkgc2V0dGluZy4gU0lDSSBpbm1hdGVzIHdvcmsgaW4gcm9hZCBjcmV3cyBmb3IgdGhlIElkYWhvIFRyYW5zcG9ydGF0aW9uIERlcGFydG1lbnQgYW5kIGluIGZpcmVmaWdodGluZyBjcmV3cyBmb3IgdGhlIFVTXG5Gb3Jlc3QgU2VydmljZS4gU0lDSSBhbHNvIGNvbnRhaW5zIDM5NiBiZWRzIGZvciBmZW1hbGVzLCBob3VzaW5nIG1pbmltdW0gYW5kIG1lZGl1bS1jdXN0b2R5IGlubWF0ZXMuIEluIDIwMjMsIHRoZSBFYXN0IGRvcm0gd2FzXG5jb21wbGV0ZWQgd2hpY2ggaG91c2VzIGFuIGFkZGl0aW9uYWwgNzIgbWluaW11bSBjdXN0b2R5IG1hbGUgYmVkcyBUaGUgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgb2YgdGhlIHByaXNvbiBpcyA4NDAgYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiU3QuIEFudGhvbnkgV29yayBDYW1wIChTQVdDKSwgbG9jYXRlZCBpbiB0aGUgZWFzdGVybiBJZGFobyB0b3duIG9mIFN0LiBBbnRob255LCBpcyBkZXNpZ25lZCBmb3IgbG93LXJpc2tcbm1pbmltdW0tY3VzdG9keSBtYWxlIGlubWF0ZXMuIFRoZSBwcm9ncmFtIGZvY3VzIGlzIHRvIHByb3ZpZGUgd29yayB0aGVyYXB5IGJ5IG9mZmVyaW5nIGZ1bGwtdGltZSwgY29uc3RydWN0aXZlLCBwYWlkIGVtcGxveW1lbnQgdG8gaW5tYXRlc1xudGhyb3VnaCBjb250cmFjdGVkIHdvcmsgYW5kIHB1YmxpYyBzZXJ2aWNlIHByb2plY3RzIHdpdGggZ292ZXJubWVudCBhZ2VuY2llcywgbm9uLXByb2ZpdHMsIGFuZCBwcml2YXRlIGVtcGxveWVycy4gU0FXQyBhbHNvIGZ1bmN0aW9ucyBhc1xuYSBwcmUtcmVsZWFzZSBjZW50ZXIsIG9mZmVyaW5nIHN1YnN0YW5jZSBhYnVzZSB0cmVhdG1lbnQsIGFjYWRlbWljLCBhbmQgdm9jYXRpb25hbCBlZHVjYXRpb24uIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBhdCB0aGlzIGZhY2lsaXR5IGlzXG40MDIgYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiUG9jYXRlbGxvIFdvbWVuJ3MgQ29ycmVjdGlvbmFsIENlbnRlciAoUFdDQykgaXMgdGhlIHN0YXRlJ3MgZmlyc3QgZmFjaWxpdHkgZGVzaWduZWQgc3BlY2lmaWNhbGx5IHRvIG1lZXQgdGhlXG51bmlxdWUgcHJvZ3JhbSBuZWVkcyBvZiBmZW1hbGUgb2ZmZW5kZXJzLiBJdCBvcGVuZWQgaW4gMTk5NCBhbmQgaG91c2VzIGFsbCBjdXN0b2R5IGxldmVscy4gVGhlIGluc3RpdHV0aW9uIGhhcyBpdHMgb3duIHJlY2VwdGlvbiBhbmRcbmRpYWdub3N0aWMgY2VudGVyLCBwcmUtcmVsZWFzZSBwcm9ncmFtLCBhbmQgd29yayBjZW50ZXIgcmVsZWFzZS4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0IFBXQ0MgaXMgMzI4IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBTb3V0aCBCb2lzZSBXb21lbidzIENvcnJlY3Rpb25hbCBDZW50ZXIgKFNCV0NDKSBob3VzZXMgZmVtYWxlcyB1bmRlciBjb3VydC1yZXRhaW5lZCBqdXJpc2RpY3Rpb24uIEl0XG5wcm92aWRlcyBhIHNlbnRlbmNpbmcgYWx0ZXJuYXRpdmUgZm9yIHRoZSBjb3VydHMgdG8gdGFyZ2V0IHRob3NlIG9mZmVuZGVycyB3aG8gbWlnaHQsIGFmdGVyIGEgcGVyaW9kIG9mIHByb2dyYW1taW5nIGFuZCBldmFsdWF0aW9uLCBiZSB2aWFibGVcbmNhbmRpZGF0ZXMgZm9yIHByb2JhdGlvbiByYXRoZXIgdGhhbiBpbmNhcmNlcmF0aW9uLiBUaGUgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgYXQgU0JXQ0MgaXMgMzA5IGJlZHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBNb3VudGFpbiBWaWV3IFRyYW5zZm9ybWF0aW9uIENlbnRlciAoTVZUQykgaXMgdXNlZCB0byBob3VzZSByZXRhaW5lZCBqdXJpc2RpY3Rpb24gKHJpZGVyKSBvZmZlbmRlcnMgYW5kXG5oYXMgYSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBvZiA0NDIgYmVkcy4gTVZUQyB3YXMgY3JlYXRlZCB1bmRlciB0aGUgRGl2aXNpb24gb2YgUHJpc29ucyBzdGFydGluZyBpbiBGWSAyMDI0LCBhbmQgd2FzIHByZXZpb3VzbHkga25vd25cbmFzIHRoZSBDb3JyZWN0aW9uYWwgQWx0ZXJuYXRpdmUgUGxhY2VtZW50IFByb2dyYW0gKENBUFApLiBJdCB3YXMgYSBwcml2YXRlbHkgb3BlcmF0ZWQgdHJlYXRtZW50IGZhY2lsaXR5IHRoYXQgcHJvdmlkZWQgaW50ZW5zaXZlIHJlc2lkZW50aWFsXG5zdWJzdGFuY2UgYWJ1c2UgYW5kIGNvZ25pdGl2ZSBwcm9ncmFtbWluZyBmb3Igb2ZmZW5kZXJzLiBUaGlzIGZhY2lsaXR5IGhhcyBhbHNvIGJlZW4gdXNlZCB0byBwcm92aWRlIHNhbmN0aW9uIGFuZCBpbnRlcnZlbnRpb24gY2FwYWJpbGl0aWVzXG50byBwcm9iYXRpb24gYW5kIHBhcm9sZSBvZmZlbmRlcnMifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgU3VwZXJ2aXNpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gaXMgcmVzcG9uc2libGUgZm9yIHN1cGVydmlzaW5nIGFsbCBhZHVsdCBmZWxvbnkgcHJvYmF0aW9uZXJzIGFuZCBwYXJvbGVlcyB0byBzdXBwb3J0IGNvbW11bml0eVxuc2FmZXR5IGFuZCB0byBwcm92aWRlIG9mZmVuZGVycyBvcHBvcnR1bml0aWVzIGZvciBzdWNjZXNzZnVsIGNoYW5nZS4gVGhlIGRpdmlzaW9uIHByZXBhcmVzIHByZXNlbnRlbmNlIGludmVzdGlnYXRpb24gcmVwb3J0cyBmb3IgY291cnRzIGluXG5JZGFobydzIHNldmVuIGp1ZGljaWFsIGRpc3RyaWN0cy4gQ291bnNlbG9ycyBwcm92aWRlIGdyb3VwIGFuZCBpbmRpdmlkdWFsIHN1YnN0YW5jZSBhYnVzZSB0cmVhdG1lbnQgb3Igb3RoZXIgdHlwZXMgb2YgdHJlYXRtZW50LiBUaGVyZSBhcmVcbnNldmVuIGRpc3RyaWN0IG9mZmljZXMgd2l0aCAxNiBzYXRlbGxpdGUgb2ZmaWNlcyBhcm91bmQgdGhlIHN0YXRlLiBUaGlzIHByb2dyYW0gcHJldmlvdXNseSBhY2NvdW50ZWQgZm9yIHRoZSBjb250cmFjdCBjb3N0cyBvZiBvcGVyYXRpbmcgc2V2ZW5cbkNvbW11bml0eSBJbnRlcnZlbnRpb24gU3RhdGlvbnMgKENJU3MpIHN0YXRld2lkZTogb25lIGluIGVhY2gganVkaWNpYWwgIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29tbXVuaXR5IFJlZW50cnkgQ2VudGVycyIsICJ0ZXh0IjogIlRoZSBkZXBhcnRtZW50IHN1cGVydmlzZXMgZmVsb255IG9mZmVuZGVycyBpbiBmaXZlIGNvbW11bml0eSByZWVudHJ5IGNlbnRlcnMgKENSQ3MpIGxvY2F0ZWQgaW4gTmFtcGEsIEJvaXNlXG4oMiksIElkYWhvIEZhbGxzLCBhbmQgVHdpbiBGYWxscy4gQSBzaXh0aCBjb21tdW5pdHkgcmVlbnRyeSBjZW50ZXIgaXMgZXhwZWN0ZWQgdG8gb3BlbiBpbiBQb2NhdGVsbG8gaW4gRlkgMjAyNy4gVGhlc2UgZmFjaWxpdGllcyBob3VzZSBjb3VydC1cbnJldGFpbmVkIGp1cmlzZGljdGlvbmFsIG9mZmVuZGVycyB0b2dldGhlciB3aXRoIG9mZmVuZGVycyBwcmVwYXJpbmcgZm9yIHBhcm9sZSBmcm9tIHN0YXRlIHByaXNvbnMuIFRoZXNlIGFyZSByZXNpZGVudGlhbCBmYWNpbGl0aWVzIHRoYXQgYWxsb3dcbm9mZmVuZGVycyB0byB3b3JrIHdoaWxlIGJlY29taW5nIHJldW5pdGVkIHdpdGggZmFtaWxpZXMgYW5kIHRoZSBjb21tdW5pdHksIGFuZCBwcm92aWRlIHByb3RlY3Rpb24gdG8gdGhlIGNvbW11bml0eSB0aHJvdWdoIGhpZ2hcbmFjY291bnRhYmlsaXR5IGFuZCBzZWN1cml0eSBvZiB0aGUgb2ZmZW5kZXIgaW4gdGhlIENSQyBwcm9ncmFtLiBUaGUgdG90YWwgc2FmZSAifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgUmVlbnRyeSBDZW50ZXJzIiwgInRleHQiOiAiVGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBpbmNsdWRlcyBjb3N0cyBwYWlkIHRvIHRoZSBmb3ItcHJvZml0LCBwcml2YXRlIG1lZGljYWwgc2VydmljZSBwcm92aWRlciBmb3IgSWRhaG9cbm9mZmVuZGVycyBpbiBzdGF0ZSBwcmlzb25zIGFuZCBjb21tdW5pdHkgcmVlbnRyeSBjZW50ZXJzIn1dLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIlN0YXRlIFByaXNvbnMiLCAiZ2YiOiAxNzI1NzQ5MDAsICJkZWQiOiAxODI3ODIwMCwgImZlZCI6IDE0OTkzMDAsICJ0b3RhbCI6IDE5MjM1MjQwMCwgImZlZF9zaGFyZSI6IDAuMDA3OCwgImRlZF9zaGFyZSI6IDAuMDk1LCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxMzg4Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTM2MSB0aGF0IGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMsIHByb3ZpZGVkIHRoYXQgbW9uZXlzIGFwcHJvcHJpYXRlZCB0byB0aGUgQ291bnR5IGFuZCBPdXQtb2YtU3RhdGUgUGxhY2VtZW50IFByb2dyYW0gYW5kXG50aGUgTWVkaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIG1heSBvbmx5IGJlIHRyYW5zZmVycmVkIGJldHdlZW4gc2FpZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlByaXNvbnMgQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJQcmlzb25zIEFkbWluaXN0cmF0aW9uIGhhcyBvdmVyc2lnaHQgb3ZlciBJZGFobydzIHRlbiBzdGF0ZSBwcmlzb25zLiBJdCBlbnN1cmVzIGNvbXBsaWFuY2Ugd2l0aCBhbGwgcG9saWNpZXMgYW5kXG5wcm9jZWR1cmVzLCBhbmQgc3RhdGUgYW5kIGZlZGVyYWwgZ3VpZGVsaW5lcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIFN0YXRlIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiSWRhaG8gU3RhdGUgQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIGlzIHRoZSBzdGF0ZSdzIG9sZGVzdCBhbmQgbGFyZ2VzdCBzdGF0ZS1vcGVyYXRlZCBmYWNpbGl0eS4gSXQgaXMgdGhlIHByaW1hcnkgZmFjaWxpdHlcbmZvciBsb25nLXRlcm0gbWFsZSwgbWVkaXVtLWN1c3RvZHkgb2ZmZW5kZXJzLiBJdCBhbHNvIGhhcyBzcGVjaWFsLXVzZSBiZWRzIGZvciBpbmZpcm1hcnksIG91dHBhdGllbnQgbWVudGFsIGhlYWx0aCwgYW5kIGdlcmlhdHJpYyBpbm1hdGVzLiBUaGVcbmNvbXBvdW5kIGluY2x1ZGVzIGEgY2hhcGVsLCByZWNyZWF0aW9uIGNlbnRlciwgc2Nob29sLCBsYXJnZSBjb3JyZWN0aW9uYWwgaW5kdXN0cmllcyBvcGVyYXRpb24sIGFuZCBhIG1lZGljYWwgY2xpbmljLiBUaGUgc2FmZSBvcGVyYXRpbmdcbmNhcGFjaXR5IGF0IElTQ0kgaXMgMSw1NzcgYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIklkYWhvIFN0YXRlIENvcnJlY3Rpb25hbCBDZW50ZXIgLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBJZGFobyBTdGF0ZSBDb3JyZWN0aW9uYWwgQ2VudGVyIG9wZW5lZCBpbiBKdWx5IDIwMDAgYXMgdGhlIGZpcnN0IHN0YXRlLW93bmVkLCBwcml2YXRlbHkgb3BlcmF0ZWQgZmFjaWxpdHkuIEl0XG53YXMgYnVpbHQgb24gc3RhdGUgcHJvcGVydHkgYnkgdGhlIENvcnJlY3Rpb25zIENvcnAuIG9mIEFtZXJpY2EgKENDQSkgYW5kIG9wZXJhdGVkIGJ5IENDQSB1bnRpbCBKdWx5IDEsIDIwMTQsIGF0IHdoaWNoIHRpbWUgdGhlIERlcGFydG1lbnRcbm9mIENvcnJlY3Rpb24gYXNzdW1lZCBmdWxsIG1hbmFnZW1lbnQgYW5kIG9wZXJhdGlvbi4gSXQgaG91c2VzIGNsb3NlLCBtZWRpdW0sIGFuZCBtaW5pbXVtLWN1c3RvZHkgbWFsZSBvZmZlbmRlcnMuIFRoZSBzYWZlIG9wZXJhdGluZ1xuY2FwYWNpdHkgYXQgdGhpcyBmYWNpbGl0eSBpcyAyLDEyOCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gT3JvZmlubyIsICJ0ZXh0IjogIklkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIE9yb2Zpbm8gaXMgYSBtb2RpZmllZCBzdGF0ZSBzY2hvb2wgYW5kIGhvc3BpdGFsIG1lbnRhbCBoZWFsdGggYnVpbGRpbmcuIEEgbmV3XG53aW5nIHdhcyBhZGRlZCBpbiAxOTg4LiBJdCBpcyBhIHN0YW5kYXJkIHByaXNvbiBkZXNpZ25lZCBmb3IgbWFsZSBpbm1hdGVzIG9mIGFsbCBjdXN0b2R5IGxldmVscyBpbmNsdWRpbmcgcHJvdGVjdGl2ZSBjdXN0b2R5IGlubWF0ZXMuIElDSU9cbm9mZmVycyB2b2NhdGlvbmFsIHdvcmsgcHJvZ3JhbXMsIGVkdWNhdGlvbiwgYW5kIG90aGVyIHByb2dyYW1taW5nIG9wcG9ydHVuaXRpZXMgd2l0aCBhIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IG9mIDU4OCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiSWRhaG8gTWF4aW11bSBTZWN1cml0eSBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiSWRhaG8gTWF4aW11bSBTZWN1cml0eSBJbnN0aXR1dGlvbiAtIEJvaXNlIG9wZW5lZCBpbiAxOTg5IHRvIGNvbmZpbmUgSWRhaG8ncyBoaWdoZXN0IHJpc2sgb2ZmZW5kZXJzLiBUaGUgcHJpc29uXG5pcyBsb2NhdGVkIHdpdGhpbiBhIGRvdWJsZSBwZXJpbWV0ZXIgZmVuY2UgcmVpbmZvcmNlZCB3aXRoIHJhem9yIHdpcmUgYW5kIGFuIGVsZWN0cm9uaWMgZGV0ZWN0aW9uIHN5c3RlbS4gVGhlIGlubWF0ZSBwb3B1bGF0aW9uIGlzIGNvbXBvc2VkXG5vZiBhIGxhcmdlIG51bWJlciBvZiBtZW50YWwgaGVhbHRoIGlubWF0ZXMsIGluY2x1ZGluZyBjaXZpbCBjb21taXRtZW50cy4gSU1TSSBoYXMgcmVzdHJpY3RpdmUgaG91c2luZyBiZWRzIGRlZGljYXRlZCB0byBhZG1pbmlzdHJhdGl2ZVxuc2VncmVnYXRpb24gYW5kIGRlYXRoIHJvdy4gVGhlIHJlbWFpbmluZyBiZWRzIGFyZSBhbGxvY2F0ZWQgZm9yIGNsb3NlLWN1c3RvZHksIGdlbmVyYWwgcG9wdWxhdGlvbiBpbm1hdGVzLiBUaGUgc2EifSwgeyJzdWJfcHJvZ3JhbSI6ICJOb3J0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBDb3R0b253b29kIiwgInRleHQiOiAiTm9ydGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQ290dG9ud29vZCBpcyBhIGZvcm1lciBtaWxpdGFyeSByYWRhciBzdGF0aW9uIG5vcnRoIG9mIHRoZSB0b3duIG9mXG5Db3R0b253b29kLiBUaGlzIGlzIGEgcHJvZ3JhbS1zcGVjaWZpYyBwcmlzb24gZGVzaWduZWQgZm9yIG1hbGUgaW5tYXRlcyBzZW50ZW5jZWQgdG8gYSByZXRhaW5lZCBqdXJpc2RpY3Rpb24gY29tbWl0bWVudCAocmlkZXIpIGJ5IHRoZVxuY291cnQuIEl0IHByb3ZpZGVzIGEgc2VudGVuY2luZyBhbHRlcm5hdGl2ZSBmb3IgdGhlIGNvdXJ0cyB0byB0YXJnZXQgdGhvc2Ugb2ZmZW5kZXJzIHdobyBtaWdodCwgYWZ0ZXIgYSBwZXJpb2Qgb2YgcHJvZ3JhbW1pbmcgYW5kIGV2YWx1YXRpb24sIGJlXG52aWFibGUgY2FuZGlkYXRlcyBmb3IgcHJvYmF0aW9uIHJhdGhlciB0aGFuIGluY2FyY2VyYXRpb24uIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBhdCBOSUNJIGlzIDQyOCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSAoU0lDSSkgaXMgYSB3b3JraW5nIGZhY2lsaXR5IHdoaWNoIGhvdXNlcyAzNzIgbWFsZSBtaW5pbXVtLWN1c3RvZHlcbmlubWF0ZXMgaW4gYSBkb3JtaXRvcnkgc2V0dGluZy4gU0lDSSBpbm1hdGVzIHdvcmsgaW4gcm9hZCBjcmV3cyBmb3IgdGhlIElkYWhvIFRyYW5zcG9ydGF0aW9uIERlcGFydG1lbnQgYW5kIGluIGZpcmVmaWdodGluZyBjcmV3cyBmb3IgdGhlIFVTXG5Gb3Jlc3QgU2VydmljZS4gU0lDSSBhbHNvIGNvbnRhaW5zIDM5NiBiZWRzIGZvciBmZW1hbGVzLCBob3VzaW5nIG1pbmltdW0gYW5kIG1lZGl1bS1jdXN0b2R5IGlubWF0ZXMuIEluIDIwMjMsIHRoZSBFYXN0IGRvcm0gd2FzXG5jb21wbGV0ZWQgd2hpY2ggaG91c2VzIGFuIGFkZGl0aW9uYWwgNzIgbWluaW11bSBjdXN0b2R5IG1hbGUgYmVkcyBUaGUgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgb2YgdGhlIHByaXNvbiBpcyA4NDAgYmVkcyJ9LCB7InN1Yl9wcm9ncmFtIjogIlNvdXRoIElkYWhvIENvcnJlY3Rpb25hbCBJbnN0aXR1dGlvbiAtIEJvaXNlIiwgInRleHQiOiAiU3QuIEFudGhvbnkgV29yayBDYW1wIChTQVdDKSwgbG9jYXRlZCBpbiB0aGUgZWFzdGVybiBJZGFobyB0b3duIG9mIFN0LiBBbnRob255LCBpcyBkZXNpZ25lZCBmb3IgbG93LXJpc2tcbm1pbmltdW0tY3VzdG9keSBtYWxlIGlubWF0ZXMuIFRoZSBwcm9ncmFtIGZvY3VzIGlzIHRvIHByb3ZpZGUgd29yayB0aGVyYXB5IGJ5IG9mZmVyaW5nIGZ1bGwtdGltZSwgY29uc3RydWN0aXZlLCBwYWlkIGVtcGxveW1lbnQgdG8gaW5tYXRlc1xudGhyb3VnaCBjb250cmFjdGVkIHdvcmsgYW5kIHB1YmxpYyBzZXJ2aWNlIHByb2plY3RzIHdpdGggZ292ZXJubWVudCBhZ2VuY2llcywgbm9uLXByb2ZpdHMsIGFuZCBwcml2YXRlIGVtcGxveWVycy4gU0FXQyBhbHNvIGZ1bmN0aW9ucyBhc1xuYSBwcmUtcmVsZWFzZSBjZW50ZXIsIG9mZmVyaW5nIHN1YnN0YW5jZSBhYnVzZSB0cmVhdG1lbnQsIGFjYWRlbWljLCBhbmQgdm9jYXRpb25hbCBlZHVjYXRpb24uIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2kifSwgeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlBvY2F0ZWxsbyBXb21lbidzIENvcnJlY3Rpb25hbCBDZW50ZXIgKFBXQ0MpIGlzIHRoZSBzdGF0ZSdzIGZpcnN0IGZhY2lsaXR5IGRlc2lnbmVkIHNwZWNpZmljYWxseSB0byBtZWV0IHRoZVxudW5pcXVlIHByb2dyYW0gbmVlZHMgb2YgZmVtYWxlIG9mZmVuZGVycy4gSXQgb3BlbmVkIGluIDE5OTQgYW5kIGhvdXNlcyBhbGwgY3VzdG9keSBsZXZlbHMuIFRoZSBpbnN0aXR1dGlvbiBoYXMgaXRzIG93biByZWNlcHRpb24gYW5kXG5kaWFnbm9zdGljIGNlbnRlciwgcHJlLXJlbGVhc2UgcHJvZ3JhbSwgYW5kIHdvcmsgY2VudGVyIHJlbGVhc2UuIFRoZSBzYWZlIG9wZXJhdGluZyBjYXBhY2l0eSBhdCBQV0NDIGlzIDMyOCBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJUaGUgU291dGggQm9pc2UgV29tZW4ncyBDb3JyZWN0aW9uYWwgQ2VudGVyIChTQldDQykgaG91c2VzIGZlbWFsZXMgdW5kZXIgY291cnQtcmV0YWluZWQganVyaXNkaWN0aW9uLiBJdFxucHJvdmlkZXMgYSBzZW50ZW5jaW5nIGFsdGVybmF0aXZlIGZvciB0aGUgY291cnRzIHRvIHRhcmdldCB0aG9zZSBvZmZlbmRlcnMgd2hvIG1pZ2h0LCBhZnRlciBhIHBlcmlvZCBvZiBwcm9ncmFtbWluZyBhbmQgZXZhbHVhdGlvbiwgYmUgdmlhYmxlXG5jYW5kaWRhdGVzIGZvciBwcm9iYXRpb24gcmF0aGVyIHRoYW4gaW5jYXJjZXJhdGlvbi4gVGhlIHNhZmUgb3BlcmF0aW5nIGNhcGFjaXR5IGF0IFNCV0NDIGlzIDMwOSBiZWRzIn0sIHsic3ViX3Byb2dyYW0iOiAiU291dGggSWRhaG8gQ29ycmVjdGlvbmFsIEluc3RpdHV0aW9uIC0gQm9pc2UiLCAidGV4dCI6ICJUaGUgTW91bnRhaW4gVmlldyBUcmFuc2Zvcm1hdGlvbiBDZW50ZXIgKE1WVEMpIGlzIHVzZWQgdG8gaG91c2UgcmV0YWluZWQganVyaXNkaWN0aW9uIChyaWRlcikgb2ZmZW5kZXJzIGFuZFxuaGFzIGEgc2FmZSBvcGVyYXRpbmcgY2FwYWNpdHkgb2YgNDQyIGJlZHMuIE1WVEMgd2FzIGNyZWF0ZWQgdW5kZXIgdGhlIERpdmlzaW9uIG9mIFByaXNvbnMgc3RhcnRpbmcgaW4gRlkgMjAyNCwgYW5kIHdhcyBwcmV2aW91c2x5IGtub3duXG5hcyB0aGUgQ29ycmVjdGlvbmFsIEFsdGVybmF0aXZlIFBsYWNlbWVudCBQcm9ncmFtIChDQVBQKS4gSXQgd2FzIGEgcHJpdmF0ZWx5IG9wZXJhdGVkIHRyZWF0bWVudCBmYWNpbGl0eSB0aGF0IHByb3ZpZGVkIGludGVuc2l2ZSByZXNpZGVudGlhbFxuc3Vic3RhbmNlIGFidXNlIGFuZCBjb2duaXRpdmUgcHJvZ3JhbW1pbmcgZm9yIG9mZmVuZGVycy4gVGhpcyBmYWNpbGl0eSBoYXMgYWxzbyBiZWVuIHVzZWQgdG8gcHJvdmlkZSBzYW5jdGlvbiBhbmQgaSJ9XX0sIHsibmFtZSI6ICJNZWRpY2FsIFNlcnZpY2VzIiwgImdmIjogNzI3MjQ4MDAsICJkZWQiOiAxMzUwMDAsICJmZWQiOiAwLCAidG90YWwiOiA3Mjg1OTgwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMDAxOSwgImJpbGxzIjogWyJTMTM2MSIsICJTMTM4OCJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzEzNjEgdGhhdCBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zLCBwcm92aWRlZCB0aGF0IG1vbmV5cyBhcHByb3ByaWF0ZWQgdG8gdGhlIENvdW50eSBhbmQgT3V0LW9mLVN0YXRlIFBsYWNlbWVudCBQcm9ncmFtIGFuZFxudGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBtYXkgb25seSBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHNhaWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgUmVlbnRyeSBDZW50ZXJzIiwgInRleHQiOiAiVGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBpbmNsdWRlcyBjb3N0cyBwYWlkIHRvIHRoZSBmb3ItcHJvZml0LCBwcml2YXRlIG1lZGljYWwgc2VydmljZSBwcm92aWRlciBmb3IgSWRhaG9cbm9mZmVuZGVycyBpbiBzdGF0ZSBwcmlzb25zIGFuZCBjb21tdW5pdHkgcmVlbnRyeSBjZW50ZXJzIn1dfSwgeyJuYW1lIjogIkNvbW11bml0eSBDb3JyZWN0aW9ucyIsICJnZiI6IDQ4NDMzNTAwLCAiZGVkIjogMTkwNTQ4MDAsICJmZWQiOiA5OTUzMDAsICJ0b3RhbCI6IDY4NDgzNjAwLCAiZmVkX3NoYXJlIjogMC4wMTQ1LCAiZGVkX3NoYXJlIjogMC4yNzgyLCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxMzg4Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDMgb2YgUzEzODggcmVxdWlyZWQgYSByZXBvcnQgb24gQ29tbXVuaXR5IFJlZW50cnkgQ2VudGVyIGVmZmljaWVuY3kgYW5kXG5lZmZlY3RpdmVuZXNzLCBhbmQgcmVxdWlyZWQgdGhlIGRlcGFydG1lbnQgdG8gaW5pdGlhdGUgYSByZXF1ZXN0IGZvciBpbmZvcm1hdGlvbiB0byBldmFsdWF0ZSBwb3RlbnRpYWwgb3V0c291cmNpbmcgbW9kZWxzIn0sIHsidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzYxIHRoYXQgZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcywgcHJvdmlkZWQgdGhhdCBtb25leXMgYXBwcm9wcmlhdGVkIHRvIHRoZSBDb3VudHkgYW5kIE91dC1vZi1TdGF0ZSBQbGFjZW1lbnQgUHJvZ3JhbSBhbmRcbnRoZSBNZWRpY2FsIFNlcnZpY2VzIFByb2dyYW0gbWF5IG9ubHkgYmUgdHJhbnNmZXJyZWQgYmV0d2VlbiBzYWlkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ29tbXVuaXR5IFN1cGVydmlzaW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIGlzIHJlc3BvbnNpYmxlIGZvciBzdXBlcnZpc2luZyBhbGwgYWR1bHQgZmVsb255IHByb2JhdGlvbmVycyBhbmQgcGFyb2xlZXMgdG8gc3VwcG9ydCBjb21tdW5pdHlcbnNhZmV0eSBhbmQgdG8gcHJvdmlkZSBvZmZlbmRlcnMgb3Bwb3J0dW5pdGllcyBmb3Igc3VjY2Vzc2Z1bCBjaGFuZ2UuIFRoZSBkaXZpc2lvbiBwcmVwYXJlcyBwcmVzZW50ZW5jZSBpbnZlc3RpZ2F0aW9uIHJlcG9ydHMgZm9yIGNvdXJ0cyBpblxuSWRhaG8ncyBzZXZlbiBqdWRpY2lhbCBkaXN0cmljdHMuIENvdW5zZWxvcnMgcHJvdmlkZSBncm91cCBhbmQgaW5kaXZpZHVhbCBzdWJzdGFuY2UgYWJ1c2UgdHJlYXRtZW50IG9yIG90aGVyIHR5cGVzIG9mIHRyZWF0bWVudC4gVGhlcmUgYXJlXG5zZXZlbiBkaXN0cmljdCBvZmZpY2VzIHdpdGggMTYgc2F0ZWxsaXRlIG9mZmljZXMgYXJvdW5kIHRoZSBzdGF0ZS4gVGhpcyBwcm9ncmFtIHByZXZpb3VzbHkgYWNjb3VudGVkIGZvciB0aGUgY29udHIifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHkgUmVlbnRyeSBDZW50ZXJzIiwgInRleHQiOiAiVGhlIGRlcGFydG1lbnQgc3VwZXJ2aXNlcyBmZWxvbnkgb2ZmZW5kZXJzIGluIGZpdmUgY29tbXVuaXR5IHJlZW50cnkgY2VudGVycyAoQ1JDcykgbG9jYXRlZCBpbiBOYW1wYSwgQm9pc2VcbigyKSwgSWRhaG8gRmFsbHMsIGFuZCBUd2luIEZhbGxzLiBBIHNpeHRoIGNvbW11bml0eSByZWVudHJ5IGNlbnRlciBpcyBleHBlY3RlZCB0byBvcGVuIGluIFBvY2F0ZWxsbyBpbiBGWSAyMDI3LiBUaGVzZSBmYWNpbGl0aWVzIGhvdXNlIGNvdXJ0LVxucmV0YWluZWQganVyaXNkaWN0aW9uYWwgb2ZmZW5kZXJzIHRvZ2V0aGVyIHdpdGggb2ZmZW5kZXJzIHByZXBhcmluZyBmb3IgcGFyb2xlIGZyb20gc3RhdGUgcHJpc29ucy4gVGhlc2UgYXJlIHJlc2lkZW50aWFsIGZhY2lsaXRpZXMgdGhhdCBhbGxvd1xub2ZmZW5kZXJzIHRvIHdvcmsgd2hpbGUgYmVjb21pbmcgcmV1bml0ZWQgd2l0aCBmYW1pbGllcyBhbmQgdGhlIGNvbW11bml0eSwgYW5kIHByb3ZpZGUgcHJvdGVjdGlvbiB0byB0aGUgY28ifV19LCB7Im5hbWUiOiAiQ291bnR5IGFuZCBPdXQtb2YtU3RhdGUgUGxhY2VtZW50IiwgImdmIjogNTk0Nzc2MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogNTk0Nzc2MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAsICJiaWxscyI6IFsiUzEzNjEiLCAiUzEzODgiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzYxIHRoYXQgZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcywgcHJvdmlkZWQgdGhhdCBtb25leXMgYXBwcm9wcmlhdGVkIHRvIHRoZSBDb3VudHkgYW5kIE91dC1vZi1TdGF0ZSBQbGFjZW1lbnQgUHJvZ3JhbSBhbmRcbnRoZSBNZWRpY2FsIFNlcnZpY2VzIFByb2dyYW0gbWF5IG9ubHkgYmUgdHJhbnNmZXJyZWQgYmV0d2VlbiBzYWlkIHByb2dyYW1zIn0sIHsidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg2ODQgYWRkZWQgYSBuZXcgc2VjdGlvbiBvZiBJZGFobyBDb2RlLCAyMC02MjksIHRvIGF1dGhvcml6ZSBhIGNvdW50eSBzaGVyaWZmJ3Mgb2ZmaWNlIHRvIHNlZWsgcmVpbWJ1cnNlbWVudCBmb3JcbnRoZSBjb3N0cyBvZiBjb2xsZWN0aW5nIGEgcHJpc29uZXIsIHByb2JhdGlvbmVyLCBvciBwYXJvbGVlIGZyb20gb3V0LW9mLXN0YXRlIHdobyBoYXMgYWJzY29uZGVkIGZyb20gdGhlIHN1cGVydmlzaW9uIG9mIHRoZSBJZGFobyBEZXBhcnRtZW50XG5vZiBDb3JyZWN0aW9uLiBINTU2IGFtZW5kZWQgU2VjdGlvbiAyMC0yMzdBLCBJZGFobyBDb2RlLCB0byBjaGFuZ2UgdGhlIHJlaW1idXJzZW1lbnQgcmF0ZSB0aGUgRGVwYXJ0bWVudCBvZiBDb3JyZWN0aW9uIHBheXMgdG9cbmNvdW50aWVzIGZvciBob3VzaW4ifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTb3V0aCBJZGFobyBDb3JyZWN0aW9uYWwgSW5zdGl0dXRpb24gLSBCb2lzZSIsICJ0ZXh0IjogIlRoZSBDb3VudHkgYW5kIE91dC1vZi1TdGF0ZSBQbGFjZW1lbnQgUHJvZ3JhbSBwcm92aWRlcyBmdW5kaW5nIHRvIGhvdXNlIGFuZCBwcm92aWRlIG1lZGljYWwgY2FyZSBmb3Jcbm9mZmVuZGVycyBwbGFjZWQgaW4gY291bnR5IGphaWxzIGFuZCBjb250cmFjdCBvdXQtb2Ytc3RhdGUgcHJpc29uIGJlZHMifV19LCB7Im5hbWUiOiAiTWFuYWdlbWVudCBTZXJ2aWNlcyIsICJnZiI6IDI4NzU3NDAwLCAiZGVkIjogMzI0NTMwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDMyMDAyNzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4xMDE0LCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxMzg4Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTM2MSB0aGF0IGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMsIHByb3ZpZGVkIHRoYXQgbW9uZXlzIGFwcHJvcHJpYXRlZCB0byB0aGUgQ291bnR5IGFuZCBPdXQtb2YtU3RhdGUgUGxhY2VtZW50IFByb2dyYW0gYW5kXG4gdGhlIE1lZGljYWwgU2VydmljZXMgUHJvZ3JhbSBtYXkgb25seSBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHNhaWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEb21lc3RpYyBWaW9sZW5jZSBDb3VuY2lsIiwgInRleHQiOiAiTWFuYWdlbWVudCBTZXJ2aWNlcyBpbmNsdWRlcyB0aGUgQm9hcmQgb2YgQ29ycmVjdGlvbiBhbmQgdGhlIERpcmVjdG9yJ3MgT2ZmaWNlLiBJdCBhbHNvIGhhcyBkZXBhcnRtZW50LXdpZGVcbm92ZXJzaWdodCBvZiBodW1hbiByZXNvdXJjZXMsIGluZm9ybWF0aW9uIHNlcnZpY2VzLCBjb25zdHJ1Y3Rpb24sIGZpbmFuY2lhbCBzZXJ2aWNlcywgY2VudHJhbCByZWNvcmRzLCByZXNlYXJjaCBhbmQgcXVhbGl0eSBhc3N1cmFuY2UsIGFuZFxubGVnYWwgc2VydmljZXMifV19LCB7Im5hbWUiOiAiQ29tbXVuaXR5LUJhc2VkIFN1YnN0YW5jZSBBYnVzZSBUcmVhdG1lbnQiLCAiZ2YiOiAzODM4NjAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDM4Mzg2MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAsICJiaWxscyI6IFsiUzEzNjEiLCAiUzEzODgiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXX1dfSwgeyJhcmVhIjogIlB1YmxpYyBTYWZldHkiLCAiYWdlbmN5IjogIkp1ZGljaWFsIEJyYW5jaCIsICJmdHAiOiA0MTEuMCwgImdmIjogNzQ4OTE2MDAsICJkZWQiOiAyNzk1NjUwMCwgImZlZCI6IDE5NzA1MDAsICJ0b3RhbCI6IDEwNDgxODYwMCwgImZlZF9zaGFyZSI6IDAuMDE4OCwgImRlZF9zaGFyZSI6IDAuMjY2NywgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg0NyIsICJIOTI1Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW10sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiQ291cnQgT3BlcmF0aW9ucyIsICJnZiI6IDcxODAzODAwLCAiZGVkIjogMjc5NTY1MDAsICJmZWQiOiAxOTcwNTAwLCAidG90YWwiOiAxMDE3MzA4MDAsICJmZWRfc2hhcmUiOiAwLjAxOTQsICJkZWRfc2hhcmUiOiAwLjI3NDgsICJiaWxscyI6IFsiSDg0NyIsICJIOTI1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDMgb2YgSDg0NyByZXF1aXJlcyB0aGUgU3VwcmVtZSBDb3VydCB0byB1c2UgdW5jb21taXR0ZWQgYW1vdW50c1xuYXBwcm9wcmlhdGVkIGZvciBqdWRpY2lhbCByZXRpcmVtZW50IGNvbnRyaWJ1dGlvbnMgZm9yIG1vbnRobHkgdHJhbnNmZXJzIHRvIHRoZSBKdWRnZXMnIFJldGlyZW1lbnQgRnVuZCJ9LCB7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDMgb2YgSDg0NyByZXF1aXJlZCB0aGUgU3VwcmVtZSBDb3VydCB0byB1c2UgdW5jb21taXR0ZWQgYW1vdW50c1xuYXBwcm9wcmlhdGVkIGZvciBqdWRpY2lhbCByZXRpcmVtZW50IGNvbnRyaWJ1dGlvbnMgZm9yIG1vbnRobHkgdHJhbnNmZXJzIHRvIHRoZSBKdWRnZXMnIFJldGlyZW1lbnQgRnVuZCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN1cHJlbWUgQ291cnQiLCAidGV4dCI6ICJUaGUgU3VwcmVtZSBDb3VydCBvZiBJZGFobyBpcyB0aGUgc3RhdGUncyBjb3VydCBvZiBsYXN0IHJlc29ydC4gVGhlIENvdXJ0IGhlYXJzIGFwcGVhbHMgZnJvbSBmaW5hbCBkZWNpc2lvbnMgb2ZcbnRoZSBkaXN0cmljdCBjb3VydHMsIGFzIHdlbGwgYXMgZnJvbSBvcmRlcnMgb2YgdGhlIFB1YmxpYyBVdGlsaXRpZXMgQ29tbWlzc2lvbiBhbmQgdGhlIEluZHVzdHJpYWwgQ29tbWlzc2lvbi4gSXQgaGFzIG9yaWdpbmFsIGp1cmlzZGljdGlvbiB0byBoZWFyXG5jbGFpbXMgYWdhaW5zdCB0aGUgc3RhdGUgYW5kIHRvIGlzc3VlIHdyaXRzIG9mIHJldmlldywgbWFuZGFtdXMsIHByb2hpYml0aW9uLCBhbmQgaGFiZWFzIGNvcnB1cywgYW5kIGFsbCB3cml0cyBuZWNlc3NhcnkgZm9yIGNvbXBsZXRlXG5leGVyY2lzZSBvZiBpdHMgYXBwZWxsYXRlIGp1cmlzZGljdGlvbi4gVGhlIENvdXJ0IG1heSBhbHNvIHJldmlldyBkZWNpc2lvbnMgb2YgdGhlIENvdXJ0IG9mIEFwcGVhbHMgdXBvbiBwZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvdXJ0IG9mIEFwcGVhbHMiLCAidGV4dCI6ICJUaGUgQ291cnQgb2YgQXBwZWFscyBoYXMganVyaXNkaWN0aW9uIHRvIGhlYXIgYW5kIGRlY2lkZSBhbGwgY2FzZXMgYXNzaWduZWQgdG8gaXQgYnkgdGhlIFN1cHJlbWUgQ291cnQuXG5Ib3dldmVyLCB0aGUgU3VwcmVtZSBDb3VydCBtYXkgbm90IGFzc2lnbiBjYXNlcyBpbnZvbHZpbmcgdGhlIG9yaWdpbmFsIGp1cmlzZGljdGlvbiBvZiB0aGUgSWRhaG8gU3VwcmVtZSBDb3VydCwgYXBwZWFscyBmcm9tIGltcG9zaXRpb24gb2ZcbnNlbnRlbmNlcyBvZiBjYXBpdGFsIHB1bmlzaG1lbnQgaW4gY3JpbWluYWwgY2FzZXMsIGFwcGVhbHMgZnJvbSB0aGUgSW5kdXN0cmlhbCBDb21taXNzaW9uLCBhcHBlYWxzIGZyb20gdGhlIFB1YmxpYyBVdGlsaXRpZXMgQ29tbWlzc2lvbixcbnJldmlldyBvZiB0aGUgcmVjb21tZW5kYXRvcnkgb3JkZXJzIG9mIHRoZSBCb2FyZCBvZiBDb21taXNzaW9uZXJzIG9mIHRoZSBJZGFobyBTdGF0ZSBCYXIsIGFuZCByZXZpZXcgb2YgcmVjb21tZW5kYXRvcnkgbyJ9LCB7InN1Yl9wcm9ncmFtIjogIkRpc3RyaWN0IENvdXJ0cyIsICJ0ZXh0IjogIkRpc3RyaWN0IGNvdXJ0cyBoYXZlIGp1cmlzZGljdGlvbiBvdmVyIGNpdmlsIGFuZCBjcmltaW5hbCBjYXNlcy4gRGlzdHJpY3QganVkZ2VzIGhlYXIgZmVsb255IGNyaW1pbmFsIGNhc2VzLCBhbmRcbnR5cGljYWxseSBoZWFyIGNpdmlsIGNhc2VzIHdoZXJlIHRoZSBhbW91bnQgb2YgbW9uZXkgaW4gZGlzcHV0ZSBleGNlZWRzICQxMCwwMDAuIERpc3RyaWN0IGp1ZGdlcyBhbHNvIGhlYXIgcG9zdC1jb252aWN0aW9uIHJlbGllZiBhY3Rpb25zIGluXG53aGljaCBhIGRlZmVuZGFudCBpcyBjaGFsbGVuZ2luZyBoaXMgb3IgaGVyIGNvbnZpY3Rpb24gb3IgaW5jYXJjZXJhdGlvbi4gRGlzdHJpY3QgY291cnRzIGhhdmUgYXBwZWxsYXRlIGp1cmlzZGljdGlvbiBvdmVyIGRlY2lzaW9ucyBtYWRlIGJ5XG5tYWdpc3RyYXRlIGp1ZGdlcywgc3RhdGUgYWdlbmNpZXMsIGFuZCBjb3VudHkgYm9hcmRzIn0sIHsic3ViX3Byb2dyYW0iOiAiTWFnaXN0cmF0ZSBEaXZpc2lvbiIsICJ0ZXh0IjogIk1hZ2lzdHJhdGUgY291cnRzIGhhdmUganVyaXNkaWN0aW9uIG92ZXIgY2l2aWwgY2FzZXMgdW5kZXIgJDEwLDAwMCwgYXMgd2VsbCBhcyBtYXR0ZXJzIHJlbGF0aW5nIHRvIGFkb3B0aW9uLCB0aGVcbkNoaWxkIFByb3RlY3RpdmUgQWN0LCBkb21lc3RpYyByZWxhdGlvbnMgKHN1Y2ggYXMgY2hpbGQgY3VzdG9keSwgY2hpbGQgc3VwcG9ydCwgb3IgZGl2b3JjZSksIGd1YXJkaWFuc2hpcHMgYW5kIGNvbnNlcnZhdG9yc2hpcHMsXG5ob3NwaXRhbGl6YXRpb25zIG9mIHRoZSBtZW50YWxseSBpbGwsIHRoZSBKdXZlbmlsZSBDb3JyZWN0aW9ucyBBY3QsIHByb2JhdGUsIGFuZCBzbWFsbCBjbGFpbXMuIE1hZ2lzdHJhdGUgY291cnRzIGFsc28gaGF2ZSBqdXJpc2RpY3Rpb24gb3ZlclxuY3JpbWluYWwgbWlzZGVtZWFub3JzIGFuZCBpbmZyYWN0aW9ucy4gTWFnaXN0cmF0ZSBqdWRnZXMgaGVhciBmZWxvbnkgcHJlbGltaW5hcnkgaGVhcmluZ3MgYW5kIG1heSBpc3N1ZSB3YXJyYW50cyBvZiBhIn0sIHsic3ViX3Byb2dyYW0iOiAiV2F0ZXIgQWRqdWRpY2F0aW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIG1hbmFnZXMgdGhlIHByb2Nlc3MgZXN0YWJsaXNoZWQgdG8gaW52ZW50b3J5IGFsbCBzdXJmYWNlIGFuZCBncm91bmQgd2F0ZXIgcmlnaHRzIGluIHRoZSBTbmFrZVxuUml2ZXIgQmFzaW4gQWRqdWRpY2F0aW9uIChTUkJBKSwgdGhlIENvZXVyIGQnQWxlbmUtU3Bva2FuZSBSaXZlciBCYXNpbiBBZGp1ZGljYXRpb24gKENTUkJBKSwgdGhlIFBhbG91c2UgUml2ZXIgQmFzaW4gQWRqdWRpY2F0aW9uXG4oUFJCQSksIHRoZSBDbGFyayBGb3JrLVBlbmQgT3JlaWxsZSBSaXZlciBCYXNpbnMgQWRqdWRpY2F0aW9uIChDRlBSQkEpLCB0aGUgQmVhciBSaXZlciBCYXNpbnMgQWRqdWRpY2F0aW9uIChCUkJBKSwgYW5kIHRoZSBLb290ZW5haVxuUml2ZXIgQmFzaW5zIEFkanVkaWNhdGlvbiAoS1JCQSkifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pdHktQmFzZWQgU3Vic3RhbmNlIFVzZSBUcmVhdG1lbnQgU2VydmljZXMiLCAidGV4dCI6ICJUcmVhdG1lbnQgQ291cnRzIGRpdmVydCBqdXN0aWNlIGludm9sdmVkIGluZGl2aWR1YWxzLCB3aXRoIHN1YnN0YW5jZSBhYnVzZSBpc3N1ZXMsIGZyb20gcHJpc29uIGFuZCBqYWlsIGludG9cbnRyZWF0bWVudC4gTWF0Y2hpbmcgc3VwZXJ2aXNpb24gYW5kIGJlaGF2aW9yYWwgaGVhbHRoIHRyZWF0bWVudCB0byB0aGUgbmVlZHMgb2YgdGhvc2UgcGFydGljaXBhdGluZyBpbiB0aGUgdHJlYXRtZW50IGNvdXJ0cyBjYW4gaGVscCBicmVha1xudGhlIGN5Y2xlIG9mIGNyaW1pbmFsIGJlaGF2aW9yLCBhbGNvaG9sIGFuZCBkcnVnIHVzZSwgYW5kIGluY2FyY2VyYXRpb24ifSwgeyJzdWJfcHJvZ3JhbSI6ICJTZW5pb3IgSnVkZ2VzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHdhcyBjcmVhdGVkIGR1cmluZyB0aGUgMjAxNiBMZWdpc2xhdGl2ZSBTZXNzaW9uIGluIG9yZGVyIHRvIGJ1ZGdldCBhbmQgYWNjb3VudCBmb3Igc2VuaW9yIGp1ZGdlXG5wZXIgZGllbSBzZXBhcmF0ZWx5IGZyb20gb3RoZXIgYnJhbmNoIGFjdGl2aXRpZXMuIFB1cnN1YW50IHRvIFNlY3Rpb25zIDEtMjIyMSBhbmQgMS0yMDA1LCBJZGFobyBDb2RlLCBhIHNlbmlvciBqdWRnZSBpcyBhIHJldGlyZWQganVkZ2Ugd2hvXG5oYXMgYXBwbGllZCB0byB0aGUgU3VwcmVtZSBDb3VydCB0byBiZSBkZXNpZ25hdGVkIHRvIGNvdmVyIHdvcmtsb2FkIGluY3JlYXNlcywgY291cnQgY2FzZSBiYWNrbG9ncywgYW5kIGxlYXZlIHNjaGVkdWxlcywgZm9yIHdoaWNoIHRoZXlcbmFyZSBwYWlkIGFuIGFtb3VudCBlcXVhbCB0byA4NSUgb2YgdGhlIGRhaWx5IHNhbGFyeSBvZiB0aGUgaGlnaGVzdCBvZmZpY2UgaW4gd2hpY2ggdGhleSBzZXJ2ZWQifV19LCB7Im5hbWUiOiAiR3VhcmRpYW4gQWQgTGl0ZW0gUHJvZ3JhbSIsICJnZiI6IDI5MzI4MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMjkzMjgwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJIODQ3IiwgIkg5MjUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGUgSnVkaWNpYWwgQnJhbmNoIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg0NyB0aGF0IHJlbW92ZXMgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZ1xudGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBhbW9uZyBwZXJzb25uZWwgY29zdHMsIG9wZXJhdGluZyBleHBlbmRpdHVyZXMsIGNhcGl0YWwgb3V0bGF5LCBhbmQgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cy4gVGhlIGJpbGwgYWxzb1xuZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCUgdHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU2VuaW9yIEp1ZGdlcyIsICJ0ZXh0IjogIlRoZSBTdXByZW1lIENvdXJ0IGlzIHRoZSBwYXNzLXRocm91Z2ggZW50aXR5IGFuZCBncmFudCBhZG1pbmlzdHJhdG9yIGZvciBndWFyZGlhbiBhZCBsaXRlbSAoR0FMKSBwcm9ncmFtc1xuYXJvdW5kIHRoZSBzdGF0ZS4gVGhlIGFkbWluaXN0cmF0b3IgYXdhcmRzIGxvY2FsIGdyYW50cyBzdGF0ZXdpZGUgdG8gcGVyc29ucyBvciBvcmdhbml6YXRpb25zIHRvIG9wZXJhdGUgcHJvZ3JhbXMgdG8gcmVjcnVpdCwgdHJhaW4sIGFuZFxuY29vcmRpbmF0ZSB2b2x1bnRlZXJzIHRvIGFjdCBhcyBjb3VydC1hcHBvaW50ZWQgc3BlY2lhbCBhZHZvY2F0ZXMgZm9yIGFidXNlZCwgbmVnbGVjdGVkLCBvciBhYmFuZG9uZWQgY2hpbGRyZW4gdW5kZXIgdGhlIENoaWxkIFByb3RlY3RpdmVcbkFjdCJ9XX0sIHsibmFtZSI6ICJKdWRpY2lhbCBDb3VuY2lsIiwgImdmIjogMTU1MDAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDE1NTAwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJIODQ3IiwgIkg5MjUiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGUgSnVkaWNpYWwgQnJhbmNoIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gSDg0NyB0aGF0IHJlbW92ZXMgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZ1xudGhlIHRyYW5zZmVyIG9mIG1vbmV5cyBhbW9uZyBwZXJzb25uZWwgY29zdHMsIG9wZXJhdGluZyBleHBlbmRpdHVyZXMsIGNhcGl0YWwgb3V0bGF5LCBhbmQgdHJ1c3RlZSBhbmQgYmVuZWZpdCBwYXltZW50cy4gVGhlIGJpbGwgYWxzb1xuZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCUgdHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU2VuaW9yIEp1ZGdlcyIsICJ0ZXh0IjogIlRoZSBJZGFobyBKdWRpY2lhbCBDb3VuY2lsIGlzIGVtcG93ZXJlZCBieSBzdGF0dXRlIHRvIG5vbWluYXRlIHBlcnNvbnMgdG8gdGhlIEdvdmVybm9yIGZvciBhcHBvaW50bWVudCB0b1xudmFjYW5jaWVzIG9uIHRoZSBTdXByZW1lIENvdXJ0LCBDb3VydCBvZiBBcHBlYWxzLCBhbmQgRGlzdHJpY3QgQ291cnRzIGFuZCBtYWtlIHJlY29tbWVuZGF0aW9ucyB0byB0aGUgU3VwcmVtZSBDb3VydCBmb3IgdGhlIHJlbW92YWwsXG5kaXNjaXBsaW5lLCBhbmQgcmV0aXJlbWVudCBvZiBqdWRpY2lhbCBvZmZpY2VycyJ9XX1dfSwgeyJhcmVhIjogIlB1YmxpYyBTYWZldHkiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgSnV2ZW5pbGUgQ29ycmVjdGlvbnMiLCAiZnRwIjogNDAyLjAsICJnZiI6IDUxMzIzMzAwLCAiZGVkIjogOTI3ODYwMCwgImZlZCI6IDIxOTk2MDAsICJ0b3RhbCI6IDYyODAxNTAwLCAiZmVkX3NoYXJlIjogMC4wMzUsICJkZWRfc2hhcmUiOiAwLjE0NzcsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxNDAyIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDcgb2YgSDk0MiBpbmNsdWRlZCBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyBwZXJ0YWluaW5nIHRvIHlvdXRoXG4gYXNzZXNzbWVudCBjZW50ZXJzLiBUaGlzIHNlY3Rpb24gZGljdGF0ZWQgdGhhdCBtb25leXMgYXBwcm9wcmlhdGVkIGZvciB5b3V0aCBhc3Nlc3NtZW50IGNlbnRlcnMgYXJlIGludGVuZGVkIHRvIGJlIG9uZXRpbWUgd2l0aCBub1xuZXhwZWN0YXRpb24gb2YgZnV0dXJlIGZpbmFuY2lhbCBzdXBwb3J0LiBZb3V0aCBhc3Nlc3NtZW50IGNlbnRlcnMgbXVzdCBzdWJtaXQgc3VzdGFpbmFiaWxpdHkgcGxhbnMgdGhhdCBzaGFsbCBiZSBzdWJtaXR0ZWQgdG8gdGhlIERlcGFydG1lbnRcbm9mIEp1dmVuaWxlIENvcnJlY3Rpb25zIChJREpDKSBhbmQgdGhlIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJBZG1pbmlzdHJhdGlvbiBwcm92aWRlcyBzdXBwb3J0IGFuZCBvdmVyc2lnaHQgZnVuY3Rpb25zIGZvciB0aGUgZGVwYXJ0bWVudC4gRnVuY3Rpb25zIGluY2x1ZGUgdGhlIGRpcmVjdG9yXHUyMDE5c1xub2ZmaWNlLCBsZWdhbCwgZmlzY2FsLCBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5LCBwdXJjaGFzaW5nLCBmYWNpbGl0eSBhbmQgZmxlZXQgbWFuYWdlbWVudCwgaHVtYW4gcmVzb3VyY2VzLCBhbmQgcXVhbGl0eSBpbXByb3ZlbWVudCJ9LCB7InN1Yl9wcm9ncmFtIjogIkNvbW11bml0eSwgT3BlcmF0aW9ucywgYW5kIFByb2dyYW0gU2VydmljZXMiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gZW5jb21wYXNzZXMgYWxsIGRlcGFydG1lbnQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYnVpbGRpbmcgYW5kIG1haW50YWluaW5nIHBhcnRuZXJzaGlwcyBhbmRcbnByb2dyYW1zIGF0IHRoZSBjb21tdW5pdHkgbGV2ZWwgdG8gc2VydmUganV2ZW5pbGVzIGFuZCBhdm9pZCBjb21taXRtZW50IHRvIHRoZSBkZXBhcnRtZW50LiBTdGFmZiB3b3JrIGRpcmVjdGx5IHdpdGggY29tbXVuaXR5XG5vcmdhbml6YXRpb25zIHV0aWxpemluZyBhIHZhcmlldHkgb2Ygc3RyYXRlZ2llcyBhbmQgZnVuZGluZyBzdHJlYW1zIHRvIGJ1aWxkIGNvbW11bml0eSBjb21wZXRlbmN5LiBQZWFjZSBPZmZpY2VyIFN0YW5kYXJkcyBhbmQgVHJhaW5pbmdcbkFjYWRlbXkgc3RhZmYgd29yayBkaXJlY3RseSB3aXRoIGp1dmVuaWxlIGp1c3RpY2UgZW1wbG95ZWVzIHRvIGltcHJvdmUgcHJvZmVzc2lvbmFsaXNtIGFuZCBvdXRjb21lcy4gSXQgYWxzbyBhZG1pbmlzdGVycyB0aGUgSW50ZXJzdGF0ZVxuQ29tcGFjdCBvbiBKdXZlbmlsZXMsIHdoaWNoIG92ZXJzZWVzIGNhc2VzIG9mIGp1dmVuaWxlIHN1cGVydmlzaW9uIGFjcm9zcyBzdGF0ZSBsaW5lcyBpbiBvcmRlciB0byBhIn0sIHsic3ViX3Byb2dyYW0iOiAiSW5zdGl0dXRpb25zIiwgInRleHQiOiAiVGhlIGRlcGFydG1lbnQgb3BlcmF0ZXMgdGhyZWUgZmFjaWxpdGllcyBmb3IganV2ZW5pbGUgb2ZmZW5kZXJzIGFuZCBjb250cmFjdHMgd2l0aCBwcml2YXRlIHJlc2lkZW50aWFsIHByb3ZpZGVycyBmb3JcbmFkZGl0aW9uYWwganV2ZW5pbGUgcGxhY2VtZW50cy4gRGVwYXJ0bWVudCBwcm9ncmFtbWluZyBpcyBiYXNlZCBvbiBhIGJhbGFuY2VkIGFwcHJvYWNoLCBhbmQgaW5jbHVkZXMgY29tcG9uZW50cyBvZiB2aWN0aW0gYW5kXG5jb21tdW5pdHkgcmVzdG9yYXRpb24sIHdvcmsgcHJvamVjdHMsIHNvY2lhbCBza2lsbHMgZGV2ZWxvcG1lbnQsIGFuZCBlZHVjYXRpb24uIFlvdXRoIHByZXNlbnRpbmcgdGhlIGhpZ2hlc3QgcmlzayB0byB0aGUgY29tbXVuaXR5IGFyZVxucGxhY2VkIGluIG9uZSBvZiB0aGUgSnV2ZW5pbGUgQ29ycmVjdGlvbnMgQ2VudGVycyBpbiBTdC4gQW50aG9ueSAoMTMwIGJlZHMpLCBOYW1wYSAoNjYgYmVkcyksIG9yIExld2lzdG9uICgzMCBiZWRzKS4gUHJvdmlkZXJzIGFsc28gc2VydmVcbmp1dmVuaWxlcyB0cmFuc2l0aW9uaW5nIGJhY2sgdG8gdGhlIGNvbW11bml0eS4gVGhlIGRlcGFydG1lbnQncyBjbGluaWNhbCBzdGFmZiBwcm92aSJ9XX0sIHsiYXJlYSI6ICJQdWJsaWMgU2FmZXR5IiwgImFnZW5jeSI6ICJJZGFobyBTdGF0ZSBQb2xpY2UiLCAiZnRwIjogNjQ2LjA5LCAiZ2YiOiA2OTE4MDUwMCwgImRlZCI6IDM4NDY3NjAwLCAiZmVkIjogMTU0MzA1MDAsICJ0b3RhbCI6IDEyMzA3ODYwMCwgImZlZF9zaGFyZSI6IDAuMTI1NCwgImRlZF9zaGFyZSI6IDAuMzEyNSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNjEiLCAiUzE0MDkiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJEaXZpc2lvbiBvZiBJZGFobyBTdGF0ZSBQb2xpY2UiLCAiZ2YiOiA2OTE4MDUwMCwgImRlZCI6IDI3ODExODAwLCAiZmVkIjogMTUxNzE4MDAsICJ0b3RhbCI6IDExMjE2NDEwMCwgImZlZF9zaGFyZSI6IDAuMTM1MywgImRlZF9zaGFyZSI6IDAuMjQ4LCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxNDA5Il0sICJub3RlcyI6IFt7InR5cGUiOiAiT1RIRVIgTEVHSVNMQVRJT04iLCAidGV4dCI6ICJINzkzIGFtZW5kZWQgdGhlIHJldmVudWUgZGlzdHJpYnV0aW9uIG9mIHRoZSBiZWVyIGV4Y2lzZSB0YXggcHVyc3VhbnQgdG8gU2VjdGlvbiAyMy0xMDA4LCBJZGFobyBDb2RlLCBkaXJlY3Rpbmdcbm1vbmV5cyB0aGF0IHdlcmUgcHJldmlvdXNseSBkaXN0cmlidXRlZCB0byB0aGUgUGVybWFuZW50IEJ1aWxkaW5nIEZ1bmQgdG8gdGhlIElkYWhvIFN0YXRlIFBvbGljZSwgd2l0aCA2MCUgb2YgdGhvc2UgY29udHJpYnV0aW9ucyBnb2luZyB0b1xudGhlIElkYWhvIExhdyBFbmZvcmNlbWVudCAoUHJvamVjdCBDaG9pY2UpIEZ1bmQsIGFuZCB0aGUgb3RoZXIgNDAlIGRpcmVjdGVkIHRvIHRoZSBBbGNvaG9sIEJldmVyYWdlIENvbnRyb2wgRnVuZC4gUzEzMjUgY3JlYXRlZCBhXG5uZXcgd2hpdGUgYW5kIGJsYWNrIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRGlyZWN0b3IncyBPZmZpY2UiLCAidGV4dCI6ICJUaGUgRGlyZWN0b3IncyBPZmZpY2UgcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUgYW5kIHBvbGljeSBzdXBwb3J0IHRvIHRoZSBlbnRpcmUgZGVwYXJ0bWVudC4gSW5jbHVkZWQgd2l0aGluIHRoaXNcbnByb2dyYW0gYXJlIHRoZSBkaXJlY3RvcidzIG9mZmljZSwgbGVnYWwgc2VydmljZXMsIGZpbmFuY2lhbCBzZXJ2aWNlcywgYW5kIHByb2N1cmVtZW50In0sIHsic3ViX3Byb2dyYW0iOiAiQ2FwaXRvbCBQcm90ZWN0aXZlIFNlcnZpY2VzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHByb3RlY3Rpb24gZm9yIElkYWhvJ3MgR292ZXJub3IgYW5kIEZpcnN0IExhZHkuIEN1cnJlbnRseSwgb2ZmaWNlcnMgYXJlIGFzc2lnbmVkIHRvIGVzY29ydFxuYW5kIHByb3RlY3QgdGhlbSBhdCBhbGwgZXZlbnRzLCB3aGlsZSB0aGV5IGFyZSByZXByZXNlbnRpbmcgSWRhaG8uIEl0IGFsc28gcHJvdmlkZXMgcHJvdGVjdGlvbiB0byB0aGUgTGVnaXNsYXR1cmUgZHVyaW5nIHRoZSBsZWdpc2xhdGl2ZSBzZXNzaW9uLFxuU3VwcmVtZSBDb3VydCBzZWN1cml0eSwgYW5kIG9mZmljZXIgc3VwcG9ydCBmb3IgQ2FwaXRvbCBNYWxsIHNlY3VyaXR5IGFuZCB0aGUgQ2hpbmRlbiBDYW1wdXMuIFRoZSBhZ2VuY3kgY2hhbmdlZCB0aGUgcHJvZ3JhbSBuYW1lIGluXG4yMDIxIGZyb20gRXhlY3V0aXZlIFByb3RlY3Rpb24gdG8gQ2FwaXRvbCBQcm90ZWN0aXZlIFNlcnZpY2VzIHRvIG1vcmUgYWNjdXJhdGVseSBkZWZpbmUgdGhlIHByb2dyYW0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJJbnZlc3RpZ2F0aW9ucyIsICJ0ZXh0IjogIkludmVzdGlnYXRpb25zIHByb3ZpZGVzIHN0YXRld2lkZSBkZXRlY3RpdmUgc2VydmljZXMgZm9yIGxvY2FsIGxhdyBlbmZvcmNlbWVudCBhbmQgSWRhaG8gY2l0aXplbnMsIHdpdGggYSBwcmltYXJ5XG5mb2N1cyBvbiBkcnVnIGVuZm9yY2VtZW50IGFuZCB2aWN0aW0gY3JpbWVzIn0sIHsic3ViX3Byb2dyYW0iOiAiUGF0cm9sIiwgInRleHQiOiAiUGF0cm9sIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgcHJvdGVjdGlvbiBvZiBsaWZlIGFuZCBwcm9wZXJ0eSBvbiBJZGFobydzIGhpZ2h3YXlzLCBhbmQgcHJvdmlkZXMgYWNjaWRlbnRcbmludmVzdGlnYXRpb25zIGFuZCBhc3Npc3RhbmNlIHRvIHRoZSBtb3RvcmluZyBwdWJsaWMgYW5kIGFsbCBsYXcgZW5mb3JjZW1lbnQgYWdlbmNpZXMgaW4gSWRhaG8uIEl0IGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGZsZWV0IG1hbmFnZW1lbnRcbmFuZCB0cmFpbmluZyJ9LCB7InN1Yl9wcm9ncmFtIjogIkxhdyBFbmZvcmNlbWVudCBQcm9ncmFtcyIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBhZG1pbmlzdGVycyB0aGUgYWxjb2hvbCBiZXZlcmFnZSBsYXdzIG9mIHRoZSBzdGF0ZSByZWxhdGluZyB0byBsaWNlbnNpbmcgYW5kIGNvbXBsaWFuY2UifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdXBwb3J0IFNlcnZpY2VzIiwgInRleHQiOiAiU3VwcG9ydCBTZXJ2aWNlcyBpcyBjb21wb3NlZCBvZiB0aGUgY3JpbWluYWwgaWRlbnRpZmljYXRpb24gc2VjdGlvbiwgd2hpY2ggcHJvdmlkZXMgd2FudGVkIHBlcnNvbnMgYW5kIHN0b2xlblxucHJvcGVydHkgaW5mb3JtYXRpb24gdG8gbGF3IGVuZm9yY2VtZW50IGluIHRoZSBmaWVsZDsgbWFpbnRhaW5zIHNleCBvZmZlbmRlciBhbmQgb3RoZXIgcmVnaXN0cmllczsgYW5kIHN1cHBvcnRzIGluZm9ybWF0aW9uIHN5c3RlbXMifSwgeyJzdWJfcHJvZ3JhbSI6ICJGb3JlbnNpYyBTZXJ2aWNlcyIsICJ0ZXh0IjogIkZvcmVuc2ljIFNlcnZpY2VzIGFzc2lzdHMgbGF3IGVuZm9yY2VtZW50IGFnZW5jaWVzIHRocm91Z2ggZXZpZGVuY2UgZ2F0aGVyaW5nLCBsYWJvcmF0b3J5IGV4YW1pbmF0aW9ucyxcbmFuYWx5c2lzLCBhbmQgdHJhaW5pbmc7IHBlcmZvcm1zIEROQSBhbmFseXNpczsgYW5kIG1haW50YWlucyB0aGUgQ29tYmluZWQgRE5BIEluZGV4IFN5c3RlbSAoQ09ESVMpIGRhdGFiYXNlIn1dfSwgeyJuYW1lIjogIlBPU1QgQWNhZGVteSIsICJnZiI6IDAsICJkZWQiOiA1ODA3NjAwLCAiZmVkIjogMjU4NzAwLCAidG90YWwiOiA2MDY2MzAwLCAiZmVkX3NoYXJlIjogMC4wNDI2LCAiZGVkX3NoYXJlIjogMC45NTc0LCAiYmlsbHMiOiBbIlMxMzYxIiwgIlMxNDA5Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRm9yZW5zaWMgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgUE9TVCBBY2FkZW15IGRlbGl2ZXJzIHRyYWluaW5nIGFuZCB0ZWNobmljYWwgYXNzaXN0YW5jZSB0byBhbGwgbGV2ZWxzIG9mIGxhdyBlbmZvcmNlbWVudCB0aHJvdWdob3V0IHRoZVxuc3RhdGUsIHByb3ZpZGluZyBib3RoIGJhc2ljIGFuZCBzcGVjaWFsaXplZCB0cmFpbmluZyBwcm9ncmFtcyBmb3IgYWxsIGNvbW1pc3Npb25lZCBwZWFjZSBvZmZpY2Vycy4gUE9TVCBhbHNvIHVwaG9sZHMgY2VydGlmaWNhdGlvbiBhbmRcbnRyYWluaW5nIHN0YW5kYXJkcyBmb3IgSWRhaG9cdTIwMTlzIGxhdyBlbmZvcmNlbWVudCBwcm9mZXNzaW9uYWxzLCBhcyBkaXJlY3RlZCBieSB0aGUgSWRhaG8gUE9TVCBDb3VuY2lsIn1dfSwgeyJuYW1lIjogIkJyYW5kIEluc3BlY3Rpb24iLCAiZ2YiOiAwLCAiZGVkIjogNDQwNTEwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDQ0MDUxMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJiaWxscyI6IFsiUzEzNjEiLCAiUzE0MDkiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJJbnN0aXR1dGlvbnMiLCAidGV4dCI6ICJCcmFuZCBJbnNwZWN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY2VydGlmaWNhdGlvbiBvZiBvd25lcnNoaXAgb2YgbGl2ZXN0b2NrIHRoYXQgaXMgdHJhZGVkLCBzb2xkLCBvciBzbGF1Z2h0ZXJlZCJ9XX0sIHsibmFtZSI6ICJSYWNpbmcgQ29tbWlzc2lvbiIsICJnZiI6IDAsICJkZWQiOiA0NDMxMDAsICJmZWQiOiAwLCAidG90YWwiOiA0NDMxMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJiaWxscyI6IFsiUzEzNjEiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJGb3JlbnNpYyBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBSYWNpbmcgQ29tbWlzc2lvbiBtYWludGFpbnMgdGhlIHF1YWxpdHkgb2YgaG9yc2UgcmFjaW5nIG9wZXJhdGlvbnMgYnkgcHJvdGVjdGluZyBwYXJ0aWNpcGFudHMgYW5kIHRoZVxucHVibGljIGZyb20gaWxsZWdhbCBhY3Rpdml0eSJ9XX1dfSwgeyJhcmVhIjogIk5hdHVyYWwgUmVzb3VyY2VzIiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIEVudmlyb25tZW50YWwgUXVhbGl0eSIsICJmdHAiOiAzNzkuMCwgImdmIjogMjg1MTExMDAsICJkZWQiOiAyMjM3MzYwMCwgImZlZCI6IDQ3NDcxNjAwLCAidG90YWwiOiA5ODM1NjMwMCwgImZlZF9zaGFyZSI6IDAuNDgyNiwgImRlZF9zaGFyZSI6IDAuMjI3NSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNjMiLCAiUzE0MDMiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gOCBvZiBTMTM2MyBkaXJlY3RlZCB0aGUgdXNlIG9mIHRoZSBBUlBBIFN0YXRlIEZpc2NhbCBSZWNvdmVyeSBGdW5kIGZvclxud2F0ZXIgaW5mcmFzdHJ1Y3R1cmUgYW5kIHJlbWVkaWF0aW9uIHByb2plY3RzIGFuZCByZXF1aXJlZCBhIHJlcG9ydCBwZXJ0YWluaW5nIHRvIGZ1bmQgZXhwZW5kaXR1cmUgYW5kIHByb2plY3QgY29tcGxldGlvbiJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkFkbWluaXN0cmF0aW9uIGFuZCBTdXBwb3J0IFNlcnZpY2VzIiwgInRleHQiOiAiQWRtaW5pc3RyYXRpb24gYW5kIFN1cHBvcnQgU2VydmljZXMgZGV2ZWxvcHMgcG9saWNpZXMsIGxlZ2lzbGF0aW9uLCBhbmQgcnVsZXMgdGhhdCBzdXN0YWluIHRoZSBzdGF0ZVx1MjAxOXMgYXV0aG9yaXR5XG5vdmVyIHBlcm1pdHRpbmcsIHJlZ3VsYXRvcnksIGFuZCByZW1lZGlhdGlvbiBwcm9ncmFtczsgcHJvbW90ZXMgcHVibGljIHVuZGVyc3RhbmRpbmcgb2YgbWFqb3IgZW52aXJvbm1lbnRhbCBpc3N1ZXMgYW5kIHNvbGljaXRzIHB1YmxpYyBpbnB1dFxuaW4gZW52aXJvbm1lbnRhbCBwcmlvcml0eSBzZXR0aW5nOyBhc3Nlc3NlcyBhbmQgcmVwb3J0cyBvbiBwcm9ncmFtIGVmZmVjdGl2ZW5lc3MgaW4gaW1wcm92aW5nIHdhdGVyIGFuZCBhaXIgcXVhbGl0eTsgYW5kIHNlcnZlcyB0aGVcbmRlcGFydG1lbnRcdTIwMTlzIGludGVybmFsIHN1cHBvcnQgbmVlZHMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDM5LTEwMkEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJhcmVhIjogIk5hdHVyYWwgUmVzb3VyY2VzIiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIEZpc2ggYW5kIEdhbWUiLCAiZnRwIjogNTUwLjAsICJnZiI6IDAsICJkZWQiOiA5Mjk4OTAwMCwgImZlZCI6IDY4NTI4MDAwLCAidG90YWwiOiAxNjE1MTcwMDAsICJmZWRfc2hhcmUiOiAwLjQyNDMsICJkZWRfc2hhcmUiOiAwLjU3NTcsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg5NjQiLCAiUzEzNjMiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gNCBvZiBIOTY0IGRpcmVjdGVkIHRoYXQgJDIwMCwwMDAgYXBwcm9wcmlhdGVkIHRvIG1hbmFnZSB3b2xmIHByZWRhdGlvbiBiZVxudXNlZCBmb3IgdHJhcHBpbmcgYW5kIHJlcXVpcmVkIHRoYXQgYW55IHVuZXhwZW5kZWQgZnVuZHMgcmV2ZXJ0IHRvIHRoZSBmdW5kIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBwcm92aWRlcyB0aGUgYWRtaW5pc3RyYXRpdmUsIGZpc2NhbCwgaW5mb3JtYXRpb24gc3lzdGVtcywgaHVtYW4gcmVzb3VyY2VzLCBhbmRcbnBvbGljeSBzdXBwb3J0IGZvciB0aGUgZGVwYXJ0bWVudCBhbmQgdGhlIEZpc2ggYW5kIEdhbWUgQ29tbWlzc2lvbi4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMzYtMTAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkVuZm9yY2VtZW50IiwgInRleHQiOiAiVGhlIEVuZm9yY2VtZW50IFByb2dyYW0gaXMgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyB0aGUgbGF3cyBhbmQgcmVndWxhdGlvbnMgcHJvbXVsZ2F0ZWQgYnkgdGhlIElkYWhvIEZpc2hcbmFuZCBHYW1lIENvbW1pc3Npb24uIE9mZmljZXJzIGRvIHRoaXMgYnkgY2hlY2tpbmcgaHVudGVycywgZmlzaGVybWVuLCBhbmQgdHJhcHBlcnMgZm9yIGNvbXBsaWFuY2Ugd2l0aCBlc3RhYmxpc2hlZCBsYXdzIGFuZCBydWxlcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkZpc2hlcmllcyIsICJ0ZXh0IjogIlRoZSBGaXNoZXJpZXMgUHJvZ3JhbSBtb25pdG9ycyBhbmQgbWFuaXB1bGF0ZXMgZmlzaCBwb3B1bGF0aW9ucyB0byBtYWludGFpbiBvciBjcmVhdGUgcHVibGljIGZpc2hlcmllcywgcHJvdGVjdHNcbmFuZCBlbmhhbmNlcyBmaXNoIGhhYml0YXQsIGRldmVsb3BzIGFuZ2xlciBhY2Nlc3MgYW5kIGFuZ2xlciBpbmZvcm1hdGlvbiwgY29vcmRpbmF0ZXMgd2l0aCB0aGUgZ2VuZXJhbCBmaXNoaW5nIHB1YmxpYywgYW5kIGRldmVsb3BzIGZpc2hpbmdcbmFuZCBoYXJ2ZXN0aW5nIHJ1bGVzIn0sIHsic3ViX3Byb2dyYW0iOiAiV2lsZGxpZmUiLCAidGV4dCI6ICJUaGUgV2lsZGxpZmUgUHJvZ3JhbSBpcyByZXNwb25zaWJsZSBmb3IgcHJlc2VydmluZywgcHJvdGVjdGluZywgcGVycGV0dWF0aW5nLCBhbmQgbWFuYWdpbmcgdGhlIHdpbGRsaWZlIG9mIHRoZVxuc3RhdGUgYXMgZGlyZWN0ZWQgYnkgc3RhdGUgbGF3LiBJdCBoYW5kbGVzIHN0YXRld2lkZSBjb29yZGluYXRpb24gaW4gc2l4IG1ham9yIGFyZWFzOiBiaWcgZ2FtZSwgZ2FtZSBiaXJkcywgZnVyYmVhcmVycywgZGVwYXJ0bWVudCBsYW5kcyxcbnJlc2VhcmNoLCBhbmQgdGhlIG5vbi1nYW1lIHByb2dyYW0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pY2F0aW9ucyIsICJ0ZXh0IjogIlRoZSBDb21tdW5pY2F0aW9ucyBQcm9ncmFtIGluY3JlYXNlcyBwdWJsaWMgYXdhcmVuZXNzIG9mIElkYWhvXHUyMDE5cyBmaXNoIGFuZCB3aWxkbGlmZSByZXNvdXJjZXMgdGhyb3VnaFxuZWR1Y2F0aW9uIGFuZCBpbmZvcm1hdGlvbiBwcm9ncmFtcywgcHJvdmlkZXMgaHVudGVyIHNhZmV0eSBhbmQgZXRoaWNzIHByb2dyYW1zLCBhbmQgc29saWNpdHMgcHVibGljIG9waW5pb24gdGhyb3VnaCBzdXJ2ZXlzIGFuZCBjb250YWN0cyJ9XX0sIHsiYXJlYSI6ICJOYXR1cmFsIFJlc291cmNlcyIsICJhZ2VuY3kiOiAiQm9hcmQgb2YgTGFuZCBDb21taXNzaW9uZXJzIiwgImZ0cCI6IDMzOC45MywgImdmIjogMTEyNjQyMDAsICJkZWQiOiA1NjI1NjcwMCwgImZlZCI6IDEyMzI3MjAwLCAidG90YWwiOiA3OTg0ODEwMCwgImZlZF9zaGFyZSI6IDAuMTU0NCwgImRlZF9zaGFyZSI6IDAuNzA0NSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEyNDciLCAiUzEzNjMiLCAiUzEzODAiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gNSBvZiBTMTQyNyByZXF1aXJlZCB0aGF0IGFueSBhcHByb3ByaWF0aW9uIGZyb20gdGhlIEdlbmVyYWwgRnVuZCBmb3IgZmlyZVxuZmlnaHRpbmcgYm9udXNlcyBiZSBsaW1pdGVkIHRvIHNwZWNpZmljIGVtcGxveWVlcyBhbmQgcmVxdWlyZWQgYSBhIHJlcG9ydCB0byB0aGUgTGVnaXNsYXR1cmUifSwgeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiAxMSBvZiBTMTM2MyByZWNvZ25pemVkIHRoZSBhbW91bnQgdGhhdCB0aGUgU3RhdGUgTGFuZCBCb2FyZCBhcHByb3ZlZCBmb3JcbnRyYW5zZmVyIHRvIHRoZSBpbmNvbWUgZnVuZHMgYW5kIGF2YWlsYWJsZSBmb3IgYXBwcm9wcmlhdGlvbiB0byB0aGUgYmVuZWZpY2lhcmllcy4gVGhhdCBhbW91bnQgd2FzICQxMTcsMjc4LDQwMCBmb3IgRlkgMjAyNyJ9LCB7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTQyNyB0aGF0IGV4ZW1wdGVkIHRoZSBhZ2VuY3kgZnJvbSB0aGUgMTAlXG50cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMgZm9yIHRyYW5zZmVycyBpbnRvIHRoZSBGb3Jlc3QgYW5kIFJhbmdlIEZpcmUgUHJvdGVjdGlvbiBQcm9ncmFtIGluIEZZIDIwMjcifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pY2F0aW9ucyIsICJ0ZXh0IjogIlRoZSBFbmRvd21lbnQgRnVuZCBJbnZlc3RtZW50IEJvYXJkIGFjdGl2ZWx5IG1hbmFnZXMgdGhlIGxhbmQgZ3JhbnQgZW5kb3dtZW50IGZ1bmRzLCB0aGUgU3RhdGUgSW5zdXJhbmNlXG5GdW5kLCB0aGUgUml0dGVyIElzbGFuZCBFbmRvd21lbnQsIHRoZSBUcmFpbCBvZiB0aGUgQ29ldXIgZCdBbGVuZXMgRW5kb3dtZW50LCB0aGUgS2VsbG9nZyBJbnN0aXR1dGlvbmFsIENvbnRyb2xzIEVuZG93bWVudCwgYW5kIElkYWhvIEZpc2hcbmFuZCBHYW1lIEVuZG93bWVudHMuIFRoZSBvYmplY3RpdmUgaXMgdG8gcHJvdmlkZSBncm93dGggb2YgcHJpbmNpcGFsIHRvIHRoZSBmdW5kcyBhbmQgaW5jcmVhc2luZyBpbmNvbWUgdG8gdGhlIGZ1bmRzJyBiZW5lZmljaWFyaWVzLlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IEFydC4gSVgsIFNlY3Rpb24gMywgSWRhaG8gQ29uc3QuOyBTZWN0aW9uIDU3LTcxOCwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJCdXNpbmVzcyBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBCdXNpbmVzcyBTZXJ2aWNlcyBQcm9ncmFtIHByb3ZpZGVzIHN0YWZmIHN1cHBvcnQgdG8gdGhlIFN0YXRlIEJvYXJkIG9mIExhbmQgQ29tbWlzc2lvbmVycywgYW5kIHByb3ZpZGVzXG5hZG1pbmlzdHJhdGl2ZSBhbmQgdGVjaG5pY2FsIGFzc2lzdGFuY2UgaW4gbGVnYWwsIGRhdGEgcHJvY2Vzc2luZywgcGVyc29ubmVsLCBodW1hbiByZXNvdXJjZXMsIGZpc2NhbCwgYW5kIElUIHNlcnZpY2VzLiBQcmlvciB0byBGWSAyMDIyLCB0aGlzXG5wcm9ncmFtIHdhcyBuYW1lZCB0aGUgU3VwcG9ydCBTZXJ2aWNlcyBQcm9ncmFtLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA1OC0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiRm9yZXN0IFJlc291cmNlcyBNYW5hZ2VtZW50IiwgInRleHQiOiAiVGhlIEZvcmVzdCBSZXNvdXJjZXMgTWFuYWdlbWVudCBQcm9ncmFtIGhhcyB0aGUgcmVzcG9uc2liaWxpdHkgdG8gcHJvdmlkZSB0ZWNobmljYWwgZ3VpZGFuY2UsIGRldmVsb3BcbmFkbWluaXN0cmF0aXZlIHByb2NlZHVyZXMsIGFuZCBtYWludGFpbiBhIHN5c3RlbSBvZiByZXZpZXcgZm9yIGFsbCBwcm9ncmFtcyByZWxhdGluZyB0byB0aGUgcHJvdGVjdGlvbiwgYWRtaW5pc3RyYXRpb24sIGltcHJvdmVtZW50LCBhbmRcbnV0aWxpemF0aW9uIG9mIHRoZSBmb3Jlc3QgcmVzb3VyY2VzIG9uIHN0YXRlIGFuZCBwcml2YXRlIGxhbmRzIHdpdGhpbiBJZGFoby4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNTgtMTAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlRydXN0IExhbmQgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBvYmplY3RpdmUgb2YgdGhpcyBwcm9ncmFtIGlzIHRvIG1heGltaXplIGluY29tZSBmcm9tIGNyb3BsYW5kLCBncmF6aW5nLCBtaW5lcmFsIHJlc291cmNlcywgcmVjcmVhdGlvbiBzaXRlc1xuYW5kIHNwZWNpYWwgc3VyZmFjZSB1c2VzIG9mIHN0YXRlLW93bmVkIGxhbmQsIGFuZCB0byBwcm92aWRlIGVudmlyb25tZW50YWwgcHJvdGVjdGlvbiBvZiB0aGUgc3RhdGUncyBuYXR1cmFsIHJlc291cmNlcyBhbmQgcHVibGljIHRydXN0IGxhbmRzXG50aHJvdWdoIGFjdGl2ZSBhZG1pbmlzdHJhdGlvbiBvZiB0aGUgTGFrZSBQcm90ZWN0aW9uIEFjdCwgU3VyZmFjZSBNaW5pbmcgQWN0LCBhbmQgdGhlIERyZWRnZSBhbmQgUGxhY2VyIE1pbmluZyBBY3QuIFRoZSBwcm9ncmFtIGFsc29cbmFkbWluaXN0ZXJzIGEgc3RhdGUgbGFuZCBzYWxlIGFuZCBleGNoYW5nZSBwcm9ncmFtLCB3aGljaCB1c2VzIHRoZSBsYW5kIGV4Y2hhbmdlIHByb2dyYW0gdG8gYmxvY2sgc3RhdGUgb3duZXJzaGlwIGZvciBtYW5hZ2VtZW50XG5lZmZpY2llbmN5IHdoaWxlIGFjcXVpcmluZyBoaWdoIHZhbHVlLCBoaWdoIHJldmVudWUgcHJvZHVjaW5nIHByb3BlcnR5LiBBZG1pbmlzdHJhdGkifSwgeyJzdWJfcHJvZ3JhbSI6ICJGb3Jlc3QgYW5kIFJhbmdlIEZpcmUgUHJvdGVjdGlvbiIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBwcm92aWRlcyBwcm90ZWN0aW9uIHRvIHRoZSB0aW1iZXJlZCBhbmQgZ3JhemluZyBsYW5kcyBvZiB0aGUgc3RhdGUgdGhyb3VnaCBwcmV2ZW50aW9uLCBhbmQgcmFwaWRcbmRldGVjdGlvbiBhbmQgc3VwcHJlc3Npb24gb2Ygd2lsZGZpcmUuIFRoZSBwcm9ncmFtIGFsc28gcHJvdmlkZXMgYXNzaXN0YW5jZSB0byBydXJhbCBjb21tdW5pdHkgZmlyZSBkZXBhcnRtZW50cy4gVGhlIERlcGFydG1lbnQgb2YgTGFuZHNcbmhhcyBhIGZpcmUgcHJvdGVjdGlvbiBvcmdhbml6YXRpb24gaW52b2x2aW5nIHRlbiBkaXN0cmljdHMsIHNlYXNvbmFsIGxvb2tvdXRzLCBhbmQgZmlyZSBjb250cm9sIGFpZGVzLiBTdGF0ZSBsYW5kIGlzIGFsc28gcHJvdGVjdGVkIGJ5IHR3byBmaXJlXG5wcm90ZWN0aXZlIGFzc29jaWF0aW9ucyBvZiB3aGljaCB0aGUgU3RhdGUgb2YgSWRhaG8gaXMgYSBtZW1iZXIuIEZ1cnRoZXJtb3JlLCBzdGF0ZSBhbmQgcHJpdmF0ZSBsYW5kcyB3aXRoaW4gdGhlIFVTIEZvcmVzdCBTZXJ2aWNlIGFuZFxuQnVyZWF1IG9mIExhbmQgTWFuYWdlbWVudCBwcm90ZWN0aW9uIGJvdW5kYXJpZXMgYXJlIHByb3RlY3RlZCBieSB0aG9zZSB0d28ifSwgeyJzdWJfcHJvZ3JhbSI6ICJTY2FsaW5nIFByYWN0aWNlcyIsICJ0ZXh0IjogIlRoZSBCb2FyZCBvZiBTY2FsaW5nIFByYWN0aWNlcyBpcyBjb21wb3NlZCBvZiB0aGUgRGlyZWN0b3Igb2YgdGhlIERlcGFydG1lbnQgb2YgTGFuZHMgYW5kIHNpeCBvdGhlciBtZW1iZXJzXG5yZXByZXNlbnRpbmcgZGlmZmVyZW50IHNlZ21lbnRzIG9mIHRoZSB0aW1iZXIgaW5kdXN0cnk6IHR3byByZXByZXNlbnRpbmcgbWFudWZhY3R1cmluZywgdHdvIHJlcHJlc2VudGluZyBsb2dnaW5nIGFuZCB0cmFuc3BvcnRhdGlvbiwgb25lXG5yZXByZXNlbnRpbmcgbm9uaW5kdXN0cmlhbCBwcml2YXRlIGZvcmVzdCBsYW5kb3duZXJzLCBhbmQgb25lIHJlcHJlc2VudGluZyBzbWFsbCBpbmR1c3RyaWFsIGZvcmVzdCBsYW5kb3duZXJzLiBUaGUgYm9hcmQgaXMgY2hhcmdlZCB3aXRoIHRoZVxucmVzcG9uc2liaWxpdHkgb2YgYXNzdXJpbmcgdGhhdCBvbmx5IGNvbXBldGVudCBhbmQgY2VydGlmaWVkIHNjYWxlcnMgYXJlIHVzZWQgYnkgdGhlIGZvcmVzdCBwcm9kdWN0cyBpbmR1c3RyeSB0byBzY2FsZSAobWVhc3VyZSkgZm9yZXN0IHByb2R1Y3RzXG5pbiBhIHN0YW5kYXJkLCB1bmlmb3JtIG1ldGhvZCBzdGF0ZXdpZGUuIFRoZSBib2FyZCB0ZXN0cyBhbmQgbGljZW5zZXMifV0sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiRGVwYXJ0bWVudCBvZiBMYW5kcyIsICJnZiI6IDExMjY0MjAwLCAiZGVkIjogNTUyMzMzMDAsICJmZWQiOiAxMjMyNzIwMCwgInRvdGFsIjogNzg4MjQ3MDAsICJmZWRfc2hhcmUiOiAwLjE1NjQsICJkZWRfc2hhcmUiOiAwLjcwMDcsICJiaWxscyI6IFsiUzEyNDciLCAiUzEzNjMiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gNSBvZiBTMTQyNyByZXF1aXJlZCB0aGF0IGFueSBhcHByb3ByaWF0aW9uIGZyb20gdGhlIEdlbmVyYWwgRnVuZCBmb3IgZmlyZVxuZmlnaHRpbmcgYm9udXNlcyBiZSBsaW1pdGVkIHRvIHNwZWNpZmljIGVtcGxveWVlcyBhbmQgcmVxdWlyZWQgYSBhIHJlcG9ydCB0byB0aGUgTGVnaXNsYXR1cmUifSwgeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoaXMgYWdlbmN5IHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gUzE0MjcgdGhhdCBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIGZvciB0cmFuc2ZlcnMgaW50byB0aGUgRm9yZXN0IGFuZCBSYW5nZSBGaXJlIFByb3RlY3Rpb24gUHJvZ3JhbSBpbiBGWSAyMDI3In1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQnVzaW5lc3MgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgQnVzaW5lc3MgU2VydmljZXMgUHJvZ3JhbSBwcm92aWRlcyBzdGFmZiBzdXBwb3J0IHRvIHRoZSBTdGF0ZSBCb2FyZCBvZiBMYW5kIENvbW1pc3Npb25lcnMsIGFuZCBwcm92aWRlc1xuYWRtaW5pc3RyYXRpdmUgYW5kIHRlY2huaWNhbCBhc3Npc3RhbmNlIGluIGxlZ2FsLCBkYXRhIHByb2Nlc3NpbmcsIHBlcnNvbm5lbCwgaHVtYW4gcmVzb3VyY2VzLCBmaXNjYWwsIGFuZCBJVCBzZXJ2aWNlcy4gUHJpb3IgdG8gRlkgMjAyMiwgdGhpc1xucHJvZ3JhbSB3YXMgbmFtZWQgdGhlIFN1cHBvcnQgU2VydmljZXMgUHJvZ3JhbS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNTgtMTAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkZvcmVzdCBSZXNvdXJjZXMgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBGb3Jlc3QgUmVzb3VyY2VzIE1hbmFnZW1lbnQgUHJvZ3JhbSBoYXMgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHByb3ZpZGUgdGVjaG5pY2FsIGd1aWRhbmNlLCBkZXZlbG9wXG5hZG1pbmlzdHJhdGl2ZSBwcm9jZWR1cmVzLCBhbmQgbWFpbnRhaW4gYSBzeXN0ZW0gb2YgcmV2aWV3IGZvciBhbGwgcHJvZ3JhbXMgcmVsYXRpbmcgdG8gdGhlIHByb3RlY3Rpb24sIGFkbWluaXN0cmF0aW9uLCBpbXByb3ZlbWVudCwgYW5kXG51dGlsaXphdGlvbiBvZiB0aGUgZm9yZXN0IHJlc291cmNlcyBvbiBzdGF0ZSBhbmQgcHJpdmF0ZSBsYW5kcyB3aXRoaW4gSWRhaG8uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDU4LTEwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJUcnVzdCBMYW5kIE1hbmFnZW1lbnQiLCAidGV4dCI6ICJUaGUgb2JqZWN0aXZlIG9mIHRoaXMgcHJvZ3JhbSBpcyB0byBtYXhpbWl6ZSBpbmNvbWUgZnJvbSBjcm9wbGFuZCwgZ3JhemluZywgbWluZXJhbCByZXNvdXJjZXMsIHJlY3JlYXRpb24gc2l0ZXNcbmFuZCBzcGVjaWFsIHN1cmZhY2UgdXNlcyBvZiBzdGF0ZS1vd25lZCBsYW5kLCBhbmQgdG8gcHJvdmlkZSBlbnZpcm9ubWVudGFsIHByb3RlY3Rpb24gb2YgdGhlIHN0YXRlJ3MgbmF0dXJhbCByZXNvdXJjZXMgYW5kIHB1YmxpYyB0cnVzdCBsYW5kc1xudGhyb3VnaCBhY3RpdmUgYWRtaW5pc3RyYXRpb24gb2YgdGhlIExha2UgUHJvdGVjdGlvbiBBY3QsIFN1cmZhY2UgTWluaW5nIEFjdCwgYW5kIHRoZSBEcmVkZ2UgYW5kIFBsYWNlciBNaW5pbmcgQWN0LiBUaGUgcHJvZ3JhbSBhbHNvXG5hZG1pbmlzdGVycyBhIHN0YXRlIGxhbmQgc2FsZSBhbmQgZXhjaGFuZ2UgcHJvZ3JhbSwgd2hpY2ggdXNlcyB0aGUgbGFuZCBleGNoYW5nZSBwcm9ncmFtIHRvIGJsb2NrIHN0YXRlIG93bmVyc2hpcCJ9LCB7InN1Yl9wcm9ncmFtIjogIkZvcmVzdCBhbmQgUmFuZ2UgRmlyZSBQcm90ZWN0aW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIHByb3RlY3Rpb24gdG8gdGhlIHRpbWJlcmVkIGFuZCBncmF6aW5nIGxhbmRzIG9mIHRoZSBzdGF0ZSB0aHJvdWdoIHByZXZlbnRpb24sIGFuZCByYXBpZFxuZGV0ZWN0aW9uIGFuZCBzdXBwcmVzc2lvbiBvZiB3aWxkZmlyZS4gVGhlIHByb2dyYW0gYWxzbyBwcm92aWRlcyBhc3Npc3RhbmNlIHRvIHJ1cmFsIGNvbW11bml0eSBmaXJlIGRlcGFydG1lbnRzLiBUaGUgRGVwYXJ0bWVudCBvZiBMYW5kc1xuaGFzIGEgZmlyZSBwcm90ZWN0aW9uIG9yZ2FuaXphdGlvbiBpbnZvbHZpbmcgdGVuIGRpc3RyaWN0cywgc2Vhc29uYWwgbG9va291dHMsIGFuZCBmaXJlIGNvbnRyb2wgYWlkZXMuIFN0YXRlIGxhbmQgaXMgYWxzbyBwcm90ZWN0ZWQgYnkgdHdvIGZpcmVcbnByb3RlY3RpdmUgYXNzb2NpYXRpb25zIG9mIHdoaWNoIHRoZSBTdGF0ZSBvZiBJZGFobyBpcyBhIG1lbWJlci4gRnVydGhlcm1vcmUsIHN0YXRlIGFuZCBwcml2YXRlIGxhbmRzIHdpdGhpbiAifSwgeyJzdWJfcHJvZ3JhbSI6ICJTY2FsaW5nIFByYWN0aWNlcyIsICJ0ZXh0IjogIlRoZSBCb2FyZCBvZiBTY2FsaW5nIFByYWN0aWNlcyBpcyBjb21wb3NlZCBvZiB0aGUgRGlyZWN0b3Igb2YgdGhlIERlcGFydG1lbnQgb2YgTGFuZHMgYW5kIHNpeCBvdGhlciBtZW1iZXJzXG5yZXByZXNlbnRpbmcgZGlmZmVyZW50IHNlZ21lbnRzIG9mIHRoZSB0aW1iZXIgaW5kdXN0cnk6IHR3byByZXByZXNlbnRpbmcgbWFudWZhY3R1cmluZywgdHdvIHJlcHJlc2VudGluZyBsb2dnaW5nIGFuZCB0cmFuc3BvcnRhdGlvbiwgb25lXG5yZXByZXNlbnRpbmcgbm9uaW5kdXN0cmlhbCBwcml2YXRlIGZvcmVzdCBsYW5kb3duZXJzLCBhbmQgb25lIHJlcHJlc2VudGluZyBzbWFsbCBpbmR1c3RyaWFsIGZvcmVzdCBsYW5kb3duZXJzLiBUaGUgYm9hcmQgaXMgY2hhcmdlZCB3aXRoIHRoZVxucmVzcG9uc2liaWxpdHkgb2YgYXNzdXJpbmcgdGhhdCBvbmx5IGNvbXBldGVudCBhbmQgY2VydGlmaWVkIHNjYWxlcnMgYXJlIHVzZWQgYnkgdGhlIGZvcmVzdCBwcm9kdWN0cyBpbmR1c3RyeSB0byBzIn1dfSwgeyJuYW1lIjogIkVuZG93bWVudCBGdW5kIEludmVzdG1lbnQgQm9hcmQiLCAiZ2YiOiAwLCAiZGVkIjogMTAyMzQwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDEwMjM0MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJiaWxscyI6IFsiUzEzNjMiLCAiUzEzODAiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gMTEgb2YgUzEzNjMgcmVjb2duaXplZCB0aGUgYW1vdW50IHRoYXQgdGhlIFN0YXRlIExhbmQgQm9hcmQgYXBwcm92ZWQgZm9yXG50cmFuc2ZlciB0byB0aGUgaW5jb21lIGZ1bmRzIGFuZCBhdmFpbGFibGUgZm9yIGFwcHJvcHJpYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJpZXMuIFRoYXQgYW1vdW50IHdhcyAkMTE3LDI3OCw0MDAgZm9yIEZZIDIwMjcifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21tdW5pY2F0aW9ucyIsICJ0ZXh0IjogIlRoZSBFbmRvd21lbnQgRnVuZCBJbnZlc3RtZW50IEJvYXJkIGFjdGl2ZWx5IG1hbmFnZXMgdGhlIGxhbmQgZ3JhbnQgZW5kb3dtZW50IGZ1bmRzLCB0aGUgU3RhdGUgSW5zdXJhbmNlXG5GdW5kLCB0aGUgUml0dGVyIElzbGFuZCBFbmRvd21lbnQsIHRoZSBUcmFpbCBvZiB0aGUgQ29ldXIgZCdBbGVuZXMgRW5kb3dtZW50LCB0aGUgS2VsbG9nZyBJbnN0aXR1dGlvbmFsIENvbnRyb2xzIEVuZG93bWVudCwgYW5kIElkYWhvIEZpc2hcbmFuZCBHYW1lIEVuZG93bWVudHMuIFRoZSBvYmplY3RpdmUgaXMgdG8gcHJvdmlkZSBncm93dGggb2YgcHJpbmNpcGFsIHRvIHRoZSBmdW5kcyBhbmQgaW5jcmVhc2luZyBpbmNvbWUgdG8gdGhlIGZ1bmRzJyBiZW5lZmljaWFyaWVzLlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IEFydC4gSVgsIFNlY3Rpb24gMywgSWRhaG8gQ29uc3QuOyBTZWN0aW9uIDU3LTcxOCwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifV19XX0sIHsiYXJlYSI6ICJOYXR1cmFsIFJlc291cmNlcyIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBQYXJrcyBhbmQgUmVjcmVhdGlvbiIsICJmdHAiOiAxOTguNzUsICJnZiI6IDQxNTgwMDAsICJkZWQiOiA1NDA0NjAwMCwgImZlZCI6IDEwNDE0MjAwLCAidG90YWwiOiA2ODYxODIwMCwgImZlZF9zaGFyZSI6IDAuMTUxOCwgImRlZF9zaGFyZSI6IDAuNzg3NiwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNjMiLCAiUzE0MTciXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxNDE3IHRoYXQgZXhlbXB0cyB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIn0sIHsidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzYzIHRoYXQgZXhlbXB0ZWQgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcy4gVGhpcyByZXF1ZXN0IHdvdWxkIGVuYWJsZSB0aGUgYWdlbmN5IHRvIHRyYW5zZmVyIHRydXN0ZWUgYW5kIGJlbmVmaXQgcGF5bWVudHMgYXBwcm9wcmlhdGVkXG5mb3IgZ3JhbnRzIGluIHRoZSBQYXJrIE9wZXJhdGlvbnMgUHJvZ3JhbSB0byBjYXBpdGFsIG91dGxheSBpbiB0aGUgQ2FwaXRhbCBEZXZlbG9wbWVudCBQcm9ncmFtIHRvIHJlZmxlY3QgZ3JhbnRzIGF3YXJkZWQgdG8gdGhlIERlcGFydG1lbnRcbm9mIFBhcmtzIGFuZCBSZWNyZWF0In1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU2NhbGluZyBQcmFjdGljZXMiLCAidGV4dCI6ICJUaGUgTWFuYWdlbWVudCBTZXJ2aWNlcyBQcm9ncmFtIGltcGxlbWVudHMgdGhlIHBvbGljaWVzIG9mIHRoZSBQYXJrcyBhbmQgUmVjcmVhdGlvbiBCb2FyZCwgYW5kXG5hZG1pbmlzdGVycyB0aGUgb3BlcmF0aW9uIG9mIHRoZSBidXJlYXVzIHdpdGhpbiB0aGUgZGVwYXJ0bWVudC4gSW4gYWRkaXRpb24gdG8gdGhlIGV4ZWN1dGl2ZSBzdGFmZiwgaXQgaW5jbHVkZXMgc3RhZmZpbmcgZm9yIHB1YmxpYyBpbmZvcm1hdGlvbixcbmZpc2NhbCwgcmVzZXJ2YXRpb25zLCByZWdpc3RyYXRpb25zLCBjYXBpdGFsIGRldmVsb3BtZW50LCBhbmQgb3V0ZG9vciByZWNyZWF0aW9uLiBCZWdpbm5pbmcgaW4gRlkgMjAyNiwgdGhlIE1hbmFnZW1lbnQgU2VydmljZXMgYW5kIFBhcmtcbk9wZXJhdGlvbnMgUHJvZ3JhbXMgd2VyZSBjb25zb2xpZGF0ZWQgaW50byBvbmUgcHJvZ3JhbSwgZWxpbWluYXRpbmcgdGhlIGZvcm1lci4gVGhlIG1haW50ZW5hbmNlIGFwcHJvcHJpYXRpb24gZm9yIHRoZSBNYW5hZ2VtZW50XG5TZXJ2aWNlcyBQcm9ncmFtLCBhbmQgZW5oYW5jZW1lbnRzIGFwcHJvdmVkIGJ5IHRoZSBMZWdpc2xhdHVyZSwgd2VyZSByZWR1Y2VkIGZyb20gdGhlIE1hbmFnZW1lIn0sIHsic3ViX3Byb2dyYW0iOiAiUGFyayBPcGVyYXRpb25zIiwgInRleHQiOiAiVGhlIFBhcmsgT3BlcmF0aW9ucyBQcm9ncmFtIGhhcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgbWFuYWdpbmcgSWRhaG8ncyAzMCBzdGF0ZSBwYXJrcyBhbmQgc3RhdGUgdHJhaWxzIGJ5XG5wcm92aWRpbmcgdmlzaXRvcnMgYSBxdWFsaXR5IG91dGRvb3IgZXhwZXJpZW5jZSB0aHJvdWdoIHJlY3JlYXRpb24sIGludGVycHJldGF0aW9uLCBhbmQgZWR1Y2F0aW9uIHByb2dyYW1zLCB3aGlsZSBwcm90ZWN0aW5nIHRoZSBuYXR1cmFsXG5yZXNvdXJjZXMgZm9yIGZ1dHVyZSBnZW5lcmF0aW9ucy4gQmVnaW5uaW5nIGluIEZZIDIwMjYsIHRoZSBNYW5hZ2VtZW50IFNlcnZpY2VzIGFuZCBQYXJrIE9wZXJhdGlvbnMgUHJvZ3JhbXMgd2VyZSBjb25zb2xpZGF0ZWQgaW50b1xub25lIHByb2dyYW0sIGVsaW1pbmF0aW5nIHRoZSBmb3JtZXIuIFRoZSBtYWludGVuYW5jZSBhcHByb3ByaWF0aW9uIGZvciB0aGUgTWFuYWdlbWVudCBTZXJ2aWNlcyBQcm9ncmFtLCBhbmQgZW5oYW5jZW1lbnRzIGFwcHJvdmVkIGJ5XG50aGUgTGVnaXNsYXR1cmUsIHdlcmUgcmVkdWNlZCBmcm9tIHRoZSBNYW5hZ2VtZW50IFNlcnZpY2VzIFByb2dyYW0gYW5kIGFkZGVkIHRvIHRoZSBQYXJrIE9wZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgRGV2ZWxvcG1lbnQiLCAidGV4dCI6ICJUaGUgQ2FwaXRhbCBEZXZlbG9wbWVudCBQcm9ncmFtIHdhcyBpbml0aWF0ZWQgdG8gYWRtaW5pc3RlciB0aGUgYWNxdWlzaXRpb24sIHBsYW5uaW5nLCBhbmQgY29uc3RydWN0aW9uIG9mXG5pbXByb3ZlbWVudHMgdG8gZXhpc3RpbmcgYW5kIHByb3Bvc2VkIHN0YXRlIHBhcmtzLiBUaGUgcmVjcmVhdGlvbiBuZWVkcyBvZiBwcmVzZW50IGFuZCBmdXR1cmUgcG9wdWxhdGlvbnMgYXJlIGlkZW50aWZpZWQgaW4gYSBTdGF0ZXdpZGVcbkNvbXByZWhlbnNpdmUgT3V0ZG9vciBSZWNyZWF0aW9uIFBsYW4gYW5kIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkIGluIGEgbWFubmVyIGNvbmR1Y2l2ZSB0byBwcmVzZXJ2aW5nIHRoZSBhcmVhcycgbmF0dXJhbCBhbmQgaGlzdG9yaWNcbnZhbHVlcy4gVGhlIGNhcGl0YWwgZGV2ZWxvcG1lbnQgcHJvZ3JhbSBoYXMgbm8gcG9zaXRpb25zLiBUaGUgcHJvZ3JhbSBpcyB6ZXJvZWQgb3V0IGVhY2ggeWVhciBhbmQgYWNjb3VudHMgZm9yIHRoZSBtYWludGVuYW5jZSBhbmRcbnJlcGFpciBhbmQgY2FwaXRhbCBkZXZlbG9wbWVudCBjb3N0cyBvZiB0aGUgcGFya3MifV19LCB7ImFyZWEiOiAiTmF0dXJhbCBSZXNvdXJjZXMiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgV2F0ZXIgUmVzb3VyY2VzIiwgImZ0cCI6IDE4Ny43NSwgImdmIjogNTg2ODg2MDAsICJkZWQiOiA2Nzg4MjAwLCAiZmVkIjogNTE4OTAxMDAsICJ0b3RhbCI6IDExNzM2NjkwMCwgImZlZF9zaGFyZSI6IDAuNDQyMSwgImRlZF9zaGFyZSI6IDAuMDU3OCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNjMiLCAiUzE0MzEiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIlNlY3Rpb24gNCBvZiBTMTQzMSBpbmNsdWRlZCBvbmUgc2VjdGlvbiBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyxcbndoaWNoIGRpcmVjdGVkIHRoZSB1c2Ugb2YgZnVuZHMgZm9yIHdhdGVyIHJpZ2h0IGNsYWltcyBmb3IgRlkgMjAyNy4gTGFuZ3VhZ2Ugd2FzIGluY2x1c2l2ZSBvZiBhbGwgZ2VuZXJhbCBzdHJlYW0gYWRqdWRpY2F0aW9ucywgaW5jbHVkaW5nXG50aG9zZSB3aXRoaW4gdGhlIE5vcnRoZXJuIElkYWhvIEFkanVkaWNhdGlvbiBQcm9ncmFtIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiTWFuYWdlbWVudCBhbmQgU3VwcG9ydCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBEZXBhcnRtZW50IG9mIFdhdGVyIFJlc291cmNlcyBhbmQgdGhlIElkYWhvIFdhdGVyIFJlc291cmNlIEJvYXJkIGFyZSByZXNwb25zaWJsZSBmb3IgY2Fycnlpbmcgb3V0IHRoZVxud2F0ZXIgcmVzb3VyY2UgbGF3cyBvZiB0aGUgc3RhdGUuIFRoZXkgZmFjaWxpdGF0ZSBhbmQgZW5jb3VyYWdlIHRoZSBvcmRlcmx5IG1hbmFnZW1lbnQsIGNvbnNlcnZhdGlvbiwgZGV2ZWxvcG1lbnQsIGFuZCBvcHRpbXVtIHVzZSBvZiB0aGVcbnN0YXRlJ3Mgd2F0ZXIgcmVzb3VyY2VzLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbnMgNDItMTcwMSBhbmQgU2VjdGlvbiA0Mi0xNzMyLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlBsYW5uaW5nIGFuZCBUZWNobmljYWwgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgcHVycG9zZSBvZiB0aGUgUGxhbm5pbmcgYW5kIFRlY2huaWNhbCBTZXJ2aWNlcyBQcm9ncmFtIGlzIHRvIHByb3ZpZGUgc3RhZmYgc3VwcG9ydCBmb3IgdGhlIFdhdGVyIFJlc291cmNlXG5Cb2FyZCBpbiBkZXZlbG9waW5nIG11bHRpcGxlIHVzZSB3YXRlciBwb2xpY2llcy4gVW5kZXIgZ3VpZGFuY2Ugb2YgdGhlIGJvYXJkLCBkZXBhcnRtZW50IHN0YWZmIGFyZSByZXNwb25zaWJsZSBmb3I6IHVuZGVydGFraW5nIHN0dWRpZXMgb2ZcbndhdGVyIHByb2plY3RzOyBjb2xsZWN0aW5nIGFuZCBhbmFseXppbmcgZGF0YSB0aHJvdWdoIHN0cmVhbSBnYXVnaW5nLCByZW1vdGUgc2Vuc2luZywgc3VyZmFjZSBhbmQgZ3JvdW5kd2F0ZXIgcXVhbGl0eSBtb25pdG9yaW5nLCBhbmRcbm1pbmltdW0gc3RyZWFtIGZsb3cgYW5hbHlzaXM7IGFuZCBwcm92aWRpbmcgdGVjaG5pY2FsIHN1cHBvcnQgdG8gdGhlIGRlcGFydG1lbnQncyByZWd1bGF0b3J5IHByb2dyYW1zLCBpbmNsdWRpbmcgZGFtIHNhZmV0eSwgc3RyZWFtXG5jaGFubmVsIHByb3RlY3Rpb24sIHdhdGVyIHJpZ2h0cywgZ2VvdGhlcm1hbCByZXNvdXJjZXMsIGFuZCBhZGp1ZGljYXRpb25zIn0sIHsic3ViX3Byb2dyYW0iOiAiV2F0ZXIgTWFuYWdlbWVudCIsICJ0ZXh0IjogIlRoZSBXYXRlciBNYW5hZ2VtZW50IFByb2dyYW0gY29uc2lzdHMgb2YgdHdvIG1ham9yIHBvbGljeSBhcmVhczogMSkgcmVzb3VyY2UgcHJvdGVjdGlvbiwgd2hpY2ggaW5jbHVkZXNcbnJlZ3VsYXRpb24gb2Ygd2F0ZXIgd2VsbHMsIGRhbSBhbmQgbWluZSB0YWlsaW5nIHN0cnVjdHVyZXMsIHN0cmVhbSBjaGFubmVsIHByb3RlY3Rpb24sIGluamVjdGlvbiBhbmQgd2FzdGUgZGlzcG9zYWwgd2VsbHMsIGFuZCBmbG9vZCBpbnN1cmFuY2VcbnByb2dyYW1zOyBhbmQgMikgd2F0ZXIgYWxsb2NhdGlvbiwgd2hpY2ggaW5jbHVkZXMgdGhlIHdhdGVyIHJpZ2h0cyBwcm9jZXNzLCBlbmZvcmNpbmcgc3RhdGUgbGF3IHRvIHByZXZlbnQgdW5hdXRob3JpemVkIHVzZSBvZiB3YXRlciwgYW5kXG5hc3Npc3RpbmcgcmlnaHQgaG9sZGVycyBpbiB0aGUgZmFpciBhbmQgZWZmaWNpZW50IGRpc3RyaWJ1dGlvbiBhbmQgdXNlIG9mIHdhdGVyIn0sIHsic3ViX3Byb2dyYW0iOiAiTm9ydGhlcm4gSWRhaG8gQWRqdWRpY2F0aW9uIiwgInRleHQiOiAiSDU0NSBvZiAyMDA2IGF1dGhvcml6ZWQgYSBnZW5lcmFsIHdhdGVyIHJpZ2h0cyBhZGp1ZGljYXRpb24gZm9yIHRob3NlIHBvcnRpb25zIG9mIG5vcnRoZXJuIElkYWhvIHRoYXQgYXJlIG5vdFxuaW5jbHVkZWQgaW4gdGhlIFNuYWtlIFJpdmVyIEJhc2luLiBUaG9zZSBiYXNpbnMgYXJlIHRoZSBDb2V1ciBkJ0FsZW5lLVNwb2thbmUgUml2ZXIgQmFzaW4sIHRoZSBQYWxvdXNlIFJpdmVyIEJhc2luLCBLb290ZW5haSBSaXZlclxuQmFzaW4sIGFuZCBDbGFyayBGb3JrLVBlbmQgT3JlaWxsZSBSaXZlciBCYXNpbnMuIFRoZSBMZWdpc2xhdHVyZSBwcm92aWRlZCBmdW5kaW5nIGluIDIwMDYgdG8gdGhlIERlcGFydG1lbnQgb2YgV2F0ZXIgUmVzb3VyY2VzIHRvIGJlZ2luXG50aGUgYWRqdWRpY2F0aW9uIG9mIHRoZSBDb2V1ciBkJ0FsZW5lLVNwb2thbmUgQmFzaW4uIEluIEZZIDIwMTYsIHRoZSBMZWdpc2xhdHVyZSByZXF1aXJlZCBpbiBkaXJlY3RvciB0byBjb21tZW5jZSB0aGUgUGFsb3VzZSBSaXZlciBCYXNpblxuYWRqdWRpY2F0aW9uIGFuZCBtYWRlIGFkZGl0aW9uYWwgYXBwcm9wcmlhdGlvbiB0byBzdXBwb3J0IHRoZSBhY3Rpdml0aWVzLiBJbiAyMDI0LCB0aCJ9LCB7InN1Yl9wcm9ncmFtIjogIkJlYXIgUml2ZXIgQmFzaW4gQWRqdWRpY2F0aW9uIiwgInRleHQiOiAiSDM4MiBvZiAyMDIwIGF1dGhvcml6ZWQgYSBnZW5lcmFsIHdhdGVyIHJpZ2h0cyBhZGp1ZGljYXRpb24gb2YgdGhlIEJlYXIgUml2ZXIgQmFzaW4uIFRoZSBMZWdpc2xhdHVyZSBwcm92aWRlZFxuZnVuZGluZyBpbiBGWSAyMDIyIHRvIHRoZSBEZXBhcnRtZW50IG9mIFdhdGVyIFJlc291cmNlcyB0byBiZWdpbiB0aGUgYWRqdWRpY2F0aW9uIG9mIHRoZSBCZWFyIFJpdmVyIEJhc2luLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA0Mi1cbjE0MDZDLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJXYXRlciBSZXNvdXJjZXMgKGNvcmUgb3BlcmF0aW9ucykiLCAiZ2YiOiA1NDg1MzYwMCwgImRlZCI6IDYyNTM0MDAsICJmZWQiOiA1MTg5MDEwMCwgInRvdGFsIjogMTEyOTk3MTAwLCAiZmVkX3NoYXJlIjogMC40NTkyLCAiZGVkX3NoYXJlIjogMC4wNTUzLCAiYmlsbHMiOiBbIlMxMzYzIiwgIlMxNDMxIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDQgb2YgUzE0MzEgaW5jbHVkZWQgb25lIHNlY3Rpb24gb2YgY29uZGl0aW9ucywgbGltaXRhdGlvbnMsIGFuZCByZXN0cmljdGlvbnMsXG53aGljaCBkaXJlY3RlZCB0aGUgdXNlIG9mIGZ1bmRzIGZvciB3YXRlciByaWdodCBjbGFpbXMgZm9yIEZZIDIwMjcuIExhbmd1YWdlIHdhcyBpbmNsdXNpdmUgb2YgYWxsIGdlbmVyYWwgc3RyZWFtIGFkanVkaWNhdGlvbnMsIGluY2x1ZGluZ1xudGhvc2Ugd2l0aGluIHRoZSBOb3J0aGVybiBJZGFobyBBZGp1ZGljYXRpb24gUHJvZ3JhbSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIk1hbmFnZW1lbnQgYW5kIFN1cHBvcnQgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgRGVwYXJ0bWVudCBvZiBXYXRlciBSZXNvdXJjZXMgYW5kIHRoZSBJZGFobyBXYXRlciBSZXNvdXJjZSBCb2FyZCBhcmUgcmVzcG9uc2libGUgZm9yIGNhcnJ5aW5nIG91dCB0aGVcbndhdGVyIHJlc291cmNlIGxhd3Mgb2YgdGhlIHN0YXRlLiBUaGV5IGZhY2lsaXRhdGUgYW5kIGVuY291cmFnZSB0aGUgb3JkZXJseSBtYW5hZ2VtZW50LCBjb25zZXJ2YXRpb24sIGRldmVsb3BtZW50LCBhbmQgb3B0aW11bSB1c2Ugb2YgdGhlXG5zdGF0ZSdzIHdhdGVyIHJlc291cmNlcy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb25zIDQyLTE3MDEgYW5kIFNlY3Rpb24gNDItMTczMiwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJQbGFubmluZyBhbmQgVGVjaG5pY2FsIFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIHB1cnBvc2Ugb2YgdGhlIFBsYW5uaW5nIGFuZCBUZWNobmljYWwgU2VydmljZXMgUHJvZ3JhbSBpcyB0byBwcm92aWRlIHN0YWZmIHN1cHBvcnQgZm9yIHRoZSBXYXRlciBSZXNvdXJjZVxuQm9hcmQgaW4gZGV2ZWxvcGluZyBtdWx0aXBsZSB1c2Ugd2F0ZXIgcG9saWNpZXMuIFVuZGVyIGd1aWRhbmNlIG9mIHRoZSBib2FyZCwgZGVwYXJ0bWVudCBzdGFmZiBhcmUgcmVzcG9uc2libGUgZm9yOiB1bmRlcnRha2luZyBzdHVkaWVzIG9mXG53YXRlciBwcm9qZWN0czsgY29sbGVjdGluZyBhbmQgYW5hbHl6aW5nIGRhdGEgdGhyb3VnaCBzdHJlYW0gZ2F1Z2luZywgcmVtb3RlIHNlbnNpbmcsIHN1cmZhY2UgYW5kIGdyb3VuZHdhdGVyIHF1YWxpdHkgbW9uaXRvcmluZywgYW5kXG5taW5pbXVtIHN0cmVhbSBmbG93IGFuYWx5c2lzOyBhbmQgcHJvdmlkaW5nIHRlY2huaWNhbCBzdXBwb3J0IHRvIHRoZSBkZXBhcnRtZW50J3MgcmVndWxhdG9yeSBwcm9ncmFtcywgaW5jbHVkaW5nIGRhbSAifSwgeyJzdWJfcHJvZ3JhbSI6ICJXYXRlciBNYW5hZ2VtZW50IiwgInRleHQiOiAiVGhlIFdhdGVyIE1hbmFnZW1lbnQgUHJvZ3JhbSBjb25zaXN0cyBvZiB0d28gbWFqb3IgcG9saWN5IGFyZWFzOiAxKSByZXNvdXJjZSBwcm90ZWN0aW9uLCB3aGljaCBpbmNsdWRlc1xucmVndWxhdGlvbiBvZiB3YXRlciB3ZWxscywgZGFtIGFuZCBtaW5lIHRhaWxpbmcgc3RydWN0dXJlcywgc3RyZWFtIGNoYW5uZWwgcHJvdGVjdGlvbiwgaW5qZWN0aW9uIGFuZCB3YXN0ZSBkaXNwb3NhbCB3ZWxscywgYW5kIGZsb29kIGluc3VyYW5jZVxucHJvZ3JhbXM7IGFuZCAyKSB3YXRlciBhbGxvY2F0aW9uLCB3aGljaCBpbmNsdWRlcyB0aGUgd2F0ZXIgcmlnaHRzIHByb2Nlc3MsIGVuZm9yY2luZyBzdGF0ZSBsYXcgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgdXNlIG9mIHdhdGVyLCBhbmRcbmFzc2lzdGluZyByaWdodCBob2xkZXJzIGluIHRoZSBmYWlyIGFuZCBlZmZpY2llbnQgZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2Ygd2F0ZXIifSwgeyJzdWJfcHJvZ3JhbSI6ICJOb3J0aGVybiBJZGFobyBBZGp1ZGljYXRpb24iLCAidGV4dCI6ICJINTQ1IG9mIDIwMDYgYXV0aG9yaXplZCBhIGdlbmVyYWwgd2F0ZXIgcmlnaHRzIGFkanVkaWNhdGlvbiBmb3IgdGhvc2UgcG9ydGlvbnMgb2Ygbm9ydGhlcm4gSWRhaG8gdGhhdCBhcmUgbm90XG5pbmNsdWRlZCBpbiB0aGUgU25ha2UgUml2ZXIgQmFzaW4uIFRob3NlIGJhc2lucyBhcmUgdGhlIENvZXVyIGQnQWxlbmUtU3Bva2FuZSBSaXZlciBCYXNpbiwgdGhlIFBhbG91c2UgUml2ZXIgQmFzaW4sIEtvb3RlbmFpIFJpdmVyXG5CYXNpbiwgYW5kIENsYXJrIEZvcmstUGVuZCBPcmVpbGxlIFJpdmVyIEJhc2lucy4gVGhlIExlZ2lzbGF0dXJlIHByb3ZpZGVkIGZ1bmRpbmcgaW4gMjAwNiB0byB0aGUgRGVwYXJ0bWVudCBvZiBXYXRlciBSZXNvdXJjZXMgdG8gYmVnaW5cbnRoZSBhZGp1ZGljYXRpb24gb2YgdGhlIENvZXVyIGQnQWxlbmUtU3Bva2FuZSBCYXNpbi4gSW4gRlkgMjAxNiwgdGhlIExlZ2lzbGF0dXJlIHJlcXVpcmVkIGluIGRpcmVjdG9yIHRvIGNvbW1lbmNlIHRoZSBQYWxvdSJ9LCB7InN1Yl9wcm9ncmFtIjogIkJlYXIgUml2ZXIgQmFzaW4gQWRqdWRpY2F0aW9uIiwgInRleHQiOiAiSDM4MiBvZiAyMDIwIGF1dGhvcml6ZWQgYSBnZW5lcmFsIHdhdGVyIHJpZ2h0cyBhZGp1ZGljYXRpb24gb2YgdGhlIEJlYXIgUml2ZXIgQmFzaW4uIFRoZSBMZWdpc2xhdHVyZSBwcm92aWRlZFxuZnVuZGluZyBpbiBGWSAyMDIyIHRvIHRoZSBEZXBhcnRtZW50IG9mIFdhdGVyIFJlc291cmNlcyB0byBiZWdpbiB0aGUgYWRqdWRpY2F0aW9uIG9mIHRoZSBCZWFyIFJpdmVyIEJhc2luLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA0Mi1cbjE0MDZDLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsibmFtZSI6ICJTb2lsIGFuZCBXYXRlciBDb25zZXJ2YXRpb24gQ29tbWlzc2lvbiIsICJnZiI6IDM4MzUwMDAsICJkZWQiOiA1MzQ4MDAsICJmZWQiOiAwLCAidG90YWwiOiA0MzY5ODAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4xMjI0LCAiYmlsbHMiOiBbIlMxNDA1Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDMgb2YgUzE0MDUgZGlyZWN0ZWQgdGhlIGVxdWFsIGRpc3RyaWJ1dGlvbiBvZiAkMzAwLDAwMCBhbW9uZyB0aGUgNTAgc29pbCBhbmRcbndhdGVyIGRpc3RyaWN0cyJ9LCB7InR5cGUiOiAiT1RIRVIgTEVHSVNMQVRJT04iLCAidGV4dCI6ICJINTAzIGFtZW5kZWQgU2VjdGlvbiAyMi0yNzE4LCBJZGFobyBDb2RlLCB0byBlc3RhYmxpc2ggU29pbCBhbmQgV2F0ZXIgQ29uc2VydmF0aW9uIENvbW1pc3Npb24gd2l0aGluIHRoZVxuRGVwYXJ0bWVudCBvZiBXYXRlciBSZXNvdXJjZXMgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIEFncmljdWx0dXJlIHRvIHN0cmVhbWxpbmUgYWRtaW5pc3RyYXRpdmUgZnVuY3Rpb25zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQmVhciBSaXZlciBCYXNpbiBBZGp1ZGljYXRpb24iLCAidGV4dCI6ICJUaGUgU29pbCBhbmQgV2F0ZXIgQ29uc2VydmF0aW9uIENvbW1pc3Npb24gY29uc2lzdHMgb2Ygc2V2ZW4gbWVtYmVycyBhcHBvaW50ZWQgYnkgdGhlIEdvdmVybm9yLiBUaGVcbmNvbW1pc3Npb24ncyBtaXNzaW9uIGlzIHRvIGZhY2lsaXRhdGUgY29vcmRpbmF0ZWQgbm9uLXJlZ3VsYXRvcnksIHZvbHVudGFyeSwgYW5kIGxvY2FsbHktbGVkIGNvbnNlcnZhdGlvbiBieSBmZWRlcmFsLCBzdGF0ZSwgYW5kIGxvY2FsXG5nb3Zlcm5tZW50cyBpbmNsdWRpbmcgSWRhaG8ncyBjb25zZXJ2YXRpb24gZGlzdHJpY3RzIGFuZCBvdGhlciBwYXJ0bmVycy4gVGhlIGdvYWwgb2YgdGhlIGNvbW1pc3Npb24gaXMgdG8gY29uc2VydmUsIHN1c3RhaW4sIGltcHJvdmUsIGFuZFxuZW5oYW5jZSBzb2lsLCB3YXRlciwgYWlyLCBwbGFudCwgYW5kIGFuaW1hbCByZXNvdXJjZXMuIEJlZ2lubmluZyBpbiBGWSAyMDI3LCB0aGUgU29pbCBhbmQgV2F0ZXIgQ29uc2VydmF0aW9uIENvbW1pc3Npb24gd2FzIHJlbSJ9LCB7InN1Yl9wcm9ncmFtIjogIkFuaW1hbCBEYW1hZ2UgQ29udHJvbCIsICJ0ZXh0IjogIlRoZSBTb2lsIGFuZCBXYXRlciBDb25zZXJ2YXRpb24gQ29tbWlzc2lvbiBjb25zaXN0cyBvZiBzZXZlbiBtZW1iZXJzIGFwcG9pbnRlZCBieSB0aGUgR292ZXJub3IuIFRoZVxuY29tbWlzc2lvbidzIG1pc3Npb24gaXMgdG8gZmFjaWxpdGF0ZSBjb29yZGluYXRlZCBub24tcmVndWxhdG9yeSwgdm9sdW50YXJ5LCBhbmQgbG9jYWxseS1sZWQgY29uc2VydmF0aW9uIGJ5IGZlZGVyYWwsIHN0YXRlLCBhbmQgbG9jYWxcbmdvdmVybm1lbnRzIGluY2x1ZGluZyBJZGFobydzIGNvbnNlcnZhdGlvbiBkaXN0cmljdHMgYW5kIG90aGVyIHBhcnRuZXJzLiBUaGUgZ29hbCBvZiB0aGUgY29tbWlzc2lvbiBpcyB0byBjb25zZXJ2ZSwgc3VzdGFpbiwgaW1wcm92ZSwgYW5kXG5lbmhhbmNlIHNvaWwsIHdhdGVyLCBhaXIsIHBsYW50LCBhbmQgYW5pbWFsIHJlc291cmNlcy4gQmVnaW5uaW5nIGluIEZZIDIwMjcsIHRoZSBTb2lsIGFuZCBXYXRlciBDb25zZXJ2YXRpb24gQ29tbWlzc2lvbiB3YXMgcmVtIn1dfV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgQWdyaWN1bHR1cmUiLCAiZnRwIjogMjMwLjAsICJnZiI6IDE1MDE0NjAwLCAiZGVkIjogMzI3MDI5MDAsICJmZWQiOiA3NjczODAwLCAidG90YWwiOiA1NTM5MTMwMCwgImZlZF9zaGFyZSI6IDAuMTM4NSwgImRlZF9zaGFyZSI6IDAuNTkwNCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNzMiLCAiUzE0MDQiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBsb25nLXJhbmdlIGdvYWwgb2YgdGhlIERlcGFydG1lbnQgb2YgQWdyaWN1bHR1cmUgaXMgdG8gZ3VhcmFudGVlIHRoYXQgSWRhaG8gYWdyaWN1bHR1cmFsIHByb2R1Y3RzIGFyZSBvZiBhXG5oaWdoIHF1YWxpdHksIGRpc2Vhc2UtZnJlZSwgYW5kIHRoYXQgdGhleSBtZWV0IGZlZGVyYWwgYW5kIHN0YXRlIGxhd3MsIHJ1bGVzLCBhbmQgcmVndWxhdGlvbnMuIEl0IGlzIGFsc28gdGhlIGdvYWwgb2YgdGhlIGRlcGFydG1lbnQgdG8gcHJvdGVjdFxuYm90aCB0aGUgY29uc3VtZXIgYW5kIHRoZSBwcm9kdWNlciBmcm9tIGZyYXVkLCBwcm92aWRlIGFzc2lzdGFuY2UgdG8gdGhlIGluZHVzdHJ5IGluIG1hcmtldGluZyBJZGFobyBhZ3JpY3VsdHVyYWwgcHJvZHVjdHMsIGFuZCBpbXByb3ZlIGZhcm1cbmFuZCBhZ3JpY3VsdHVyZSBidXNpbmVzcyBpbmNvbWUuIFRoZSBBZG1pbmlzdHJhdGlvbiBQcm9ncmFtIGNvb3JkaW5hdGVzIHRoZSBhY2NvdW50aW5nLCBwYXlyb2xsLCBsZWdhbCwgaW5mb3JtYXRpb24gdGVjaG5vbG9neSwgYW5kXG5wZXJzb25uZWwgZnVuY3Rpb25zIGZvciB0aGUgZGVwYXJ0bWVudC4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMjIifSwgeyJzdWJfcHJvZ3JhbSI6ICJBbmltYWwgSW5kdXN0cmllcyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBBbmltYWwgSW5kdXN0cmllcyBoYXMgdGhyZWUgYnVyZWF1czogdGhlIEFuaW1hbCBIZWFsdGggQnVyZWF1IChWZXRlcmluYXJ5IFNlcnZpY2VzKSwgVmVnZXRhdGlvblxuTWFuYWdlbWVudCAocmFuZ2VsYW5kIHJlc291cmNlcyksIGFuZCB0aGUgQnVyZWF1IG9mIEFuaW1hbCBNYW5hZ2VtZW50IChpbmNsdWRpbmcgZGFpcnksIGxpdmVzdG9jayBpbnNwZWN0aW9uLCBhbmltYWwgd2FzdGUgbWFuYWdlbWVudCxcbmFuZCB0aGUgYW5pbWFsIGxhYm9yYXRvcnkpLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAyMi0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiQWdyaWN1bHR1cmFsIFJlc291cmNlcyIsICJ0ZXh0IjogIlRoZSBBZ3JpY3VsdHVyYWwgUmVzb3VyY2VzIFByb2dyYW0gd2FzIGNyZWF0ZWQgdG8gcHJvdGVjdCB0aGUgcHVibGljIGhlYWx0aCwgZW52aXJvbm1lbnQsIGxpdmVzdG9jaywgYW5kIHdpbGRsaWZlXG5mcm9tIHBvc3NpYmxlIGFkdmVyc2UgZWZmZWN0cyByZXN1bHRpbmcgZnJvbSB0aGUgaW1wcm9wZXIgdXNlIG9mIHBlc3RpY2lkZXMgb3IgZmVydGlsaXplcnMuIFRoZSBkaXZpc2lvbiBwcm92aWRlcyBlZHVjYXRpb25hbCBwcm9ncmFtcyBhbmRcbnBhcnRpY2lwYXRlcyBpbiBwdWJsaWMgYW5kIGdvdmVybm1lbnRhbCBwcm9ncmFtcyBhaW1lZCBhdCByZWR1Y2luZyBhZHZlcnNlIGVmZmVjdHMgdGhhdCBtYXkgcmVzdWx0IGZyb20gYWdyaWN1bHR1cmFsIHByYWN0aWNlcyBvciB1cmJhblxuYWN0aXZpdGllcyBpbnZvbHZpbmcgcGVzdGljaWRlIG9yIGZlcnRpbGl6ZXIgdXNlLiBQcm9ncmFtcyBpbmNsdWRlIGdyb3VuZCBhbmQgc3VyZmFjZSB3YXRlciBxdWFsaXR5IHByb3RlY3Rpb24sIHdvcmtlciBwcm90ZWN0aW9uLCBlbmRhbmdlcmVkXG5zcGVjaWVzIHByb3RlY3Rpb24sIGFuZCB1bnVzYWJsZSBwZXN0aWNpZGUgZGlzcG9zYWwuIFtTdGF0dXRvcnkgQXV0aG8ifSwgeyJzdWJfcHJvZ3JhbSI6ICJQbGFudCBJbmR1c3RyaWVzIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIFBsYW50IEluZHVzdHJpZXMgaW5jbHVkZXMgdGhlIHBsYW50LCBmZXJ0aWxpemVyLCBhbmQgc2VlZCBsYWJvcmF0b3JpZXM7IGFuZCB0aGUgcGxhbnQsIGZlZWQgYW5kXG5mZXJ0aWxpemVyLCBhbmQgbm94aW91cyB3ZWVkIGFuZCBpbnZhc2l2ZSBzcGVjaWVzIHByb2dyYW1zLiBJdCBhbHNvIGluY2x1ZGVzLCBmb3IgYnVkZ2V0YXJ5IHB1cnBvc2VzLCB0aGUgRm9vZCBRdWFsaXR5IEFzc3VyYW5jZSBMYWIgYW5kXG50aGUgSG9uZXkgQ29tbWlzc2lvbi4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gMjItMTAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkFncmljdWx0dXJhbCBJbnNwZWN0aW9ucyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBBZ3JpY3VsdHVyYWwgSW5zcGVjdGlvbnMgaGFzIHRocmVlIGJ1cmVhdXMgdGhhdCBpbmNsdWRlIHRoZSBCdXJlYXUgb2YgV2VpZ2h0cyBhbmQgTWVhc3VyZXMsIHRoZVxuQnVyZWF1IG9mIFdhcmVob3VzZSBDb250cm9sLCBhbmQgdGhlIEJ1cmVhdSBvZiBTaGlwcGluZyBhbmQgTWFya2V0IEluc3BlY3Rpb25zLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAyMi0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiTWFya2V0IERldmVsb3BtZW50IiwgInRleHQiOiAiVGhlIE1hcmtldCBEZXZlbG9wbWVudCBQcm9ncmFtIGFzc2lzdHMgSWRhaG8gYWdyaWN1bHR1cmFsIHByb2R1Y2VycyB0byBpbmNyZWFzZSB0aGVpciBwcm9maXRhYmlsaXR5LiBJdCBkb2VzIHNvXG5ieSBwcm92aWRpbmcgY3VycmVudCBhbmQgYWNjdXJhdGUgbWFya2V0IGFuYWx5c2lzIHRvIG1ha2UgcHJvZml0YWJsZSBtYXJrZXRpbmcgYW5kIHByb2R1Y3Rpb24gZGVjaXNpb25zOyBwcm92aWRpbmcgc3VwcG9ydCBhbmQgZnVuZGluZyB0b1xuZGl2ZXJzaWZ5IHRoZWlyIHByb2R1Y3RzIGFuZCBtYXhpbWl6ZSBwcm9maXRzIG9uIHRoZWlyIG9wZXJhdGlvbnM7IGVuaGFuY2luZyBtYXJrZXRpbmcgb3Bwb3J0dW5pdGllcyBmb3IgdGhlaXIgcHJvZHVjdHM7IGFuZCBhY3RpbmcgYXMgYSBsaWFpc29uXG5iZXR3ZWVuIHRoZSBwcm9kdWNlcnMgYW5kIGZlZGVyYWwgbWFya2V0aW5nIHByb2dyYW1zLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAyMi0xMDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiQW5pbWFsIERhbWFnZSBDb250cm9sIiwgInRleHQiOiAiVGhlIFVuaXRlZCBTdGF0ZXMgRGVwYXJ0bWVudCBvZiBBZ3JpY3VsdHVyZSAoVVNEQSkgQW5pbWFsIGFuZCBQbGFudCBIZWFsdGggSW5zcGVjdGlvbiBTZXJ2aWNlIChBUEhJUylcbldpbGRsaWZlIFNlcnZpY2VzIFByb2dyYW0gb3BlcmF0ZXMgaW4gSWRhaG8gdW5kZXIgYSBtZW1vcmFuZHVtIG9mIHVuZGVyc3RhbmRpbmcgd2l0aCB0aGUgSWRhaG8gU3RhdGUgQW5pbWFsIERhbWFnZSBDb250cm9sIEJvYXJkLlxuVGhlIGNoYWlybWFuIG9mIHRoZSBTaGVlcCBhbmQgR29hdCBIZWFsdGggQm9hcmQgaXMgdGhlIGNoYWlybWFuIG9mIHRoZSBTdGF0ZSBBbmltYWwgRGFtYWdlIENvbnRyb2wgQm9hcmQuIE90aGVyIG1lbWJlcnMgYXJlIHRoZVxuRGlyZWN0b3Igb2YgdGhlIFN0YXRlIERlcGFydG1lbnQgb2YgQWdyaWN1bHR1cmUsIHRoZSBEaXJlY3RvciBvZiB0aGUgU3RhdGUgRGVwYXJ0bWVudCBvZiBGaXNoIGFuZCBHYW1lLCBvbmUgcmVwcmVzZW50YXRpdmUgZnJvbSB0aGUgSWRhaG9cbkNhdHRsZSBBc3NvY2lhdGlvbiwgYW5kIHRoZSBjaGFpcm1hbiBvZiB0aGUgYm9hcmQgb2YgZGlyZWN0b3JzIGZvciBlYWNoIG9mIHRoZSBmaXZlIGFuaW1hbCBkYW1hZ2UgY29udCJ9LCB7InN1Yl9wcm9ncmFtIjogIkFuaW1hbCBEYW1hZ2UgQ29udHJvbCIsICJ0ZXh0IjogIlRoZSBJZGFobyBTaGVlcCBhbmQgR29hdCBIZWFsdGggQm9hcmQgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHByb2dyYW0gaW52b2x2aW5nIGRpc2Vhc2UgYW5kIHByZWRhdG9yXG5jb250cm9sIHRvIGVuYWJsZSB0aGUgc2hlZXAgYW5kIGdvYXQgaW5kdXN0cmllcyB0byBtYWludGFpbiBoaWdoIHByb2R1Y3Rpb24gc3RhbmRhcmRzIGFuZCBlY29ub21pYyByZXR1cm5zLiBUaGUgYm9hcmQncyBkZWRpY2F0ZWQgZnVuZCwgYXNcbmF1dGhvcml6ZWQgaW4gU2VjdGlvbiAyNS0xMzEsIElkYWhvIENvZGUsIGlzIGZyb20gYW4gYW5udWFsIGFzc2Vzc21lbnQgbm90IHRvIGV4Y2VlZCAxMiBjZW50cyBwZXIgcG91bmQgb2Ygd29vbCBvbiBzaGVlcCBhbmQgYW5cbmFzc2Vzc21lbnQgb24gZ29hdHMgb24gYSBwZXIgaGVhZCBiYXNpcy4gVGhlIGN1cnJlbnQgYXNzZXNzbWVudCBpcyBlaWdodCBjZW50cyB3aGljaCBpcyBhcHBvcnRpb25lZCBhdCB0aHJlZSBjZW50cyBmb3IgYW5pbWFsIGhlYWx0aCwgdGhyZWVcbmNlbnRzIGZvciBwcmVkYXRvciBjb250cm9sIChpbmNsdWRlZCBpbiB0aGUgQW5pbWFsIERhbWFnZSBDb250cm9sIFByb2dyYW0pLCBhbmQgdHdvIGNlbnRzIGYifV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgQ29tbWVyY2UiLCAiZnRwIjogNDEuMCwgImdmIjogNTU5NzkwMCwgImRlZCI6IDMxNDIxMjAwLCAiZmVkIjogMTY2NjUwMjAwLCAidG90YWwiOiAyMDM2NjkzMDAsICJmZWRfc2hhcmUiOiAwLjgxODIsICJkZWRfc2hhcmUiOiAwLjE1NDMsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTMTM3MyBpbmNsdWRlZCBvbmUgc2VjdGlvbiBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucyByZWxhdGluZyB0byB0aGVcbkRlcGFydG1lbnQgb2YgQ29tbWVyY2UuIFNlY3Rpb24gOSBvZiBTMTM3MyBkaXJlY3RlZCB0aGF0IG1vbmV5cyBhcHByb3ByaWF0ZWQgZnJvbSB0aGUgQVJQQSBDYXBpdGFsIFByb2plY3RzIEZ1bmQgYW5kIEZlZGVyYWwgR3JhbnRcbkZ1bmQgZm9yIHRoZSBwdXJwb3NlIG9mIGJyb2FkYmFuZCBncmFudHMgc2hhbGwgYmUgYWxsb2NhdGVkIGF0IHRoZSBkaXJlY3Rpb24gb2YgdGhlIElkYWhvIEJyb2FkYmFuZCBBZHZpc29yeSBCb2FyZCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNvbW1lcmNlIiwgInRleHQiOiAiVGhlIERlcGFydG1lbnQgb2YgQ29tbWVyY2UgcHJvbW90ZXMgYSBoZWFsdGh5IHN0YXRlIGVjb25vbXkgYnkgd29ya2luZyB0bzogKDEpIGV4cGFuZCBleGlzdGluZyBJZGFob1xuaW5kdXN0cmllczsgKDIpIHByb21vdGUgaW52ZXN0bWVudHMgaW4gSWRhaG87ICgzKSBkZXZlbG9wIG1hcmtldHMgZm9yIElkYWhvIHByb2R1Y3RzIGFuZCBzZXJ2aWNlczsgKDQpIGF0dHJhY3QgbmV3IGJ1c2luZXNzZXMgdG8gSWRhaG87ICg1KVxucHJvbW90ZSBJZGFobydzIHRyYXZlbCBpbmR1c3RyeTsgKDYpIGltcHJvdmUgSWRhaG8ncyBpbWFnZTsgYW5kICg3KSBwcm92aWRlIHRlY2huaWNhbCBhc3Npc3RhbmNlIHRvIGxvY2FsIGdvdmVybm1lbnRzIGFuZCBhZG1pbmlzdGVyIHRoZVxuQ29tbXVuaXR5IERldmVsb3BtZW50IEJsb2NrIEdyYW50IHByb2dyYW0uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTQ3MDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn1dfSwgeyJhcmVhIjogIkVjb25vbWljIERldmVsb3BtZW50IiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIEZpbmFuY2UiLCAiZnRwIjogNzQuMCwgImdmIjogMCwgImRlZCI6IDExODgwMzAwLCAiZmVkIjogMCwgInRvdGFsIjogMTE4ODAzMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQnJvYWRiYW5kIE9mZmljZSIsICJ0ZXh0IjogIlRoZSBEZXBhcnRtZW50IG9mIEZpbmFuY2UgcmVndWxhdGVzIGZpbmFuY2lhbCBpbnN0aXR1dGlvbnMgYW5kIHRoZSBmaW5hbmNpYWwgc2VydmljZXMgaW5kdXN0cnkgd2l0aGluIHRoZSBzdGF0ZS5cblRoZSBkZXBhcnRtZW50IGFkbWluaXN0ZXJzIGFuZCBlbmZvcmNlcyAyMSByZWd1bGF0b3J5IHN0YXR1dGVzLCBlbmNvdXJhZ2luZyBsZWdpdGltYXRlIGZpbmFuY2lhbCB0cmFuc2FjdGlvbnMgd2hpbGUgcHJvdGVjdGluZyB0aGUgcHVibGljIGZyb21cbmZyYXVkLCB1bnNhZmUgcHJhY3RpY2VzLCBhbmQgdW5sYXdmdWwgY29uZHVjdC4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMjcwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIkluZHVzdHJpYWwgQ29tbWlzc2lvbiIsICJmdHAiOiAxMjkuMCwgImdmIjogMjc5NDAwLCAiZGVkIjogMjAzNDY3MDAsICJmZWQiOiAxNjM5MDAwLCAidG90YWwiOiAyMjI2NTEwMCwgImZlZF9zaGFyZSI6IDAuMDczNiwgImRlZF9zaGFyZSI6IDAuOTEzOCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNzMiLCAiUzEzODUiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21wZW5zYXRpb24iLCAidGV4dCI6ICJUaGUgQ29tcGVuc2F0aW9uIFByb2dyYW0gaW5jbHVkZXMgZW1wbG95ZXIgY29tcGxpYW5jZSwgYmVuZWZpdHMgYWRtaW5pc3RyYXRpb24sIG1hbmFnZW1lbnQgc2VydmljZXMsIGFuZFxuYWRqdWRpY2F0aW9uLiBUaGUgcHJvZ3JhbSBldmFsdWF0ZXMgcHJvcGVydHkgYW5kIGNhc3VhbHR5IGluc3VyZXJzIGFwcGx5aW5nIHRvIHdyaXRlIHdvcmtlcnMnIGNvbXBlbnNhdGlvbiBpbnN1cmFuY2UgYW5kIGVtcGxveWVyc1xucmVxdWVzdGluZyB0byBiZWNvbWUgc2VsZi1pbnN1cmVkOyBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgc2VjdXJpdGllcyBhcmUgaGVsZCBpbiB0aGUgc3RhdGUgdHJlYXN1cnkgdG8gcGF5IG91dHN0YW5kaW5nIHdvcmtlcnMnIGNvbXBlbnNhdGlvblxubGlhYmlsaXRpZXMgaW4gY2FzZSBvZiBpbnNvbHZlbmN5OyBlbmZvcmNlcyB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSB3b3JrZXJzXHUyMDE5IGNvbXBlbnNhdGlvbiBsYXcgdG8gZW5zdXJlIHRpbWVseSwgYWNjdXJhdGUgcGF5bWVudCB0byBpbmp1cmVkXG53b3JrZXJzOyBlbnN1cmVzIHRoYXQgZW1wbG95ZXJzIGFyZSBwcm92aWRpbmcgc3RhdHV0b3J5IGNvdmVyYWdlIHRvIGFsbCBlbGlnaWJsZSB3b3IifSwgeyJzdWJfcHJvZ3JhbSI6ICJSZWhhYmlsaXRhdGlvbiIsICJ0ZXh0IjogIlRoZSBSZWhhYmlsaXRhdGlvbiBQcm9ncmFtIHdhcyBlc3RhYmxpc2hlZCBpbiAxOTc4IHRvIHByb3ZpZGUgcmVoYWJpbGl0YXRpb24gY29uc3VsdGFudCBzZXJ2aWNlcyB3aXRoIHNwZWNpYWxcbmVtcGhhc2lzIG9uIGpvYiBwbGFjZW1lbnQuIEFjdGluZyBhcyBhIG5ldXRyYWwgdGhpcmQgcGFydHkgdG8gaW5qdXJlZCB3b3JrZXJzIGFuZCBlbXBsb3llcnMsIHRoZSBwcm9ncmFtIGhlbHBzIHdvcmtlcnMgZmluZCBnYWluZnVsXG5lbXBsb3ltZW50IGF0IGEgd2FnZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGVpciBwcmUtaW5qdXJ5IGluY29tZS4gQ29uc3VsdGFudHMgc2VydmUgaW5qdXJlZCB3b3JrZXJzIGZyb20gZmllbGQgb2ZmaWNlcyBpbiBDb2V1ciBkJ0FsZW5lLFxuTGV3aXN0b24sIFNhbmRwb2ludCwgQ2FsZHdlbGwsIFBheWV0dGUsIEJvaXNlLCBUd2luIEZhbGxzLCBQb2NhdGVsbG8sIElkYWhvIEZhbGxzLCBhbmQgQnVybGV5LiBVcG9uIHJlY2VpdmluZyBhIHJlZmVycmFsIGZyb20gaW5kdXN0cnkgb3Igb3RoZXJcbnNvdXJjZXMsIGZpZWxkIGNvbnN1bHRhbnRzIG1ha2UgY29udGFjdCB3aXRoIHRoZSBpbmp1cmVkIHdvcmtlciBhcyBzb29uIGEifSwgeyJzdWJfcHJvZ3JhbSI6ICJDcmltZSBWaWN0aW1zIENvbXBlbnNhdGlvbiIsICJ0ZXh0IjogIlRoZSBDcmltZSBWaWN0aW1zIENvbXBlbnNhdGlvbiBQcm9ncmFtIHdhcyBlc3RhYmxpc2hlZCBpbiAxOTg2IHRvIHByb3ZpZGUgZmluYW5jaWFsIGFzc2lzdGFuY2UgdG8gaW5ub2NlbnRcbnZpY3RpbXMgb2YgY3JpbWUuIEJlbmVmaXRzIGFyZSBwYWlkIGZvciBjb3N0cyBzdWNoIGFzIG1lZGljYWwgYW5kIG1lbnRhbCBoZWFsdGggY2FyZSwgZXhhbWluYXRpb25zLCBmdW5lcmFsIGV4cGVuc2VzIGZvciB2aWN0aW1zLCBhbmQgbG9zdFxud2FnZXMgZm9yIHZpY3RpbXMgd2hvIGFyZSB1bmFibGUgdG8gd29yayBhcyBhIHJlc3VsdCBvZiBhIGNyaW1lLCB1cCB0byBhIG1heGltdW0gb2YgJDI1LDAwMCBwZXIgdmljdGltLCBwZXIgY3JpbWUuIEJlbmVmaXRzIGFyZSBub3QgcGF5YWJsZVxuZm9yIHByb3BlcnR5IGRhbWFnZS4gRnVuZGluZyBjb21lcyBmcm9tIGZpbmVzIGFuZCBwZW5hbHRpZXMgYXNzZXNzZWQgb24gY3JpbWluYWwgY29udmljdGlvbnMgYW5kIGEgZmVkZXJhbCBncmFudCBmcm9tIFUuUy4gRGVwYXJ0bWVudCBvZlxuSnVzdGljZS4gQ2VydGFpbiByZXN0aXR1dGlvbiBhbmQgcHJpc29uIHBheW1lbnQgcHJvZ3JhbXMgYXJlIGFsc28gZGlyZWN0ZWQgdG8ifV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIkRlcGFydG1lbnQgb2YgSW5zdXJhbmNlIiwgImZ0cCI6IDc3LjUsICJnZiI6IDAsICJkZWQiOiAxMTQ2NTgwMCwgImZlZCI6IDc2MDMwMCwgInRvdGFsIjogMTIyMjYxMDAsICJmZWRfc2hhcmUiOiAwLjA2MjIsICJkZWRfc2hhcmUiOiAwLjkzNzgsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiSW5zdXJhbmNlIFJlZ3VsYXRpb24iLCAidGV4dCI6ICJUaGUgSW5zdXJhbmNlIFJlZ3VsYXRpb24gUHJvZ3JhbSBpcyBjb21wb3NlZCBvZiB0aGUgQ29tcGFueSBBY3Rpdml0aWVzLCBDb25zdW1lciBBZmZhaXJzLCBhbmQgUHJvZHVjdFxuUmV2aWV3IEJ1cmVhdXMuIFRoZSBDb21wYW55IEFjdGl2aXRpZXMgQnVyZWF1IGlzIGNoYXJnZWQgd2l0aCBtb25pdG9yaW5nIHRoZSBmaW5hbmNpYWwgY29uZGl0aW9uIG9mIGFsbCBpbnN1cmFuY2UgZW50aXRpZXMgbGljZW5zZWQgb3JcbmFwcHJvdmVkIHRvIHNlbGwgaW5zdXJhbmNlIGluIHRoZSBzdGF0ZSBvZiBJZGFobyB0byBlbnN1cmUgdGhhdCBlYWNoIHdpbGwgYmUgYWJsZSB0byBtZWV0IGl0cyBvYmxpZ2F0aW9ucyB0byBwb2xpY3lob2xkZXJzIGFuZCBjcmVkaXRvcnMuIFRoZVxuQ29tcGFueSBBY3Rpdml0aWVzIEJ1cmVhdSBhbHNvIGxpY2Vuc2VzIGluc3VyYW5jZSBhZ2VudHMsIGJyb2tlcnMsIGluc3VyYW5jZSBjb3Vuc2Vsb3JzLCB0aGlyZC1wYXJ0eSBhZG1pbmlzdHJhdG9ycywgYWRqdXN0ZXJzLCBhbmRcbm1hbmFnaW5nIGdlbmVyYWwgYWdlbnRzLiBUaGUgQ29uc3VtZXIgQWZmYWlycyBCdXJlYXUgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBjb25zdW1lIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgRmlyZSBNYXJzaGFsIiwgInRleHQiOiAiVGhlIFN0YXRlIEZpcmUgTWFyc2hhbCBpcyByZXNwb25zaWJsZSBmb3IgZmlyZSBwcmV2ZW50aW9uIHRocm91Z2ggZW5mb3JjZW1lbnQgb2YgdGhlIFVuaWZvcm0gRmlyZSBDb2RlLFxuaW52ZXN0aWdhdGlvbiBvZiBzdXNwZWN0ZWQgYXJzb24gb3IgZnJhdWQsIGFuZCBwdWJsaWMgZWR1Y2F0aW9uIGFib3V0IGZpcmUgcHJldmVudGlvbiBhbmQgaWRlbnRpZmljYXRpb24gb2YgaGF6YXJkb3VzIGNvbmRpdGlvbnMgaW4gYnVpbGRpbmdzIG9yXG5wcmVtaXNlcy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNDEtMjUzLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBMYWJvciIsICJmdHAiOiA2NDQuMCwgImdmIjogNjE2NzAwLCAiZGVkIjogMjM1ODQ3MDAsICJmZWQiOiA4MTcxODgwMCwgInRvdGFsIjogMTA1OTIwMjAwLCAiZmVkX3NoYXJlIjogMC43NzE1LCAiZGVkX3NoYXJlIjogMC4yMjI3LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM3MyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkFkbWluaXN0cmF0aXZlIFNlcnZpY2VzIiwgInRleHQiOiAiQWRtaW5pc3RyYXRpdmUgU2VydmljZXMgcHJvdmlkZXMgc3VwcG9ydCB0byBvdGhlciBwcm9ncmFtcyBhbmQgZnVsZmlsbHMgZGVwYXJ0bWVudCBuZWVkcyBpbiBhY2NvdW50aW5nLCBmYWNpbGl0aWVzLFxuY29tbXVuaWNhdGlvbnMsIGFuZCByZXNlYXJjaCJ9LCB7InN1Yl9wcm9ncmFtIjogIkRldGVybWluYXRpb25zIiwgInRleHQiOiAiSW4gRlkgMjAyMiwgdGhlIGFnZW5jeSB3YXMgY29uc29saWRhdGVkIGludG8gdGhyZWUgYnVkZ2V0ZWQgcHJvZ3JhbXMuIERldGVybWluYXRpb25zIGlzIGNvbXByaXNlZCBvZlxuVW5lbXBsb3ltZW50IEluc3VyYW5jZSBBZG1pbmlzdHJhdGlvbiwgd2hpY2ggaW5jbHVkZXMgdGhlIFVuZW1wbG95bWVudCBJbnN1cmFuY2UgKFVJKSBjYWxsIGNlbnRlciwgVUkgdGF4LCBVSSBjb21wbGlhbmNlIGFuZCBpbnRlZ3JpdHksIFVJXG5iZW5lZml0cyBhZGp1ZGljYXRpb24gYW5kIGNsYWltcywgQXBwZWFscywgRGlzYWJpbGl0eSBEZXRlcm1pbmF0aW9ucywgYW5kIFdhZ2UgYW5kIEhvdXIuIFVJIHByb2dyYW1zIGZvciBlbGlnaWJsZSB3b3JrZXJzIGFyZSBhZG1pbmlzdGVyZWRcbnRocm91Z2ggZmVkZXJhbCBhbmQgc3RhdGUgY29vcGVyYXRpb24sIGluY2x1ZGluZyB1bmVtcGxveW1lbnQgY29tcGVuc2F0aW9uIGZvciBmZWRlcmFsIGVtcGxveWVlcyBvciBleC1zZXJ2aWNlIG1lbWJlcnMsIGRpc2FzdGVyXG51bmVtcGxveW1lbnQgYXNzaXN0YW5jZSwgYW5kIFRyYWRlIEFkanVzdG1lbnQgQXNzaXN0YW5jZS4gRGlzYWJpbGl0eSBEZXRlcm1pbmF0aW9uIFNlcnZpY2VzICJ9LCB7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJJbiBGWSAyMDIyLCBFbXBsb3ltZW50IFNlcnZpY2VzIHdhcyByZW9yZ2FuaXplZCBpbnRvIGEgbmV3IHByb2dyYW0gY2FsbGVkIFdvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMuXG5Xb3JrZm9yY2UgYW5kIENvbW1pc3Npb25zIGNvbnNpc3RzIG9mIGxvY2FsIG9mZmljZSBvcGVyYXRpb25zLCBsYWJvciBleGNoYW5nZSBhY3Rpdml0aWVzLCBlbXBsb3ltZW50IGFuZCB0cmFpbmluZyBwcm9ncmFtcywgdGhlIElkYWhvXG5IdW1hbiBSaWdodHMgQ29tbWlzc2lvbiwgYW5kIFNlcnZlIElkYWhvLiBMb2NhbCBMYWJvciBvZmZpY2VzIGRlbGl2ZXIgYSBicm9hZCByYW5nZSBvZiB3b3JrZm9yY2UgZGV2ZWxvcG1lbnQgc2VydmljZXMgdG8gaGVscCBjb25uZWN0XG5hbmQgcHJlcGFyZSB3b3JrZXJzIGZvciBJZGFobyBqb2JzIGluIGRlbWFuZC4gVGhlIElkYWhvIEh1bWFuIFJpZ2h0cyBDb21taXNzaW9uIGFkbWluaXN0ZXJzIHRoZSBwb2xpY2llcyBvdXRsaW5lZCBpbiB0aGUgZmVkZXJhbCBmYWlyXG5lbXBsb3ltZW50IHByYWN0aWNlIGFjdHMgYmFubmluZyBkaXNjcmltaW5hdGlvbiBiYXNlZCBvbiByYWNlLCBjb2xvciwgcmVsaWdpb24sIHNleCwgbmF0aW9uYWwgb3JpIn1dfSwgeyJhcmVhIjogIkVjb25vbWljIERldmVsb3BtZW50IiwgImFnZW5jeSI6ICJQdWJsaWMgVXRpbGl0aWVzIENvbW1pc3Npb24iLCAiZnRwIjogNDkuMCwgImdmIjogMCwgImRlZCI6IDczMzE3MDAsICJmZWQiOiAzODU4MDAsICJ0b3RhbCI6IDc3MTc1MDAsICJmZWRfc2hhcmUiOiAwLjA1LCAiZGVkX3NoYXJlIjogMC45NSwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiUzEzNzMiLCAiUzEzODQiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJXb3JrZm9yY2UgYW5kIENvbW1pc3Npb25zIiwgInRleHQiOiAiVGhlIGNvbW1pc3Npb24gcmV2aWV3cyBldmVyeSBpbnZlc3Rvci1vd25lZCB1dGlsaXR5IGluIHRoZSBzdGF0ZSwgYXNzdXJpbmcgYWRlcXVhdGUgc2VydmljZXMgYW5kIGZpeGluZyBqdXN0LFxucmVhc29uYWJsZSwgYW5kIHN1ZmZpY2llbnQgcmF0ZXMuIFRoaXMgYnVkZ2V0IGluY2x1ZGVzIHRoZSBDb21taXNzaW9uZXJzLCBhbiBhZG1pbmlzdHJhdGl2ZSBkaXZpc2lvbiwgYW5kIGEgdXRpbGl0aWVzIGRpdmlzaW9uLiBbU3RhdHV0b3J5XG5hdXRob3JpdHk6IENoYXB0ZXIgMiwgVGl0bGUgNjEsIElkYWhvIENvZGUuXSJ9XX0sIHsiYXJlYSI6ICJFY29ub21pYyBEZXZlbG9wbWVudCIsICJhZ2VuY3kiOiAiU2VsZi1Hb3Zlcm5pbmcgQWdlbmNpZXMiLCAiZnRwIjogMTI0OS4wMSwgImdmIjogNjQ2OTI1MDAsICJkZWQiOiAxMjIxOTIzMDAsICJmZWQiOiAzNTAyNzEwMCwgInRvdGFsIjogMjIxOTExOTAwLCAiZmVkX3NoYXJlIjogMC4xNTc4LCAiZGVkX3NoYXJlIjogMC41NTA2LCAiYW1lbmRzX2NvZGUiOiB0cnVlLCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxMzgxIiwgIlMxMzgzIiwgIlMxMzg3IiwgIlMxNDA2IiwgIlMxNDA3IiwgIlMxNDM0Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBTMTM3MyB0aGF0IGV4ZW1wdHMgdGhlIGFnZW5jeSBmcm9tIHRoZSAxMCVcbnRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgSWRhaG8gQ29tbWlzc2lvbiBvbiBIaXNwYW5pYyBBZmZhaXJzIHByb21vdGVzIGVjb25vbWljLCBlZHVjYXRpb25hbCwgc29jaWFsLCBsZWdhbCwgYW5kIHBvbGl0aWNhbCBlcXVhbGl0eVxuZm9yIEhpc3BhbmljIHBlb3BsZSBpbiBJZGFoby4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNzIwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJXb3JrZm9yY2UgYW5kIENvbW1pc3Npb25zIiwgInRleHQiOiAiVGhlIElkYWhvIFN0YXRlIEhpc3RvcmljYWwgU29jaWV0eSAoSVNIUykgd2FzIGVzdGFibGlzaGVkIGJ5IHN0YXR1dGUgaW4gMTkwNy4gVGhlIGFnZW5jeSB3YXMgbW92ZWQgZnJvbSB0aGVcblN0YXRlIEJvYXJkIG9mIEVkdWNhdGlvbiB0byB0aGUgRGVwYXJ0bWVudCBvZiBTZWxmLUdvdmVybmluZyBBZ2VuY2llcyBpbiAyMDA5LiBJdHMgb3BlcmF0aW9ucyBhcmUgZGlyZWN0ZWQgYnkgYSBzZXZlbi1tZW1iZXIgYm9hcmQgb2ZcbnRydXN0ZWVzLiBUaGUgZHV0aWVzIG9mIHRoZSBJU0hTIGluY2x1ZGU6ICgxKSBpZGVudGlmeWluZyBhbmQgcHJlc2VydmluZyBzaWduaWZpY2FudCBidWlsZGluZ3MsIHNpdGVzLCBvYmplY3RzLCBwaG90b2dyYXBocywgYW5kIGxpYnJhcnkgcmVzb3VyY2VzXG5mb3IgdGhlIGVkdWNhdGlvbiBhbmQgYmVuZWZpdCBvZiB0aGlzIGFuZCBmdXR1cmUgZ2VuZXJhdGlvbnM7ICgyKSBwcm92aWRpbmcgdGVjaG5pY2FsIHNlcnZpY2VzLCBmZWRlcmFsIGdyYW50IHJldmlldyBjbGVhcmFuY2VzLCBhbmQgb3RoZXJcbmFzc2lzdGFuY2UgdG8gbG9jYWwgZ292ZXJubWVudHMsIGhpc3RvcmljYWwgc29jaWV0aWVzLCBhbmQgcHJpdmF0ZSBjaXRpeiJ9LCB7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgSWRhaG8gQ29tbWlzc2lvbiBmb3IgTGlicmFyaWVzIChJQ2ZMKSBhc3Npc3RzIGFwcHJveGltYXRlbHkgODUwIGFjYWRlbWljLCBwdWJsaWMsIGFuZCBzY2hvb2wgbGlicmFyaWVzLFxuaW5jbHVkaW5nIDE0NyBwdWJsaWMgbGlicmFyaWVzLCBhY3Jvc3MgdGhlIHN0YXRlIHRvIGJ1aWxkIHRoZSBjYXBhY2l0eSB0byBiZXR0ZXIgc2VydmUgdGhlaXIgY29tbXVuaXRpZXMuIElDZkwgcHJvdmlkZXMgY29udGludWluZyBsaWJyYXJ5XG5lZHVjYXRpb24gYW5kIGNvbnN1bHRhbnQgc2VydmljZXMgdG8gdGhlIElkYWhvIGxpYnJhcnkgY29tbXVuaXR5LCBjb29yZGluYXRlcyBzdGF0ZXdpZGUgbGlicmFyeSBwcm9ncmFtcywgYWRtaW5pc3RlcnMgZ3JhbnQgcHJvZ3JhbXMgZm9yXG5saWJyYXJ5IGRldmVsb3BtZW50IHB1cnBvc2VzLCBhZHZvY2F0ZXMgZm9yIGxpYnJhcnkgc2VydmljZXMsIGFuZCBmYWNpbGl0YXRlcyBwbGFubmluZyBmb3IgbGlicmFyeSBkZXZlbG9wbWVudCBhdCB0aGUgbG9jYWwsIGNvb3BlcmF0aXZlLCBhbmRcbnN0YXRlIGxldmVsLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiAzMy0yNTAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgbWlzc2lvbiBvZiB0aGUgSWRhaG8gTG90dGVyeSBpcyB0byBtYXhpbWl6ZSBuZXQgaW5jb21lIGFuZCB0aGUgcmVzdWx0aW5nIGFubnVhbCBkaXZpZGVuZCBwYXltZW50cyBmb3IgSWRhaG9cbnB1YmxpYyBzY2hvb2xzIGFuZCBidWlsZGluZ3MuIFtTdGF0dXRvcnkgYXV0aG9yaXR5OiBDaGFwdGVyIDc0LCBUaXRsZSA2NywgSWRhaG8gQ29kZS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiT2ZmaWNlIG9mIHRoZSBTdGF0ZSBBcHBlbGxhdGUgUHVibGljIERlZmVuZGVyIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQXBwZWxsYXRlIFB1YmxpYyBEZWZlbmRlciBwcm92aWRlcyBsZWdhbCByZXByZXNlbnRhdGlvbiB0byBpbmRpZ2VudCBkZWZlbmRhbnRzIGluIGFwcGVhbHNcbm9mIGZlbG9ueSBjcmltaW5hbCBjb252aWN0aW9ucyBvciBwb3N0LWp1ZGdtZW50IG9yZGVycyBpbiBkaXN0cmljdCBjb3VydDsgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpbiBwb3N0LWNvbnZpY3Rpb24gcmVsaWVmIHByb2NlZWRpbmdzXG5icm91Z2h0IHB1cnN1YW50IHRvIHRoZSBVbmlmb3JtIFBvc3QtQ29udmljdGlvbiBQcm9jZWR1cmVzIEFjdDsgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpbiBoYWJlYXMgY29ycHVzIHByb2NlZWRpbmdzOyBwb3N0LVxuY29udmljdGlvbiByZWxpZWYgcHJvY2VlZGluZ3MgaW4gY2FwaXRhbCBjYXNlczsgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpbiBtaXNkZW1lYW5vciBjYXNlczsgYW5kIGFwcGVhbHMgZnJvbSB0aGUgZGlzdHJpY3QgY291cnQgaW5cbmNhc2VzIHVuZGVyIHRoZSBKdXZlbmlsZSBDb3JyZWN0aW9ucyBBY3QuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aSJ9LCB7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgYW5kIENvbmZsaWN0IFJlcHJlc2VudGF0aW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHdhcyBjcmVhdGVkIGR1cmluZyB0aGUgMjAxNSBMZWdpc2xhdGl2ZSBTZXNzaW9uIGluIG9yZGVyIHRvIGJ1ZGdldCBmb3IgdGhlIGZsdWN0dWF0aW5nIGNvc3RzXG5hc3NvY2lhdGVkIHdpdGggKGEpIG91dHNpZGUgY291bnNlbCBmb3Igbm9uY2FwaXRhbCBhcHBlYWxzIGluIHdoaWNoIGEgY29uY3VycmVudCBjb25mbGljdCBvZiBpbnRlcmVzdCBpcyBpZGVudGlmaWVkOyBhbmQgKGIpIGV4dHJhb3JkaW5hcnkgbGl0aWdhdGlvblxuZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgcHJvdmlzaW9uIG9mIHJlcHJlc2VudGF0aW9uIGluIGNhcGl0YWwgY2FzZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gY29uc3VsdGF0aW9uIHdpdGggZXhwZXJ0czsgdHJhdmVsLCBsb2RnaW5nLCBhbmQgcGVyXG5kaWVtIGZvciBleHBlcnQgYW5kIGxheSB3aXRuZXNzZXM7IGRlcG9zaXRpb25zOyBpbnZlc3RpZ2F0aW9uOyBlbXBsb3llZSB0cmF2ZWwgYXNzb2NpYXRlZCB3aXRoIHdpdG5lc3MgaW50ZXJ2aWV3czsgY291cnQgcmVwb3J0aW5nIGFuZFxudHJhbnNjcmlwdGlvbiBzZXJ2aWNlczsgZXhwZXJ0IHdpdG5lc3MgZmVlczsgb3V0c2lkZSBjb3VucyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgYW5kIENvbmZsaWN0IFJlcHJlc2VudGF0aW9uIiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIFZldGVyYW5zIFNlcnZpY2VzIHByb3ZpZGVzIGNhcmUgYW5kIHNlcnZpY2VzIHRvIElkYWhvIHZldGVyYW5zIGFuZCB0aGVpciBkZXBlbmRlbnRzLiBJdFxub3BlcmF0ZXMgc3RhdGUgdmV0ZXJhbnMgaG9tZXMgaW4gQm9pc2UsIExld2lzdG9uLCBQb2NhdGVsbG8sIGFuZCBQb3N0IEZhbGxzOyBhbmQgdGhlIHN0YXRlIHZldGVyYW5zIGNlbWV0ZXJpZXMgaW4gQm9pc2UgYW5kIEJsYWNrZm9vdC5cbltTdGF0dXRvcnkgQXV0aG9yaXR5IENoYXB0ZXJzIDEgYW5kIDIsIFRpdGxlIDY1IGFuZCBDaGFwdGVyIDksIFRpdGxlIDY2LCBJZGFobyBDb2RlLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJDYXBpdGFsIGFuZCBDb25mbGljdCBSZXByZXNlbnRhdGlvbiIsICJ0ZXh0IjogIlRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIFB1YmxpYyBEZWZlbmRlciBlbnN1cmVzIHRoYXQgcXVhbGlmaWVkIGRlZmVuZGluZyBhdHRvcm5leXMsIGV4cGVydHMsIGludmVzdGlnYXRvcnMsXG5taXRpZ2F0aW9uIHNwZWNpYWxpc3RzLCBzdGVub2dyYXBoZXJzLCBwYXJhbGVnYWxzLCBvciBvdGhlciBzdXBwb3J0IHN0YWZmIGFuZCBhc3Npc3RhbnRzIGFyZSBlbXBsb3llZCBvciBjb250cmFjdGVkIGFzIG5lY2Vzc2FyeSB0byBwcm92aWRlXG5sZWdhbCByZXByZXNlbnRhdGlvbiB0byBpbmRpZ2VudCBkZWZlbmRhbnRzIGF0IGFsbCBzdGFnZXMgb2YgY3JpbWluYWwgYW5kIGNvbW1pdG1lbnQgcHJvY2VlZGluZ3MuXG5UaGUgT2ZmaWNlIG9mIHRoZSBTdGF0ZSBQdWJsaWMgRGVmZW5kZXIgKFNQRCkgd2FzIGNyZWF0ZWQgaW4gMjAyMyBwdXJzdWFudCB0byBTZWN0aW9uIDE5LTYwMDMsIElkYWhvIENvZGUsIGFuZCBiZWdhbiBvcGVyYXRpbmcgb25cbk9jdG9iZXIgMSwgMjAyNC4gVGhlIFB1YmxpYyBEZWZlbnNlIENvbW1pc3Npb24gd2FzIGRpc3NvbHZlZCBhbmQgaXRzIHJlc3BvbnNpYmlsaXRpZXMgd2VyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIFNQRCJ9LCB7InN1Yl9wcm9ncmFtIjogIkFkbWluaXN0cmF0aW9uIiwgInRleHQiOiAiVGhlIEFkbWluaXN0cmF0aW9uIFByb2dyYW0gcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmU7IGxlZ2FsOyBJVDsgYnVkZ2V0IGFuZCBmaW5hbmNlOyBhbmQgc2VjdGlvbiBjaGllZiBzdXBwb3J0IHRvXG50aGUgZW50aXJlIGFnZW5jeS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJCdWlsZGluZyBDb25zdHJ1Y3Rpb24gJiBSZWFsIiwgInRleHQiOiAiVGhlIEJ1aWxkaW5nIENvbnN0cnVjdGlvbiBhbmQgUmVhbCBFc3RhdGUgUHJvZ3JhbSBwcm92aWRlcyBsaWNlbnNpbmcgYW5kIHJlZ2lzdHJhdGlvbjsgY29kZSBhZG9wdGlvbjtcbmVkdWNhdGlvbiwgY3VycmljdWx1bSwgYW5kIHRlc3Rpbmc7IHBlcm1pdHRpbmc7IHBsYW4gcmV2aWV3IGFuZCBpbnNwZWN0aW9uczsgYW5kIGJvYXJkIHN1cHBvcnQgdG8gMTYgYm9hcmRzIGFuZCBjb21taXNzaW9ucy4gW1N0YXR1dG9yeVxuQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTI2MDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiT2NjdXBhdGlvbmFsIExpY2Vuc2VzIiwgInRleHQiOiAiVGhlIE9jY3VwYXRpb25hbCBMaWNlbnNlcyBQcm9ncmFtIHByb3ZpZGVzIGxpY2Vuc2luZyBhbmQgcmVnaXN0cmF0aW9uOyBkaXNjaXBsaW5hcnkgcmVwb3J0aW5nOyBlZHVjYXRpb24sXG5jdXJyaWN1bHVtLCBhbmQgdGVzdGluZzsgaW5zcGVjdGlvbnM7IGFuZCBib2FyZCBzdXBwb3J0IHRvIDE2IGJvYXJkcyBhbmQgY29tbWlzc2lvbnMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTI2MDEsIElkYWhvIENvZGUsIGV0XG5zZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBQcm9mZXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBIZWFsdGggUHJvZmVzc2lvbnMgUHJvZ3JhbSBwcm92aWRlcyBsaWNlbnNpbmcgYW5kIHJlZ2lzdHJhdGlvbjsgbGVnaXNsYXRpb24gYW5kIHJlZ3VsYXRvcnkgYWZmYWlycztcbmluc3BlY3Rpb25zOyBpbnZlc3RpZ2F0aW9ucyBhbmQgY29tcGxpYW5jZTsgZWR1Y2F0aW9uLCBjdXJyaWN1bHVtLCBhbmQgbW9uaXRvcmluZzsgYW5kIGJvYXJkIHN1cHBvcnQgdG8gMTYgYm9hcmRzIGFuZCBjb21taXNzaW9ucy5cbltTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTI2MDEsIElkYWhvIENvZGUsIGV0IHNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIFByb2Zlc3Npb25zIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiBBZG1pbmlzdHJhdGl2ZSBIZWFyaW5ncyBwcm92aWRlcyBpbmRlcGVuZGVudCBhbmQgaW1wYXJ0aWFsIGhlYXJpbmdzIG9mIGNvbnRlc3RlZCBhZG1pbmlzdHJhdGl2ZVxuY2FzZXMgdW5kZXIgdGhlIEFkbWluaXN0cmF0aXZlIEhlYXJpbmcgQWN0LCBhbmQgZmFjaWxpdGF0ZXMgdGhlIG9wcG9ydHVuaXR5IGZvciBwYXJ0aWVzIHRvIHJlc29sdmUgdGhlaXIgZGlzcHV0ZXMgdGhyb3VnaCBhbHRlcm5hdGl2ZSBkaXNwdXRlXG5yZXNvbHV0aW9uLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny01MjAxLCBldCBzZXEuLCBJZGFobyBDb2RlXSJ9XSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJPZmZpY2Ugb2YgdGhlIFN0YXRlIFB1YmxpYyBEZWZlbmRlciIsICJnZiI6IDQzMDQ0NTAwLCAiZGVkIjogMzkxNjA0MDAsICJmZWQiOiAwLCAidG90YWwiOiA4MjIwNDkwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuNDc2NCwgImJpbGxzIjogWyJTMTM3MyIsICJTMTQwNiJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgYW5kIENvbmZsaWN0IFJlcHJlc2VudGF0aW9uIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgUHVibGljIERlZmVuZGVyIGVuc3VyZXMgdGhhdCBxdWFsaWZpZWQgZGVmZW5kaW5nIGF0dG9ybmV5cywgZXhwZXJ0cywgaW52ZXN0aWdhdG9ycyxcbm1pdGlnYXRpb24gc3BlY2lhbGlzdHMsIHN0ZW5vZ3JhcGhlcnMsIHBhcmFsZWdhbHMsIG9yIG90aGVyIHN1cHBvcnQgc3RhZmYgYW5kIGFzc2lzdGFudHMgYXJlIGVtcGxveWVkIG9yIGNvbnRyYWN0ZWQgYXMgbmVjZXNzYXJ5IHRvIHByb3ZpZGVcbmxlZ2FsIHJlcHJlc2VudGF0aW9uIHRvIGluZGlnZW50IGRlZmVuZGFudHMgYXQgYWxsIHN0YWdlcyBvZiBjcmltaW5hbCBhbmQgY29tbWl0bWVudCBwcm9jZWVkaW5ncy5cblRoZSBPZmZpY2Ugb2YgdGhlIFN0YXRlIFB1YmxpYyBEZWZlbmRlciAoU1BEKSB3YXMgY3JlYXRlZCBpbiAyMDIzIHB1cnN1YW50IHRvIFNlY3Rpb24gMTktNjAwMywgSWRhaG8gQ29kZSwgYW5kIGJlZ2FuIG9wZXJhdGluZyBvblxuT2N0b2JlciAxLCAyMDI0LiBUaGUgUHViIn1dfSwgeyJuYW1lIjogIkRpdmlzaW9uIG9mIFZldGVyYW5zIFNlcnZpY2VzIiwgImdmIjogMTczNjIwMCwgImRlZCI6IDMyNjU5ODAwLCAiZmVkIjogMzE5MjE1MDAsICJ0b3RhbCI6IDY2MzE3NTAwLCAiZmVkX3NoYXJlIjogMC40ODEzLCAiZGVkX3NoYXJlIjogMC40OTI1LCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxMzgzIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQ2FwaXRhbCBhbmQgQ29uZmxpY3QgUmVwcmVzZW50YXRpb24iLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgVmV0ZXJhbnMgU2VydmljZXMgcHJvdmlkZXMgY2FyZSBhbmQgc2VydmljZXMgdG8gSWRhaG8gdmV0ZXJhbnMgYW5kIHRoZWlyIGRlcGVuZGVudHMuIEl0XG5vcGVyYXRlcyBzdGF0ZSB2ZXRlcmFucyBob21lcyBpbiBCb2lzZSwgTGV3aXN0b24sIFBvY2F0ZWxsbywgYW5kIFBvc3QgRmFsbHM7IGFuZCB0aGUgc3RhdGUgdmV0ZXJhbnMgY2VtZXRlcmllcyBpbiBCb2lzZSBhbmQgQmxhY2tmb290LlxuW1N0YXR1dG9yeSBBdXRob3JpdHkgQ2hhcHRlcnMgMSBhbmQgMiwgVGl0bGUgNjUgYW5kIENoYXB0ZXIgOSwgVGl0bGUgNjYsIElkYWhvIENvZGUuXSJ9XX0sIHsibmFtZSI6ICJEaXZpc2lvbiBvZiBPY2N1cGF0aW9uYWwgYW5kIFByb2Zlc3Npb25hbCBMaWNlbnNlcyIsICJnZiI6IDAsICJkZWQiOiAzNzA1NTcwMCwgImZlZCI6IDIxNjEwMCwgInRvdGFsIjogMzcyNzE4MDAsICJmZWRfc2hhcmUiOiAwLjAwNTgsICJkZWRfc2hhcmUiOiAwLjk5NDIsICJiaWxscyI6IFsiUzEzNzMiLCAiUzE0MDciXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFMxMzczIHRoYXQgZXhlbXB0cyB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJVxudHJhbnNmZXIgbGltaXRhdGlvbiBiZXR3ZWVuIGJ1ZGdldGVkIHByb2dyYW1zIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZTsgbGVnYWw7IElUOyBidWRnZXQgYW5kIGZpbmFuY2U7IGFuZCBzZWN0aW9uIGNoaWVmIHN1cHBvcnQgdG9cbnRoZSBlbnRpcmUgYWdlbmN5LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny0yNjAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkJ1aWxkaW5nIENvbnN0cnVjdGlvbiAmIFJlYWwiLCAidGV4dCI6ICJUaGUgQnVpbGRpbmcgQ29uc3RydWN0aW9uIGFuZCBSZWFsIEVzdGF0ZSBQcm9ncmFtIHByb3ZpZGVzIGxpY2Vuc2luZyBhbmQgcmVnaXN0cmF0aW9uOyBjb2RlIGFkb3B0aW9uO1xuZWR1Y2F0aW9uLCBjdXJyaWN1bHVtLCBhbmQgdGVzdGluZzsgcGVybWl0dGluZzsgcGxhbiByZXZpZXcgYW5kIGluc3BlY3Rpb25zOyBhbmQgYm9hcmQgc3VwcG9ydCB0byAxNiBib2FyZHMgYW5kIGNvbW1pc3Npb25zLiBbU3RhdHV0b3J5XG5BdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJPY2N1cGF0aW9uYWwgTGljZW5zZXMiLCAidGV4dCI6ICJUaGUgT2NjdXBhdGlvbmFsIExpY2Vuc2VzIFByb2dyYW0gcHJvdmlkZXMgbGljZW5zaW5nIGFuZCByZWdpc3RyYXRpb247IGRpc2NpcGxpbmFyeSByZXBvcnRpbmc7IGVkdWNhdGlvbixcbmN1cnJpY3VsdW0sIGFuZCB0ZXN0aW5nOyBpbnNwZWN0aW9uczsgYW5kIGJvYXJkIHN1cHBvcnQgdG8gMTYgYm9hcmRzIGFuZCBjb21taXNzaW9ucy4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXRcbnNlcS5dIn0sIHsic3ViX3Byb2dyYW0iOiAiSGVhbHRoIFByb2Zlc3Npb25zIiwgInRleHQiOiAiVGhlIEhlYWx0aCBQcm9mZXNzaW9ucyBQcm9ncmFtIHByb3ZpZGVzIGxpY2Vuc2luZyBhbmQgcmVnaXN0cmF0aW9uOyBsZWdpc2xhdGlvbiBhbmQgcmVndWxhdG9yeSBhZmZhaXJzO1xuaW5zcGVjdGlvbnM7IGludmVzdGlnYXRpb25zIGFuZCBjb21wbGlhbmNlOyBlZHVjYXRpb24sIGN1cnJpY3VsdW0sIGFuZCBtb25pdG9yaW5nOyBhbmQgYm9hcmQgc3VwcG9ydCB0byAxNiBib2FyZHMgYW5kIGNvbW1pc3Npb25zLlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctMjYwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifV19LCB7Im5hbWUiOiAiSWRhaG8gU3RhdGUgSGlzdG9yaWNhbCBTb2NpZXR5IiwgImdmIjogNDQ3NzgwMCwgImRlZCI6IDQwOTcyMDAsICJmZWQiOiA5Mzc4MDAsICJ0b3RhbCI6IDk1MTI4MDAsICJmZWRfc2hhcmUiOiAwLjA5ODYsICJkZWRfc2hhcmUiOiAwLjQzMDcsICJiaWxscyI6IFsiUzEzNzMiLCAiUzEzODciXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJXb3JrZm9yY2UgYW5kIENvbW1pc3Npb25zIiwgInRleHQiOiAiVGhlIElkYWhvIFN0YXRlIEhpc3RvcmljYWwgU29jaWV0eSAoSVNIUykgd2FzIGVzdGFibGlzaGVkIGJ5IHN0YXR1dGUgaW4gMTkwNy4gVGhlIGFnZW5jeSB3YXMgbW92ZWQgZnJvbSB0aGVcblN0YXRlIEJvYXJkIG9mIEVkdWNhdGlvbiB0byB0aGUgRGVwYXJ0bWVudCBvZiBTZWxmLUdvdmVybmluZyBBZ2VuY2llcyBpbiAyMDA5LiBJdHMgb3BlcmF0aW9ucyBhcmUgZGlyZWN0ZWQgYnkgYSBzZXZlbi1tZW1iZXIgYm9hcmQgb2ZcbnRydXN0ZWVzLiBUaGUgZHV0aWVzIG9mIHRoZSBJU0hTIGluY2x1ZGU6ICgxKSBpZGVudGlmeWluZyBhbmQgcHJlc2VydmluZyBzaWduaWZpY2FudCBidWlsZGluZ3MsIHNpdGVzLCBvYmplY3RzLCBwaG90b2dyYXBocywgYW5kIGxpYnJhcnkgcmVzb3VyY2VzXG5mb3IgdGhlIGVkdWNhdGlvbiBhbmQgYmVuZWZpdCBvZiB0aGlzIGFuZCBmdXR1cmUgZ2VuZXJhdGlvbnM7ICgyKSBwcm92aWRpbmcgdGVjaG5pY2FsIHNlcnZpY2VzLCBmZWRlcmFsIGdyYW50IHIifV19LCB7Im5hbWUiOiAiU3RhdGUgTG90dGVyeSIsICJnZiI6IDAsICJkZWQiOiA4Njg2NjAwLCAiZmVkIjogMCwgInRvdGFsIjogODY4NjYwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImJpbGxzIjogWyJTMTM3MyIsICJTMTM4MSJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIldvcmtmb3JjZSBhbmQgQ29tbWlzc2lvbnMiLCAidGV4dCI6ICJUaGUgbWlzc2lvbiBvZiB0aGUgSWRhaG8gTG90dGVyeSBpcyB0byBtYXhpbWl6ZSBuZXQgaW5jb21lIGFuZCB0aGUgcmVzdWx0aW5nIGFubnVhbCBkaXZpZGVuZCBwYXltZW50cyBmb3IgSWRhaG9cbnB1YmxpYyBzY2hvb2xzIGFuZCBidWlsZGluZ3MuIFtTdGF0dXRvcnkgYXV0aG9yaXR5OiBDaGFwdGVyIDc0LCBUaXRsZSA2NywgSWRhaG8gQ29kZS5dIn1dfSwgeyJuYW1lIjogIkNvbW1pc3Npb24gZm9yIExpYnJhcmllcyIsICJnZiI6IDQ3NTg1MDAsICJkZWQiOiA3MDAwMCwgImZlZCI6IDE5NTE3MDAsICJ0b3RhbCI6IDY3ODAyMDAsICJmZWRfc2hhcmUiOiAwLjI4NzksICJkZWRfc2hhcmUiOiAwLjAxMDMsICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJXb3JrZm9yY2UgYW5kIENvbW1pc3Npb25zIiwgInRleHQiOiAiVGhlIElkYWhvIENvbW1pc3Npb24gZm9yIExpYnJhcmllcyAoSUNmTCkgYXNzaXN0cyBhcHByb3hpbWF0ZWx5IDg1MCBhY2FkZW1pYywgcHVibGljLCBhbmQgc2Nob29sIGxpYnJhcmllcyxcbmluY2x1ZGluZyAxNDcgcHVibGljIGxpYnJhcmllcywgYWNyb3NzIHRoZSBzdGF0ZSB0byBidWlsZCB0aGUgY2FwYWNpdHkgdG8gYmV0dGVyIHNlcnZlIHRoZWlyIGNvbW11bml0aWVzLiBJQ2ZMIHByb3ZpZGVzIGNvbnRpbnVpbmcgbGlicmFyeVxuZWR1Y2F0aW9uIGFuZCBjb25zdWx0YW50IHNlcnZpY2VzIHRvIHRoZSBJZGFobyBsaWJyYXJ5IGNvbW11bml0eSwgY29vcmRpbmF0ZXMgc3RhdGV3aWRlIGxpYnJhcnkgcHJvZ3JhbXMsIGFkbWluaXN0ZXJzIGdyYW50IHByb2dyYW1zIGZvclxubGlicmFyeSBkZXZlbG9wbWVudCBwdXJwb3NlcywgYWR2b2NhdGVzIGZvciBsaWJyYXJ5IHNlcnZpY2VzLCBhbmQgZmFjaWxpdGF0ZXMgcGxhbm5pbmcgZm9yIGxpYnJhcnkgZGV2ZWxvcG1lbnQgYXQgdGgifV19LCB7Im5hbWUiOiAiQ29tbWlzc2lvbiBmb3IgUGFyZG9ucyBhbmQgUGFyb2xlIiwgImdmIjogNDE4NjYwMCwgImRlZCI6IDIwNTEwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDQzOTE3MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjA0NjcsICJiaWxscyI6IFsiUzEzNzMiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXX0sIHsibmFtZSI6ICJTdGF0ZSBBcHBlbGxhdGUgUHVibGljIERlZmVuZGVyIiwgImdmIjogNDE5MzkwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiA0MTkzOTAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiT2ZmaWNlIG9mIHRoZSBTdGF0ZSBBcHBlbGxhdGUgUHVibGljIERlZmVuZGVyIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQXBwZWxsYXRlIFB1YmxpYyBEZWZlbmRlciBwcm92aWRlcyBsZWdhbCByZXByZXNlbnRhdGlvbiB0byBpbmRpZ2VudCBkZWZlbmRhbnRzIGluIGFwcGVhbHNcbm9mIGZlbG9ueSBjcmltaW5hbCBjb252aWN0aW9ucyBvciBwb3N0LWp1ZGdtZW50IG9yZGVycyBpbiBkaXN0cmljdCBjb3VydDsgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpbiBwb3N0LWNvbnZpY3Rpb24gcmVsaWVmIHByb2NlZWRpbmdzXG5icm91Z2h0IHB1cnN1YW50IHRvIHRoZSBVbmlmb3JtIFBvc3QtQ29udmljdGlvbiBQcm9jZWR1cmVzIEFjdDsgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpbiBoYWJlYXMgY29ycHVzIHByb2NlZWRpbmdzOyBwb3N0LVxuY29udmljdGlvbiByZWxpZWYgcHJvY2VlZGluZ3MgaW4gY2FwaXRhbCBjYXNlczsgYXBwZWFscyBmcm9tIHRoZSBkaXN0cmljdCBjb3VydCBpbiBtaXNkZW1lYW5vciBjYXNlczsgYW5kIGFwcGUifSwgeyJzdWJfcHJvZ3JhbSI6ICJDYXBpdGFsIGFuZCBDb25mbGljdCBSZXByZXNlbnRhdGlvbiIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSB3YXMgY3JlYXRlZCBkdXJpbmcgdGhlIDIwMTUgTGVnaXNsYXRpdmUgU2Vzc2lvbiBpbiBvcmRlciB0byBidWRnZXQgZm9yIHRoZSBmbHVjdHVhdGluZyBjb3N0c1xuYXNzb2NpYXRlZCB3aXRoIChhKSBvdXRzaWRlIGNvdW5zZWwgZm9yIG5vbmNhcGl0YWwgYXBwZWFscyBpbiB3aGljaCBhIGNvbmN1cnJlbnQgY29uZmxpY3Qgb2YgaW50ZXJlc3QgaXMgaWRlbnRpZmllZDsgYW5kIChiKSBleHRyYW9yZGluYXJ5IGxpdGlnYXRpb25cbmRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHByb3Zpc2lvbiBvZiByZXByZXNlbnRhdGlvbiBpbiBjYXBpdGFsIGNhc2VzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvbnN1bHRhdGlvbiB3aXRoIGV4cGVydHM7IHRyYXZlbCwgbG9kZ2luZywgYW5kIHBlclxuZGllbSBmb3IgZXhwZXJ0IGFuZCBsYXkgd2l0bmVzc2VzOyBkZXBvc2l0aW9uczsgaW52ZXN0aWdhdGlvbjsgZW1wbG95ZWUgdHJhdmVsIGFzc29jaWF0ZWQgd2l0In1dfSwgeyJuYW1lIjogIk9mZmljZSBvZiBBZG1pbmlzdHJhdGl2ZSBIZWFyaW5ncyIsICJnZiI6IDE1NjYzMDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMTU2NjMwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJTMTM3MyIsICJTMTQzNCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkhlYWx0aCBQcm9mZXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBPZmZpY2Ugb2YgQWRtaW5pc3RyYXRpdmUgSGVhcmluZ3MgcHJvdmlkZXMgaW5kZXBlbmRlbnQgYW5kIGltcGFydGlhbCBoZWFyaW5ncyBvZiBjb250ZXN0ZWQgYWRtaW5pc3RyYXRpdmVcbmNhc2VzIHVuZGVyIHRoZSBBZG1pbmlzdHJhdGl2ZSBIZWFyaW5nIEFjdCwgYW5kIGZhY2lsaXRhdGVzIHRoZSBvcHBvcnR1bml0eSBmb3IgcGFydGllcyB0byByZXNvbHZlIHRoZWlyIGRpc3B1dGVzIHRocm91Z2ggYWx0ZXJuYXRpdmUgZGlzcHV0ZVxucmVzb2x1dGlvbi4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNTIwMSwgZXQgc2VxLiwgSWRhaG8gQ29kZV0ifV19LCB7Im5hbWUiOiAiQ29tbWlzc2lvbiBvbiBIaXNwYW5pYyBBZmZhaXJzIiwgImdmIjogMjc3OTAwLCAiZGVkIjogMjU3NTAwLCAiZmVkIjogMCwgInRvdGFsIjogNTM1NDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC40ODA5LCAiYmlsbHMiOiBbIlMxMzczIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiV29ya2ZvcmNlIGFuZCBDb21taXNzaW9ucyIsICJ0ZXh0IjogIlRoZSBJZGFobyBDb21taXNzaW9uIG9uIEhpc3BhbmljIEFmZmFpcnMgcHJvbW90ZXMgZWNvbm9taWMsIGVkdWNhdGlvbmFsLCBzb2NpYWwsIGxlZ2FsLCBhbmQgcG9saXRpY2FsIGVxdWFsaXR5XG5mb3IgSGlzcGFuaWMgcGVvcGxlIGluIElkYWhvLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny03MjAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsibmFtZSI6ICJPZmZpY2Ugb2YgSGVhbHRoIGFuZCBTb2NpYWwgU2VydmljZXMgT21idWRzbWFuIiwgImdmIjogNDUwODAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDQ1MDgwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJTMTM3MyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdfV19LCB7ImFyZWEiOiAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiYWdlbmN5IjogIklkYWhvIFRyYW5zcG9ydGF0aW9uIERlcGFydG1lbnQiLCAiZnRwIjogMTY0NS4wLCAiZ2YiOiAwLCAiZGVkIjogNTQ0NjI0ODAwLCAiZmVkIjogNDkyMzk5MTAwLCAidG90YWwiOiAxMDM3MDIzOTAwLCAiZmVkX3NoYXJlIjogMC40NzQ4LCAiZGVkX3NoYXJlIjogMC41MjUyLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJTMTM3MyIsICJTMTQyNiJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFtdLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIkNvbnRyYWN0IENvbnN0cnVjdGlvbiAmIFJpZ2h0LW9mLVdheSBBY3EuIiwgImdmIjogMCwgImRlZCI6IDE3NjUwMDMwMCwgImZlZCI6IDQzNzA0MDEwMCwgInRvdGFsIjogNjEzNTQwNDAwLCAiZmVkX3NoYXJlIjogMC43MTIzLCAiZGVkX3NoYXJlIjogMC4yODc3LCAiYmlsbHMiOiBbXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJBZXJvbmF1dGljcyIsICJ0ZXh0IjogIlRoZSBDb250cmFjdCBDb25zdHJ1Y3Rpb24gYW5kIFJpZ2h0LW9mLVdheSBBY3F1aXNpdGlvbiBEaXZpc2lvbiBhY2NvdW50cyBmb3IgdGhlIGZ1bmRzIGFwcHJvcHJpYXRlZCBmb3JcbmhpZ2h3YXkgY29uc3RydWN0aW9uIHByb2plY3RzIHRoYXQgbWFpbnRhaW4gYW5kIGltcHJvdmUgdGhlIHN0YXRlXHUyMDE5cyBoaWdod2F5IHN5c3RlbSJ9XX0sIHsibmFtZSI6ICJIaWdod2F5IE9wZXJhdGlvbnMiLCAiZ2YiOiAwLCAiZGVkIjogMjY3Mzk4ODAwLCAiZmVkIjogNTAxODc3MDAsICJ0b3RhbCI6IDMxNzU4NjUwMCwgImZlZF9zaGFyZSI6IDAuMTU4LCAiZGVkX3NoYXJlIjogMC44NDIsICJiaWxscyI6IFtdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkFlcm9uYXV0aWNzIiwgInRleHQiOiAiVGhlIEhpZ2h3YXkgT3BlcmF0aW9ucyBEaXZpc2lvbiBwZXJmb3JtcyBzdGF0ZXdpZGUgaGlnaHdheSBtYWludGVuYW5jZSBmdW5jdGlvbnMgYW5kIGRpcmVjdHMgaGlnaHdheVxuaW1wcm92ZW1lbnRzOyBhZG1pbmlzdGVycyBmZWRlcmFsLWFpZCBzYWZldHkgaW1wcm92ZW1lbnQgcHJvamVjdHMgYW5kIHNhZmV0eSB0YXNrczsgcHJvdGVjdHMgaGlnaHdheXMgZnJvbSBvdmVyc2l6ZSwgb3ZlcndlaWdodCwgYW5kXG5kYW5nZXJvdXMgdXNhZ2U7IG1hbmFnZXMgZmVkZXJhbCB0cmFuc2l0IGdyYW50IHByb2dyYW1zIGFuZCBlbmNvdXJhZ2VzIGNvb3JkaW5hdGVkIHRyYW5zcG9ydGF0aW9uIHNlcnZpY2VzOyBkZXZlbG9wcyBwcm9qZWN0cyB0byBpbXByb3ZlXG5zdGF0ZSBhbmQgbG9jYWwgaGlnaHdheSBzeXN0ZW1zIHRvIGltcHJvdmUgc2FmZXR5OyBhbmQgY29vcmRpbmF0ZXMgdHJhbnNwb3J0YXRpb24gcmVzZWFyY2ggZWZmb3J0cyJ9XX0sIHsibmFtZSI6ICJUcmFuc3BvcnRhdGlvbiBTZXJ2aWNlcyIsICJnZiI6IDAsICJkZWQiOiA2NDA5MjgwMCwgImZlZCI6IDE1NzEzMDAsICJ0b3RhbCI6IDY1NjY0MTAwLCAiZmVkX3NoYXJlIjogMC4wMjM5LCAiZGVkX3NoYXJlIjogMC45NzYxLCAiYmlsbHMiOiBbIlMxMzczIiwgIlMxNDI2Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGUgQWRtaW5pc3RyYXRpb24gUHJvZ3JhbSBzdXBwb3J0cyB0aGUgSWRhaG8gVHJhbnNwb3J0YXRpb24gRGVwYXJ0bWVudCBCb2FyZDsgcHJvdmlkZXMgbGVnYWwgcmVwcmVzZW50YXRpb25cbmFuZCBzZXJ2aWNlcyBmb3IgdGhlIGRlcGFydG1lbnQ7IGRldmVsb3BzIGxlZ2lzbGF0aW9uOyBvcGVyYXRlcyBpbmZvcm1hdGlvbiBzeXN0ZW1zOyBjb29yZGluYXRlcyBzYWZldHkgYW5kIHJpc2sgbWFuYWdlbWVudDsgcHJvdmlkZXNcbmVtcGxveWVlIHNlcnZpY2VzLCBidXNpbmVzcyBhbmQgc3VwcG9ydCBtYW5hZ2VtZW50OyBwcm92aWRlcyBmaW5hbmNpYWwgc2VydmljZXM7IGRldmVsb3BzIGxvbmctcmFuZ2UgcHJvZ3JhbSBhbmQgcHJvamVjdCBidWRnZXQgcGxhbnM7XG5hbmQgcGVyZm9ybXMgZWNvbm9taWMgYW5kIHByb2dyYW0gcmVzZWFyY2ggYWN0aXZpdGllcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkNhcGl0YWwgRmFjaWxpdGllcyIsICJ0ZXh0IjogIlRoZSBDYXBpdGFsIEZhY2lsaXRpZXMgUHJvZ3JhbSBkZXZlbG9wcywgYWRtaW5pc3RlcnMsIGFuZCBwcm92aWRlcyB0ZWNobmljYWwgYXNzaXN0YW5jZSBhbmQgcmVjb21tZW5kYXRpb25zXG5mb3IgdGhlIGRlcGFydG1lbnQncyBoZWFkcXVhcnRlcnMgYW5kIHRoZSBzaXggdHJhbnNwb3J0YXRpb24gZGlzdHJpY3RzLiBUaGlzIGluY2x1ZGVzIG5ldyBjb25zdHJ1Y3Rpb24sIHNpdGUgZGV2ZWxvcG1lbnQsIHN5c3RlbSB1cGdyYWRlcyxcbnByZXZlbnRpdmUgbWFpbnRlbmFuY2UsIGJ1aWxkaW5nIGFsdGVyYXRpb25zIGFuZCByZXBhaXJzLCBlbmVyZ3kgY29uc2VydmF0aW9uLCBidWlsZGluZyBzZWN1cml0eSwgbGlmZSBzYWZldHkgcmVxdWlyZW1lbnRzLCBhbmQgdmFyaW91cyBidWlsZGluZ1xuY29kZSBjb21wbGlhbmNlLCBpbmNsdWRpbmcgcHJvamVjdHMgcmVxdWlyZWQgYnkgdGhlIEFtZXJpY2FucyB3aXRoIERpc2FiaWxpdGllcyBBY3QifSwgeyJzdWJfcHJvZ3JhbSI6ICJBZXJvbmF1dGljcyIsICJ0ZXh0IjogIlRoZSBBZXJvbmF1dGljcyBQcm9ncmFtIGFzc2lzdHMgSWRhaG8gbXVuaWNpcGFsaXRpZXMgaW4gZGV2ZWxvcGluZyB0aGVpciBhaXJwb3J0cyBhbmQgb3BlcmF0ZXMgdGhlIHN0YXRlJ3MgYWlyXG5mbGVldCBzeXN0ZW0ifV19LCB7Im5hbWUiOiAiTW90b3IgVmVoaWNsZXMiLCAiZ2YiOiAwLCAiZGVkIjogMzY2MzI5MDAsICJmZWQiOiAzNjAwMDAwLCAidG90YWwiOiA0MDIzMjkwMCwgImZlZF9zaGFyZSI6IDAuMDg5NSwgImRlZF9zaGFyZSI6IDAuOTEwNSwgImJpbGxzIjogW10sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWVyb25hdXRpY3MiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgTW90b3IgVmVoaWNsZXMgKERNVikgbWFuYWdlcyBkcml2ZXJcdTIwMTlzIGxpY2Vuc2VzLCB2ZWhpY2xlIHJlZ2lzdHJhdGlvbnMsIGxpY2Vuc2UgcGxhdGVzLCBhbmRcbnZlaGljbGUgdGl0bGVzLiBUaGlzIGRpdmlzaW9uIGlzIHJlc3BvbnNpYmxlIHRvIG1lZXQgdGhlIG5lZWRzIGFuZCBleHBlY3RhdGlvbnMgb2YgbW90b3IgdmVoaWNsZSBjdXN0b21lcnMgYW5kIHRoZSBjb3VudHkgc2hlcmlmZnMgYW5kXG5hc3Nlc3NvcnMgd2hvIHdvcmsgYXMgdGhlIGRlcGFydG1lbnRcdTIwMTlzIGFnZW50cyJ9XX1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiRGVwYXJ0bWVudCBvZiBBZG1pbmlzdHJhdGlvbiIsICJmdHAiOiAxMzcuMCwgImdmIjogMjQyNjUwMCwgImRlZCI6IDMyMDI1OTAwLCAiZmVkIjogMCwgInRvdGFsIjogMzQ0NTI0MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjkyOTYsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NjciLCAiSDkyMyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIk1hbmFnZW1lbnQgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgTWFuYWdlbWVudCBTZXJ2aWNlcyBQcm9ncmFtIChmb3JtZXJseSBuYW1lZCB0aGUgRGlyZWN0b3IncyBPZmZpY2UpIHByb3ZpZGVzIGFkbWluaXN0cmF0aXZlLCBmaXNjYWwsIGxlZ2FsLFxuYW5kIGh1bWFuIHJlc291cmNlcyBzZXJ2aWNlcyB0byB0aGUgZGVwYXJ0bWVudCwgYW5kIGFkbWluaXN0ZXJzIHRoZSBJbmR1c3RyaWFsIFNwZWNpYWwgSW5kZW1uaXR5IEZ1bmQuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LVxuNTcwMSwgSWRhaG8gQ29kZV0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJQdWJsaWMgV29ya3MiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgUHVibGljIFdvcmtzIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgcGxhbm5pbmcsIGRlc2lnbiwgY29uc3RydWN0aW9uIGFuZCBtYWludGVuYW5jZSBvZiBhbGwgc3RhdGVcbmZhY2lsaXRpZXMuIFRoZSBkaXZpc2lvbiBkZXZlbG9wcyBidWRnZXRzLCBzdXBlcnZpc2VzIHRoZSBiaWRkaW5nIHByb2Nlc3MsIGFuZCBvdmVyc2VlcyB0aGUgc2VsZWN0aW9uIG9mIGFyY2hpdGVjdHMgYW5kIGVuZ2luZWVycyBmb3Igc3RhdGVcbmJ1aWxkaW5nIGFuZCByZW5vdmF0aW9uIHByb2plY3RzLiBUaGUgZGl2aXNpb24gc3VwZXJ2aXNlcyBwcm9qZWN0IGNvbnN0cnVjdGlvbiB0byBlbnN1cmUgcHJvamVjdHMgcHJvY2VlZCBhY2NvcmRpbmcgdG8gYXBwcm92ZWQgcGxhbnMgYW5kXG5zcGVjaWZpY2F0aW9ucywgYW5kIHByb3ZpZGVzIHByb3BlcnR5IG1hbmFnZW1lbnQgc2VydmljZXMgZm9yIHN0YXRlIGJ1aWxkaW5ncy4gT3RoZXIgc2VydmljZXMgaW5jbHVkZSBwcmV2ZW50YXRpdmUgYW5kIGNvcnJlY3RpdmUgYnVpbGRpbmdcbm1haW50ZW5hbmNlLCBjdXN0b2RpYWwsIGVudmlyb25tZW50YWwgY29udHJvbCwgZ3JvdW5kcyBrZWVwaW5nLCBhbmQgdXRpIn1dLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIkFkbWluaXN0cmF0aW9uIChjb3JlIG9wZXJhdGlvbnMpIiwgImdmIjogMjQyNjUwMCwgImRlZCI6IDI5NjgzOTAwLCAiZmVkIjogMCwgInRvdGFsIjogMzIxMTA0MDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjkyNDQsICJiaWxscyI6IFsiSDg2NyIsICJIOTIzIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiTWFuYWdlbWVudCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBNYW5hZ2VtZW50IFNlcnZpY2VzIFByb2dyYW0gKGZvcm1lcmx5IG5hbWVkIHRoZSBEaXJlY3RvcidzIE9mZmljZSkgcHJvdmlkZXMgYWRtaW5pc3RyYXRpdmUsIGZpc2NhbCwgbGVnYWwsXG5hbmQgaHVtYW4gcmVzb3VyY2VzIHNlcnZpY2VzIHRvIHRoZSBkZXBhcnRtZW50LCBhbmQgYWRtaW5pc3RlcnMgdGhlIEluZHVzdHJpYWwgU3BlY2lhbCBJbmRlbW5pdHkgRnVuZC4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctXG41NzAxLCBJZGFobyBDb2RlXSJ9LCB7InN1Yl9wcm9ncmFtIjogIlB1YmxpYyBXb3JrcyIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBQdWJsaWMgV29ya3MgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwbGFubmluZywgZGVzaWduLCBjb25zdHJ1Y3Rpb24gYW5kIG1haW50ZW5hbmNlIG9mIGFsbCBzdGF0ZVxuZmFjaWxpdGllcy4gVGhlIGRpdmlzaW9uIGRldmVsb3BzIGJ1ZGdldHMsIHN1cGVydmlzZXMgdGhlIGJpZGRpbmcgcHJvY2VzcywgYW5kIG92ZXJzZWVzIHRoZSBzZWxlY3Rpb24gb2YgYXJjaGl0ZWN0cyBhbmQgZW5naW5lZXJzIGZvciBzdGF0ZVxuYnVpbGRpbmcgYW5kIHJlbm92YXRpb24gcHJvamVjdHMuIFRoZSBkaXZpc2lvbiBzdXBlcnZpc2VzIHByb2plY3QgY29uc3RydWN0aW9uIHRvIGVuc3VyZSBwcm9qZWN0cyBwcm9jZWVkIGFjY29yZGluZyB0byBhcHByb3ZlZCBwbGFucyBhbmRcbnNwZWNpZmljYXRpb25zLCBhbmQgcHJvdmlkZXMgcHJvcGVydHkgbWFuYWdlbWVudCBzZXJ2aWNlcyBmb3Igc3RhdGUgYnVpbGRpbmdzLiBPdGhlciBzZXJ2aWNlcyBpbmNsdWRlIHByZXZlbnRhIn1dfSwgeyJuYW1lIjogIkNhcGl0b2wgQ29tbWlzc2lvbiIsICJnZiI6IDAsICJkZWQiOiAyMzQyMDAwLCAiZmVkIjogMCwgInRvdGFsIjogMjM0MjAwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImJpbGxzIjogW10sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRG9jdW1lbnQgU2VydmljZXMiLCAidGV4dCI6ICJUaGUgQ2FwaXRvbCBDb21taXNzaW9uJ3MgbWlzc2lvbiBpcyB0byBvdmVyc2VlIGFsbCByZW5vdmF0aW9uIGFuZCByZXN0b3JhdGlvbiBlZmZvcnRzIG9mIHRoZSBDYXBpdG9sIGJ1aWxkaW5nIGFuZFxuZ3JvdW5kcy4gVGhpcyBpbmNsdWRlcyBzZWxlY3RpbmcgYW4gYXJjaGl0ZWN0IGZvciB0aGUgQ2FwaXRvbDsgZGV2ZWxvcGluZyBhIG1hc3RlciBwbGFuIGFkZHJlc3NpbmcgdGhlIGJ1aWxkaW5nLCBpdHMgZnVybmlzaGluZ3MsIGFuZCBncm91bmRzO1xuYW5kIG92ZXJzZWVpbmcgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgcGh5c2ljYWwgc3RydWN0dXJlIG9mIHRoZSBidWlsZGluZy4gU3RhdHV0ZSByZXF1aXJlcyB0aGUgY29tbWlzc2lvbiB0byBtZWV0IGF0IGxlYXN0IHR3aWNlIGEgeWVhci5cbltTdGF0dXRvcnkgQXV0aG9yaXR5OiBDaGFwdGVyIDE2LCBUaXRsZSA2NywgSWRhaG8gQ29kZV0ifV19XX0sIHsiYXJlYSI6ICJHZW5lcmFsIEdvdmVybm1lbnQiLCAiYWdlbmN5IjogIlBlcm1hbmVudCBCdWlsZGluZyBGdW5kIiwgImZ0cCI6IDAuMCwgImdmIjogMCwgImRlZCI6IDcyNTA3MzAwLCAiZmVkIjogMCwgInRvdGFsIjogNzI1MDczMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAxLjAsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg5MTkiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIkg5MTkgaW5jbHVkZWQgc2l4IHNlY3Rpb25zIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zLiBTZWN0aW9uIDIgb2Zcbkg5MTkgYWxsb2NhdGVkIHRoZSBhcHByb3ByaWF0aW9uIHByb3ZpZGVkIGZvciBzcGVjaWZpYyBwcm9qZWN0cy4gU2VjdGlvbiAzIHByb3ZpZGVkIHRoZSBhcHByb3ByaWF0aW9uIG1heSBiZSB1c2VkIGFzIG1hdGNoaW5nIGZ1bmRzIGFuZCB0aGVcbkRpdmlzaW9uIG9mIFB1YmxpYyBXb3JrcyBtYXkgZXhwZW5kIGFueSBhcHByb3ByaWF0aW9uIHRvIGFuIGFnZW5jeSBmb3IgcHVibGljIHdvcmtzIHdpdGggdGhlIGFwcHJvdmFsIG9mIHRoZSBjb3VuY2lsLiBTZWN0aW9uIDQgcHJvdmlkZWRcbmZsZXhpYmlsaXR5IHRvIHJlYWxsb2NhdGUgcHJvamVjdCBzYXYifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJEb2N1bWVudCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlRoZSBmaXZlLXBlcnNvbiBQZXJtYW5lbnQgQnVpbGRpbmcgRnVuZCBBZHZpc29yeSBDb3VuY2lsIGlzIGNvbXBvc2VkIG9mIG9uZSBtZW1iZXIgZnJvbSB0aGUgU2VuYXRlLCBvbmVcbm1lbWJlciBmcm9tIHRoZSBIb3VzZSBvZiBSZXByZXNlbnRhdGl2ZXMsIG9uZSBjb250cmFjdG9yLCBvbmUgYmFua2VyLCBhbmQgb25lIGJ1c2luZXNzIHBlcnNvbi4gVGhlIGNvdW5jaWwgb3ZlcnNlZXMgYW5kIGFwcHJvdmVzIGFsbFxucGxhbm5pbmcsIGRlc2lnbiwgYW5kIGNvbnN0cnVjdGlvbiBvZiBzdGF0ZSBwdWJsaWMgd29ya3MgcHJvamVjdHMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTU3MTAsIElkYWhvIENvZGVdIn1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiQXR0b3JuZXkgR2VuZXJhbCIsICJmdHAiOiAyMjcuNCwgImdmIjogMzEwNjI3MDAsICJkZWQiOiAyMDUyNTAwLCAiZmVkIjogMTYwMjQwMCwgInRvdGFsIjogMzQ3MTc2MDAsICJmZWRfc2hhcmUiOiAwLjA0NjIsICJkZWRfc2hhcmUiOiAwLjA1OTEsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NjYiLCAiSDk3MSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiSDk3MSBzZXQgYXNpZGUgZXhpc3RpbmcgSWRhaG8gQ29kZSBzdWNoIHRoYXQgbW9uZXlzIGluIHRoZSBDb25zdW1lciBQcm90ZWN0aW9uXG5GdW5kIG1heSBiZSB1c2VkIGluIEZZIDIwMjYgYW5kIEZZIDIwMjcgZm9yIHRoZSBmdXJ0aGVyYW5jZSBvZiBhbGwgdGhlIEF0dG9ybmV5IEdlbmVyYWwncyBkdXRpZXMgYW5kIGFjdGl2aXRpZXMgdW5kZXIgSWRhaG8gbGF3LCBpbiBhZGRpdGlvblxudG8gZHV0aWVzIGFuZCBhY3Rpdml0aWVzIHJlbGF0ZWQgdG8gdGhlIENvbnN1bWVyIFByb3RlY3Rpb24gQWN0In0sIHsidHlwZSI6ICJDT05ESVRJT05TLCBMSU1JVEFUSU9OUywgQU5EIFJFU1RSSUNUSU9OUyIsICJ0ZXh0IjogIkg5NzEgc2V0IGFzaWRlIGV4aXN0aW5nIElkYWhvIENvZGUgc28gdGhhdCBtb25leXMgaW4gdGhlIENvbnN1bWVyIFByb3RlY3Rpb24gRnVuZFxubWF5IGJlIHVzZWQgaW4gRlkgMjAyNiBhbmQgRlkgMjAyNyBmb3IgdGhlIGZ1cnRoZXJhbmNlIG9mIGFsbCB0aGUgQXR0b3JuZXkgR2VuZXJhbCdzIGR1dGllcyBhbmQgYWN0aXZpdGllcyB1bmRlciBJZGFobyBsYXcsIGFzIG9wcG9zZWQgdG9cbm9ubHkgZHV0aWVzIGFuZCBhY3Rpdml0aWVzIHRoYXQgcmVsYXRlIHRvIHRoZSBDb25zdW1lciBQcm90ZWN0aW9uIEFjdCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIExlZ2FsIFNlcnZpY2VzIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIHByb3ZpZGVzIGxlZ2FsIGFzc2lzdGFuY2UgdG8gYWdlbmNpZXMgaW4gY2l2aWwgbWF0dGVycywgcmVwcmVzZW50cyB0aGUgc3RhdGUgaW4gY3JpbWluYWwgbWF0dGVycywgYW5kXG5wcm92aWRlcyBvdmVyYWxsIGFkbWluaXN0cmF0aXZlIHN1cHBvcnQgZm9yIHRoZSBvZmZpY2UifSwgeyJzdWJfcHJvZ3JhbSI6ICJJbnRlcm5ldCBDcmltZXMgQWdhaW5zdCBDaGlsZHJlbiIsICJ0ZXh0IjogIlBhcnRuZXJpbmcgd2l0aCBsb2NhbCBsYXcgZW5mb3JjZW1lbnQgZW50aXRpZXMsIHRoaXMgcHJvZ3JhbSBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGludmVzdGlnYXRpb24gYW5kIHByb3NlY3V0aW9uXG5vZiBvZmZlbmRlcnMgd2hvIHVzZSB0aGUgaW50ZXJuZXQsIG9ubGluZSBzeXN0ZW1zLCBjb21wdXRlciB0ZWNobm9sb2d5LCBjZWxsdWxhciBwaG9uZXMsIHNtYXJ0IHBob25lcywgb3IgbW9iaWxlIGRldmljZXMgdG8gc2V4dWFsbHkgZXhwbG9pdFxuY2hpbGRyZW4ifSwgeyJzdWJfcHJvZ3JhbSI6ICJTcGVjaWFsIExpdGlnYXRpb24iLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gcHJvdmlkZXMgZm9yIGV4dHJhb3JkaW5hcnkgbGl0aWdhdGlvbiBjb3N0cyBhbmQgZm9yIHRoZSByZXRlbnRpb24gb2YgcHJpdmF0ZSBsZWdhbCByZXByZXNlbnRhdGlvbiBmb3JcbmV4dHJhb3JkaW5hcnkgb3IgdW5hbnRpY2lwYXRlZCBsaXRpZ2F0aW9uIHdoZW4gc3BlY2lhbCBleHBlcnRpc2UgaXMgbmVlZGVkIG9yIHdoZW4gdGhlcmUgaXMgYW4gZXRoaWNhbCBjb25mbGljdCBvZiBpbnRlcmVzdCBiZXR3ZWVuIGdvdmVybm1lbnRhbFxuZW50aXRpZXMifV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJTdGF0ZSBDb250cm9sbGVyIiwgImZ0cCI6IDEyNS4wLCAiZ2YiOiAyMzMxODkwMCwgImRlZCI6IDE0NjM5NzAwLCAiZmVkIjogMTYwNzYwMCwgInRvdGFsIjogMzk1NjYyMDAsICJmZWRfc2hhcmUiOiAwLjA0MDYsICJkZWRfc2hhcmUiOiAwLjM3LCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODY2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDExIG9mIEg4NjYgcmVxdWlyZWQgdGhlIE9mZmljZSBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciB0byBjb21wbGV0ZSBhIGNhc2hcbnJlY29uY2lsaWF0aW9uIG9mIGFjY291bnQgYmFsYW5jZXMgYW5kIGFjdGl2aXR5IGluIEx1bWEgdG8gbW9udGhseSBiYW5rIHN0YXRlbWVudHMgZm9yIGVhY2ggZnVuZCBhbmQgYWdlbmN5IGZyb20gSnVseSAxLCAyMDIzIHRocm91Z2ggSnVuZVxuMzAsIDIwMjYsIGFuZCB0byBwcm92aWRlIGEgcmVwb3J0IHRvIEpGQUMgb24gdGhlIGFjY3VyYWN5IG9mIHJlcG9ydGVkIGNhc2ggYmFsYW5jZXMgYWZ0ZXIgcmVjb25jaWxpYXRpb24gYXQgdGhlIGZhbGwgaW50ZXJpbSBtZWV0aW5nIG9mIEpGQUMgb3Jcbk9jdG9iZXIgMTYsIDIwMjYsIHdoaWNoZXZlciBpcyBlYXJsIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGlzIG9mZmljZSBwcm92aWRlcyBhZG1pbmlzdHJhdGl2ZSwgZmluYW5jaWFsLCBhbmQgaHVtYW4gcmVzb3VyY2VzIHNlcnZpY2VzIGZvciB0aGUgYWdlbmN5OyBhbmQgcHJvdmlkZXNcbnN1cHBvcnQgZm9yIHRoZSBleCBvZmZpY2lvIGR1dGllcyBvZiB0aGUgU3RhdGUgQ29udHJvbGxlciBpbmNsdWRpbmcgc2VydmluZyBhcyBzZWNyZXRhcnkgdG8gdGhlIEJvYXJkIG9mIEV4YW1pbmVycywgbWVtYmVyIG9mIHRoZSBJZGFobyBTdGF0ZVxuQm9hcmQgb2YgTGFuZCBDb21taXNzaW9uZXJzLCBTdGF0ZSBTb2NpYWwgU2VjdXJpdHkgQWRtaW5pc3RyYXRvciwgYW5kIElkYWhvIFRlY2hub2xvZ3kgQXV0aG9yaXR5IChJVEEpIG1lbWJlci4gQXMgSWRhaG8ncyBhZG1pbmlzdHJhdG9yIG9mXG5zdGF0ZSBzb2NpYWwgc2VjdXJpdHkgcHJvZ3JhbXMsIHRoZSBTdGF0ZSBDb250cm9sbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBzdGF0ZSBjb21wbGlhbmNlIHdpdGggU2VjdGlvbiAyMTggb2YgdGhlIGZlZGVyYWwgU29jaWFsXG5TZWN1cml0eSBBY3QuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9ucyA2Ny0xMDAxIGFuZCA1OS0xMTAxQSwgSWRhaG8gQ29kIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGV3aWRlIEFjY291bnRpbmciLCAidGV4dCI6ICJTdGF0ZXdpZGUgQWNjb3VudGluZyBwdWJsaXNoZXMgSWRhaG8ncyBBbm51YWwgQ29tcHJlaGVuc2l2ZSBGaW5hbmNpYWwgUmVwb3J0LCBhcyB3ZWxsIGFzIG90aGVyIHN0YXRld2lkZSBhbmRcbmFnZW5jeSBzcGVjaWZpYyByZXBvcnRzLiBGaW5hbmNpYWwgcmVwb3J0cyBwcmVwYXJlZCBieSB0aGUgb2ZmaWNlIGFyZSBjcml0aWNhbCB0byBtYWludGFpbmluZyBJZGFobydzIGhpZ2ggY3JlZGl0IHJhdGluZyBhbmQgaW4gb2J0YWluaW5nIGZhdm9yYWJsZVxuaW50ZXJlc3QgcmF0ZXMgd2hlbiBpc3N1aW5nIHRheCBhbnRpY2lwYXRpb24gbm90ZXMgYW5kIG90aGVyIGJvbmRzLiBUaGUgb2ZmaWNlIHByb3ZpZGVzIGd1aWRhbmNlIGFuZCBzdXBwb3J0IHRvIGFnZW5jaWVzIGZvciBwcm9wZXIgaW50ZXJuYWxcbmNvbnRyb2xzIGFuZCBnZW5lcmFsbHkgYWNjZXB0ZWQgYWNjb3VudGluZyBwcmluY2lwbGVzIHRvIGJldHRlciBtYW5hZ2UgYW5kIHJlcG9ydCB0aGUgZmluYW5jaWFsIGFmZmFpcnMgb2YgdGhlIHN0YXRlIG9mIElkYWhvLiBbU3RhdHV0b3J5XG5BdXRob3JpdHk6IFNlY3Rpb24gNjctMTAwMSwgSWRhaG8gQ29kZV0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJDb21wdXRlciBDZW50ZXIiLCAidGV4dCI6ICJUaGUgQ29tcHV0ZXIgU2VydmljZSBDZW50ZXIgbWFpbnRhaW5zIElkYWhvJ3MgbGFyZ2VzdCBzdGF0ZSBkYXRhIGNlbnRlciBhbmQgcHJvdmlkZXMgdGVjaG5vbG9neSBzZXJ2aWNlcyB0b1xudGhlIEFjY291bnRpbmcgUHJvZ3JhbSwgYXMgd2VsbCBhcyBtYW55IG90aGVyIHN0YXRlIGFnZW5jaWVzLiBUaGUgZGl2aXNpb24gaXMgZnVuZGVkIHZpYSBhIGRlZGljYXRlZCBmdW5kIGFwcHJvcHJpYXRpb24gYW5kIGJpbGxzIHRoZSBTdGF0ZVxuQ29udHJvbGxlcidzIGRpdmlzaW9ucyBhbmQgYWdlbmN5IGN1c3RvbWVycyBkaXJlY3RseSBmb3IgSVQgc2VydmljZXMgaXQgcHJvdmlkZXMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTEwMDEsIElkYWhvIENvZGVdIn0sIHsic3ViX3Byb2dyYW0iOiAiRW50ZXJwcmlzZSBCdXNpbmVzcyBPcGVyYXRpb25zIiwgInRleHQiOiAiRW50ZXJwcmlzZSBCdXNpbmVzcyBPcGVyYXRpb25zIChFQk8pIGhvdXNlcyB0aGUgdGVhbSB0aGF0IG1haW50YWlucyBMdW1hLCB0aGUgc3RhdGUncyBlbnRlcnByaXNlIHJlc291cmNlXG5wbGFubmluZyBzdWl0ZSB0aGF0IHByb3ZpZGVzIGFjY291bnRpbmcsIHBheXJvbGwsIGh1bWFuIHJlc291cmNlLCBidWRnZXQsIGFuZCBwcm9jdXJlbWVudCBtb2R1bGVzLiBFQk8gbWFpbnRhaW5zIHRoZSBzdGF0ZSdzIGFjY291bnRpbmdcbnN5c3RlbSBvZiByZWNvcmQgYW5kIHByb2Nlc3NlcyB2ZW5kb3IgcGF5bWVudHMgb24gYmVoYWxmIG9mIHN0YXRlIGFnZW5jaWVzLiBFQk8gcHJvY2Vzc2VzIHRoZSBzdGF0ZSdzIHBheXJvbGwgYW5kIGlzIHJlc3BvbnNpYmxlIGZvclxuZ2FybmlzaG1lbnQgcHJvY2Vzc2luZywgdGF4IHJlcG9ydGluZywgYW5kIGVsZWN0cm9uaWMgZnVuZCB0cmFuc2ZlcnMgd2l0aCBtYWpvciB2ZW5kb3JzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGF5cm9sbCBzeXN0ZW0uIFRoZSBkaXZpc2lvbiBhbHNvXG5tYWludGFpbnMgYW5kIHN1cHBvcnRzIEx1bWEgUHJvY3VyZW1lbnQgZm9yIHRoZSBEaXZpc2lvbiBvZiBQdXJjaGFzaW5nLCBMdW1hIEdIUiBmbyJ9XX0sIHsiYXJlYSI6ICJHZW5lcmFsIEdvdmVybm1lbnQiLCAiYWdlbmN5IjogIk9mZmljZSBvZiB0aGUgR292ZXJub3IiLCAiZnRwIjogMTQyNy41MSwgImdmIjogMzU3MzM3MDAsICJkZWQiOiAyMzE1ODUyMDAsICJmZWQiOiAxODg2NDk3MDAsICJ0b3RhbCI6IDQ1NTk2ODYwMCwgImZlZF9zaGFyZSI6IDAuNDEzNywgImRlZF9zaGFyZSI6IDAuNTA3OSwgImFtZW5kc19jb2RlIjogdHJ1ZSwgImJpbGxzIjogWyJIODY3IiwgIkg4NjgiLCAiSDg2OSIsICJIODcwIiwgIkg5MDgiLCAiSDkyNCIsICJIOTMzIiwgIkg5NDIiLCAiSDk0OSIsICJTMTQxNiJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDg5OCBtb3ZlZCB0aGUgU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIE9mZmljZSBmcm9tIHRoZSBJZGFobyBTdGF0ZSBIaXN0b3JpY2FsIFNvY2lldHkgdG8gdGhlIE9mZmljZSBvZiBTcGVjaWVzLFxuTWluZXJhbHMsIGFuZCBFbmVyZ3kgQ29vcmRpbmF0aW9uIn0sIHsidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg3MzcgbWVyZ2VkIHRoZSBPZmZpY2Ugb2YgU3BlY2llcyBDb25zZXJ2YXRpb24gd2l0aCB0aGUgT2ZmaWNlIG9mIEVuZXJneSBhbmQgTWluZXJhbCBSZXNvdXJjZXMuIFRoZSBuZXdseVxuZm9ybWVkIG9mZmljZSBpcyBjYWxsZWQgdGhlIE9mZmljZSBvZiBTcGVjaWVzLCBNaW5lcmFscywgYW5kIEVuZXJneSBDb29yZGluYXRpb24ifSwgeyJ0eXBlIjogIkJVREdFVCBMQVcgRVhFTVBUSU9OUyIsICJ0ZXh0IjogIlRoZSBFeGVjdXRpdmUgT2ZmaWNlIG9mIHRoZSBHb3Zlcm5vciByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIFNlY3Rpb24gMyBvZiBIODY2IHRoYXRcbnJlbW92ZWQgYWxsIHJlc3RyaWN0aW9ucyBsaW1pdGluZyB0aGUgdHJhbnNmZXIgb2YgbW9uZXlzIGFtb25nIHBlcnNvbm5lbCBjb3N0cywgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZFxuYmVuZWZpdCBwYXltZW50cy4gVGhlIGJpbGwgYWxzbyBleGVtcHRlZCB0aGUgb2ZmaWNlIGZyb20gdGhlIDEwJSB0cmFuc2ZlciBsaW1pdGF0aW9uIGJldHdlZW4gYnVkZ2V0ZWQgcHJvZ3JhbXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJFbnRlcnByaXNlIEJ1c2luZXNzIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgRmluYW5jaWFsIE1hbmFnZW1lbnQgd29ya3Mgd2l0aCB0aGUgR292ZXJub3IgdG8gcHJvdmlkZSBkaXJlY3Rpb24gYW5kIGxlYWRlcnNoaXAgaW4gbWFuYWdpbmdcbnRoZSBmaW5hbmNpYWwgYW5kIHBvbGljeSBpc3N1ZXMgb2Ygc3RhdGUgZ292ZXJubWVudDsgcHJvZHVjZXMgYSBiYWxhbmNlZCBidWRnZXQgcmVjb21tZW5kYXRpb24gdG8gdGhlIExlZ2lzbGF0dXJlIHRoYXQgYWRkcmVzc2VzIHRoZSBuZWVkc1xub2YgdGhlIHN0YXRlOyBwcm9qZWN0cyBhbmQgbW9uaXRvcnMgc3RhdGUgcmV2ZW51ZXM7IGFuZCBjb29yZGluYXRlcyBzdGF0ZSBmaW5hbmNpYWwgcHJhY3RpY2VzLiBUaGUgZGl2aXNpb24gY29uc2lzdHMgb2YgZm91ciBtYWluIGFkbWluaXN0cmF0aXZlXG51bml0czogQnVkZ2V0LCBFY29ub21pYyBBbmFseXNpcywgRmlzY2FsIGFuZCBPcGVyYXRpb25zLCBhbmQgUmVndWxhdG9yeSBhbmQgTGVnaXNsYXRpdmUgQWZmYWlycywgd2hpY2ggaW5jbHVkZXMgdGhlIE9mZmljZSBvZiB0aGVcbkFkbWluaXN0cmF0aXZlIFJ1bGVzIENvb3JkaW5hdG9yLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbnMgNjctMTkxMCB0aHJvIn0sIHsic3ViX3Byb2dyYW0iOiAiQWRtaW5pc3RyYXRpb24gLSBHb3Zlcm5vcidzIE9mZmljZSIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBleGVyY2lzZXMgdGhlIHBvd2VycyBhbmQgZHV0aWVzIG9mIHRoZSBDaGllZiBFeGVjdXRpdmUgb2YgdGhlIHN0YXRlIG9mIElkYWhvIGluIGFjY29yZGFuY2Ugd2l0aCB0aGVcbklkYWhvIENvbnN0aXR1dGlvbiBhbmQgdGhlIGxhd3Mgb2YgdGhlIHN0YXRlIn0sIHsic3ViX3Byb2dyYW0iOiAiQWN0aW5nIEdvdmVybm9yIFBheSIsICJ0ZXh0IjogIkFydGljbGUgNCwgU2VjdGlvbnMgMTIgYW5kIDE0IG9mIHRoZSBJZGFobyBDb25zdGl0dXRpb24gZGVsaW5lYXRlIHRoZSBzdWNjZXNzaW9uIG9mIHBvd2VyLiBJbiB0aGUgZXZlbnQgdGhlXG5Hb3Zlcm5vciBpcyBvdXQgb2YgdGhlIHN0YXRlLCB0aGUgTGlldXRlbmFudCBHb3Zlcm5vciBiZWNvbWVzIGFjdGluZyBHb3Zlcm5vci4gSW4gdGhlIGFic2VuY2Ugb2YgdGhlIExpZXV0ZW5hbnQgR292ZXJub3IsIHRoZSBQcmVzaWRlbnRcblBybyBUZW1wb3JlIGlzIHRvIGFjdCBhcyBHb3Zlcm5vci4gSW4gdGhlIGFic2VuY2Ugb2YgdGhlIFByZXNpZGVudCBQcm8gVGVtcG9yZSwgdGhlIFNwZWFrZXIgb2YgdGhlIEhvdXNlIGlzIHRvIGFjdCBhcyBHb3Zlcm5vci4gUHVyc3VhbnRcbnRvIFNlY3Rpb24gNjctODA5KDIpLCBJZGFobyBDb2RlLCB0aGUgb2ZmaWNpYWwgYWN0aW5nIGFzIEdvdmVybm9yIGlzIGVudGl0bGVkIHRvIGFkZGl0aW9uYWwgY29tcGVuc2F0aW9uIGNhbGN1bGF0ZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlblxudGhlIEdvdmVybm9yJ3Mgc2FsYXJ5IGFuZCB0aGUgc2FsYXJ5IG9mIHRoZSBMaWV1dGVuYW50IEdvdmVybm9yIn0sIHsic3ViX3Byb2dyYW0iOiAiRXhwZW5zZSBBbGxvd2FuY2UiLCAidGV4dCI6ICJTZWN0aW9uIDY3LTgwOChkKSwgSWRhaG8gQ29kZSwgcHJvdmlkZXMgdGhhdCBjZXJ0YWluIG1vbmV5cyBtYXkgYmUgdXNlZCBhdCB0aGUgR292ZXJub3IncyBkaXNjcmV0aW9uIHRvIGFzc2lzdFxuaW4gZGVmcmF5aW5nIGV4cGVuc2VzIHJlbGF0aW5nIHRvIG9yIHJlc3VsdGluZyBmcm9tIHRoZSBkaXNjaGFyZ2Ugb2Ygb2ZmaWNpYWwgZHV0aWVzIn0sIHsic3ViX3Byb2dyYW0iOiAiR292ZXJub3JcdTIwMTlzIEVtZXJnZW5jeSIsICJ0ZXh0IjogIkZ1bmRzIGFyZSBhdmFpbGFibGUgdG8gYmUgZXhwZW5kZWQgYnkgdGhlIEdvdmVybm9yIHRvIHBheSBuZWNlc3NhcnkgY29zdHMgYXNzb2NpYXRlZCB3aXRoIGFueSBlbWVyZ2VuY3ksXG53aGljaCB3YXMgbm90IGZvcmVzZWVuIG9yIHJlYXNvbmFibHkgZm9yZXNlZWFibGUgYnkgdGhlIExlZ2lzbGF0dXJlLCBhbmQgd2hpY2ggbWF5IGFyaXNlIGluIGNhcnJ5aW5nIG9uIHRoZSBlc3NlbnRpYWwgZnVuY3Rpb25zIG9mIHN0YXRlXG5nb3Zlcm5tZW50IGFuZCBpbiBwcm90ZWN0aW5nIHRoZSBpbnRlcmVzdHMgb2YgdGhlIHN0YXRlIChTZWN0aW9uIDU3LTE2MDEsIElkYWhvIENvZGUpIn0sIHsic3ViX3Byb2dyYW0iOiAiR292ZXJub3JcdTIwMTlzIEVtZXJnZW5jeSIsICJ0ZXh0IjogIlRoZSBEaXZpc2lvbiBvZiBIdW1hbiBSZXNvdXJjZXMgKERIUikgaXMgb3JnYW5pemVkIHdpdGhpbiB0aGUgT2ZmaWNlIG9mIHRoZSBHb3Zlcm5vci4gVGhlIGRpdmlzaW9uIGlzXG5yZXNwb25zaWJsZSBmb3IgZW1wbG95ZWUgcmVjcnVpdG1lbnQsIGpvYiBjbGFzc2lmaWNhdGlvbiwgZW1wbG95ZWUgYXNzZXNzbWVudCBhbmQgc2VsZWN0aW9uIHByb2Nlc3NlcywgY29tcGVuc2F0aW9uIGlzc3Vlcywgd29ya2ZvcmNlXG5wbGFubmluZyBhbmQgZGV2ZWxvcG1lbnQsIGVtcGxveWVlIHJlbGF0aW9ucywgYW5kIHByb3ZpZGluZyBodW1hbiByZXNvdXJjZSBwb2xpY3kgdG8gY29tcGx5IHdpdGggYXBwbGljYWJsZSBsYXdzIGFuZCByZWd1bGF0aW9ucy4gTW9zdCBvZlxudGhlIGZvcm1lciBwb3dlcnMgYW5kIGR1dGllcyBvZiB0aGUgUGVyc29ubmVsIENvbW1pc3Npb24gd2VyZSBzdGF0dXRvcmlseSB0cmFuc2ZlcnJlZCB0byB0aGUgYWRtaW5pc3RyYXRvciBvZiB0aGUgRGl2aXNpb24gb2YgSHVtYW5cblJlc291cmNlcyBpbiBGWSAyMDAwLiBUaGUgYWRtaW5pc3RyYXRvciBpcyBhcHBvaW50ZWQgYnkgYW5kIHJlcG9ydHMgdG8gdGhlIEdvdmVybm9yLiBUaGUgUGVyc28ifSwgeyJzdWJfcHJvZ3JhbSI6ICJHb3Zlcm5vclx1MjAxOXMgRW1lcmdlbmN5IiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IFNlcnZpY2VzIG9wZXJhdGVzIHRoZSBzdGF0ZSBuZXR3b3JrIGFuZCBjb29yZGluYXRlZCBpbnRlcm5ldCwgY29uc29saWRhdGVkXG5tZXNzYWdpbmcsIHRlbGVwaG9uZSwgYW5kIGRhdGEgYW5kIHZpZGVvIHRyYW5zbWlzc2lvbiBzZXJ2aWNlcy4gVGhlIG9mZmljZSBhbHNvIGNvb3JkaW5hdGVzIHRoZSBJZGFobyBUZWNobm9sb2d5IEF1dGhvcml0eSAoSVRBKSwgd2hpY2hcbnJldmlld3MgYW5kIGV2YWx1YXRlcyB0aGUgaW5mb3JtYXRpb24gdGVjaG5vbG9neSBhbmQgdGVsZWNvbW11bmljYXRpb25zIHN5c3RlbXMgaW4gdXNlIGJ5IHN0YXRlIGFnZW5jaWVzLCBhbmQgcHJlcGFyZXMgc3RhdGV3aWRlIHNob3J0XG5hbmQgbG9uZy1yYW5nZSBJVCBhbmQgVGVsZWNvbW11bmljYXRpb25zIFBsYW5zLiBXaXRoaW4gdGhlIGNvbnRleHQgb2YgdGhvc2UgcGxhbnMsIHRoZSBJVEEgZXN0YWJsaXNoZXMgc3RhdGV3aWRlIElUIGFuZFxudGVsZWNvbW11bmljYXRpb25zIHBvbGljaWVzLCBzdGFuZGFyZHMsIGd1aWRlbGluZXMsIGFuZCBjb252ZW50aW9ucyBhc3N1cmluZyB1bmlmb3JtaXR5IGFuZCBjb21wYSJ9LCB7InN1Yl9wcm9ncmFtIjogIk1pbGl0YXJ5IE1hbmFnZW1lbnQiLCAidGV4dCI6ICJUaGUgTWlsaXRhcnkgRGl2aXNpb25cdTIwMTlzIE1pbGl0YXJ5IE1hbmFnZW1lbnQgUHJvZ3JhbSBwcm92aWRlcyBvdmVyYWxsIG1hbmFnZW1lbnQgdGhhdCBlbnN1cmVzIG1pc3Npb25cbmNhcGFiaWxpdHkgYW5kIG1lZXRzIHRoZSBnb2FscyBvZiB0aGUgc3RhdGUgYW5kIGZlZGVyYWwgZ292ZXJubWVudHMsIGFzIGVzdGFibGlzaGVkIGJ5IGxhdyJ9LCB7InN1Yl9wcm9ncmFtIjogIkZlZGVyYWwvU3RhdGUgQWdyZWVtZW50cyIsICJ0ZXh0IjogIlRoZSBwdXJwb3NlIG9mIHRoZSBNaWxpdGFyeSBEaXZpc2lvblx1MjAxOXMgRmVkZXJhbC9TdGF0ZSBBZ3JlZW1lbnRzIFByb2dyYW0gaXMgdG8gb3BlcmF0ZSBhbmQgbWFpbnRhaW4gdGhlIEdvd2VuXG5GaWVsZCBjb21wbGV4ZXMsIGRlc2VydCB0cmFpbmluZyByYW5nZSBmYWNpbGl0aWVzLCBhbmQgbmluZSBtYWludGVuYW5jZSBzaG9wcyBsb2NhdGVkIHRocm91Z2hvdXQgdGhlIHN0YXRlLiBUaGlzIHByb2dyYW0gaXMgYSBqb2ludCB2ZW50dXJlXG5iZXR3ZWVuIHRoZSBzdGF0ZSBhbmQgdGhlIGZlZGVyYWwgTmF0aW9uYWwgR3VhcmQgQnVyZWF1LiBTZXJ2aWNlIGNvbnRyYWN0cyBhcmUgbmVnb3RpYXRlZCBhbm51YWxseSBpbiB3aGljaCB0aGUgc3RhdGUgcHJvdmlkZXMgc3BlY2lmaWVkXG5zZXJ2aWNlcyB0byB0aGUgTmF0aW9uYWwgR3VhcmQgYW5kIGlzIHJlaW1idXJzZWQgYnkgdGhlIGZlZGVyYWwgZ292ZXJubWVudCBmb3IgNTAgdG8gMTAwIHBlcmNlbnQgb2YgdGhlIGNvc3QuIFRoZXJlIGlzIGN1cnJlbnRseSBhIHRvdGFsIG9mIDEzXG5jb29wZXJhdGl2ZSBhZ3JlZW1lbnRzIGJldHdlZW4gdGhlIEFpciBhbmQgQXJteSBOYXRpb25hbCBHdWFyZCJ9LCB7InN1Yl9wcm9ncmFtIjogIk9mZmljZSBvZiBFbWVyZ2VuY3kgTWFuYWdlbWVudCIsICJ0ZXh0IjogIkluIEZZIDIwMTgsIHRoZSBJZGFobyBPZmZpY2Ugb2YgRW1lcmdlbmN5IE1hbmFnZW1lbnQgKElPRU0pIHJlcGxhY2VkIHRoZSBJZGFobyBCdXJlYXUgb2YgSG9tZWxhbmRcblNlY3VyaXR5LiBCZWdpbm5pbmcgaW4gRlkgMjAwNSwgdGhlIEJ1cmVhdSBvZiBIb21lbGFuZCBTZWN1cml0eSBzdXBlcnNlZGVkIGFuZCBjb21iaW5lZCB0aGUgZnVuY3Rpb25zIG9mIHRoZSBCdXJlYXUgb2YgRGlzYXN0ZXIgU2VydmljZXNcbmFuZCB0aGUgQnVyZWF1IG9mIEhhemFyZG91cyBNYXRlcmlhbHMuIFtBdXRob3JpdHk6IEV4ZWMuIE9yZGVyIE5vLiAyMDAzLTExLCBTZWN0aW9ucyAzOS03MTAxIGFuZCA0Ni0xMDAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkVtZXJnZW5jeSBNZWRpY2FsIFNlcnZpY2VzIiwgInRleHQiOiAiUHJvdmlkZXMgYSBzdGF0ZXdpZGUgc3lzdGVtIHRvIHJlc3BvbmQgdG8gY3JpdGljYWwgaWxsbmVzcyBhbmQgaW5qdXJ5IHNpdHVhdGlvbnMuIEgyMDYgKDIwMjUpIGVzdGFibGlzaGVkIHRoZVxuRW1lcmdlbmN5IE1lZGljYWwgU2VydmljZXMgQWN0IHdpdGhpbiBUaXRsZSA0NiwgSWRhaG8gQ29kZSwgYW5kIHRyYW5zZmVycmVkIHRoaXMgcHJvZ3JhbSBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIEhlYWx0aCBhbmQgV2VsZmFyZSB0byB0aGVcbk1pbGl0YXJ5IERpdmlzaW9uIn0sIHsic3ViX3Byb2dyYW0iOiAiUmV0aXJlbWVudCBBZG1pbmlzdHJhdGlvbiIsICJ0ZXh0IjogIlRoZSBQdWJsaWMgRW1wbG95ZWUgUmV0aXJlbWVudCBTeXN0ZW0gb2YgSWRhaG8gKFBFUlNJKSBhZG1pbmlzdGVycyBhIGRlZmluZWQgYmVuZWZpdCByZXRpcmVtZW50IHBsYW4gdGhhdCBpc1xubWFuZGF0b3J5IGZvciBhbGwgZWxpZ2libGUgc3RhdGUgZW1wbG95ZWVzIGFuZCBzY2hvb2wgZGlzdHJpY3QgZW1wbG95ZWVzLCBhcyB3ZWxsIGFzIGZvciBlbXBsb3llZXMgb2YgcG9saXRpY2FsIHN1YmRpdmlzaW9ucyB3aGljaCBoYXZlIGVsZWN0ZWRcbnRvIHBhcnRpY2lwYXRlLiBQRVJTSSBhbHNvIGFkbWluaXN0ZXJzIGEgZGVmaW5lZCBjb250cmlidXRpb24gcGxhbiB0aGF0IHByb3ZpZGVzIGFuIG9wdGlvbmFsIDQwMShrKSBwbGFuIHRvIGFsbCBtZW1iZXJzIHdobyBhcmUgZWxpZ2libGUuXG5TdGF0dXRvcnkgYXV0aG9yaXR5OiBDaGFwdGVyIDEzLCBUaXRsZSA1OSwgSWRhaG8gQ29kZSJ9LCB7InN1Yl9wcm9ncmFtIjogIlBvcnRmb2xpbyBJbnZlc3RtZW50IiwgInRleHQiOiAiVGhlIFBvcnRmb2xpbyBJbnZlc3RtZW50IFByb2dyYW0gbWFuYWdlcyBQRVJTSSBhc3NldHMgdG8gcmVhbGl6ZSBzZWN1cmUgbG9uZy10ZXJtIHJldHVybnMgb24gaW52ZXN0bWVudHNcbndoaWxlIG1pbmltaXppbmcgcmlzaywgd2l0aCBhIGdvYWwgb2YgcHJvdmlkaW5nIHRoZSBmdW5kcyBuZWNlc3NhcnkgdG8gbWVldCByZXRpcmVtZW50IHBsYW4gb2JsaWdhdGlvbnMuIFNpbmNlIEZZIDE5OTYsIHRoZSBhZG1pbmlzdHJhdGl2ZVxuY29zdHMgb2YgdGhlIFBvcnRmb2xpbyBJbnZlc3RtZW50IFByb2dyYW0gaGF2ZSBiZWVuIGFwcHJvcHJpYXRlZCBhbm51YWxseSwgd2hpbGUgdGhlIHJlbWFpbmluZyBpbnZlc3RtZW50IGNvc3RzIG9wZXJhdGUgdW5kZXIgYSBjb250aW51b3VzXG5hcHByb3ByaWF0aW9uIHB1cnN1YW50IHRvIFNlY3Rpb24gNTktMTMxMSwgSWRhaG8gQ29kZSJ9LCB7InN1Yl9wcm9ncmFtIjogIlBvcnRmb2xpbyBJbnZlc3RtZW50IiwgInRleHQiOiAiVGhlIGFnZW5jeSBwcm92aWRlcyBjb29yZGluYXRpb24gYmV0d2VlbiB2YXJpb3VzIHN0YXRlIGFuZCBmZWRlcmFsIGFnZW5jaWVzIHJlc3BvbnNpYmxlIGZvciBzcGVjaWVzXG5jb25zZXJ2YXRpb24gdW5kZXIgdGhlIEVuZGFuZ2VyZWQgU3BlY2llcyBBY3QuIFRoZSBvZmZpY2UgZGV2ZWxvcHMgaW50ZWdyYXRlZCBzdGF0ZSBwb2xpY2llcyB0b3dhcmRzIGF0LXJpc2sgc3BlY2llcyB3aXRoIGFwcHJvcHJpYXRlXG5tYW5hZ2VtZW50IHBsYW5zIGFuZCBsYW5kb3duZXIgaW5jZW50aXZlcyBhbmQgcHJvdGVjdGlvbnMuIEluIDIwMjYsIHB1cnN1YW50IHRvIEg3MzcsIHRoZSBhcHByb3ByaWF0aW9uIGZvciB0aGlzIHByb2dyYW0gd2FzIHJlZHVjZWRcbmFuZCByZWxvY2F0ZWQgdG8gdGhlIE9mZmljZSBvZiBTcGVjaWVzLCBNaW5lcmFscywgYW5kIEVuZXJneSBDb29yZGluYXRpb24uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTgxOCwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgU2NpZW5jZSwgVGVjaG5vbG9neSwgRW5naW5lZXJpbmcsIGFuZCBNYXRoIEFjdGlvbiBDZW50ZXIgKFNURU0tQUMpIHdhcyBjcmVhdGVkIHVuZGVyIHRoZSBPZmZpY2Ugb2YgdGhlXG5Hb3Zlcm5vciB0aHJvdWdoIEgzMDIgb2YgMjAxNSB0byBwcm9tb3RlIHRoZSBleHBhbnNpb24gb2Ygc3R1ZGVudCBlbmdhZ2VtZW50IGluIFNURU0gYWN0aXZpdGllcy4gU1RFTSBwdXJzdWVzIHRoaXMgbWlzc2lvbiB0aHJvdWdoIDEpXG5jb29yZGluYXRpb24gb2YgYWxsIHN0YXRlIGRlcGFydG1lbnRzIGFuZCBkaXZpc2lvbnMgb24gU1RFTS1yZWxhdGVkIGFjdGl2aXRpZXM7IDIpIHByb21vdGlvbiBvZiBTVEVNIHRocm91Z2ggYmVzdCBwcmFjdGljZXMgaW4gZWR1Y2F0aW9uOyAzKVxuc3VwcG9ydCBvZiBoaWdoLXF1YWxpdHkgcHJvZmVzc2lvbmFsIGRldmVsb3BtZW50IGZvciBlZHVjYXRvcnM7IDQpIGZhY2lsaXRhdGlvbiBvZiBTVEVNLXJlbGF0ZWQgY29tcGV0aXRpb25zLCBzY2llbmNlIGZhaXJzLCBjYW1wcywgYW5kIHN0dWRlbnRcbnByb2dyYW1zOyBhbmQgNSkgZW5nYWdlbWVudCBvZiBwcml2YXRlIGluZHVzdHJ5IGluIHRoZSBkZXZlbG9wbWVudCBhbmQgbWFpIn0sIHsic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIExlZ2lzbGF0dXJlIHBhc3NlZCBINDcwIG9mIDIwMTQgYW5kIGVzdGFibGlzaGVkIGEgZml2ZS1tZW1iZXIgV29sZiBEZXByZWRhdGlvbiBDb250cm9sIEJvYXJkIGluIHRoZVxuT2ZmaWNlIG9mIHRoZSBHb3Zlcm5vciBhbmQgY3JlYXRlZCBhIHNldCBvZiBuZXcgY29udGludW91c2x5IGFwcHJvcHJpYXRlZCBmdW5kcyBhbmQgc3ViYWNjb3VudHMgdG8gYmUgYWRtaW5pc3RlcmVkIGJ5IHRoZSBEZXBhcnRtZW50IG9mXG5BZ3JpY3VsdHVyZS4gSDQ3MCBlc3RhYmxpc2hlZCB0aGF0IGZlZXMgZnJvbSBzcG9ydHNtZW4gYW5kIHRoZSBsaXZlc3RvY2sgaW5kdXN0cnkgYmUgYWxsb2NhdGVkIGludG8gdGhlIHN1YmFjY291bnRzIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXRcbnRoZSBHZW5lcmFsIEZ1bmQgd291bGQgYWxzbyBjb250cmlidXRlLiBUaGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIFdvbGYgRGVwcmVkYXRpb24gQ29udHJvbCBCb2FyZCBpcyB0byBhbGxvY2F0ZSB0aGUgbW9uZXlzIGZvciBjb250cm9sIGFjdGlvbnNcbmFwcHJvdmVkIGJ5IHRoZSBJZGFobyBGaXNoIGFuZCBHYW1lIENvbW1pc3Npb24uIFRoZSBib2FyZCBoYXMgYSBjb29wZXJhdGl2ZSJ9LCB7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSByZXF1aXJlbWVudHMsIGdvYWxzLCBhbmQgb2JqZWN0aXZlcyBvZiB0aGUgV29ya2ZvcmNlIERldmVsb3BtZW50IENvdW5jaWwgaW5jbHVkZTogMSkgaW5jcmVhc2UgcHVibGljXG5hd2FyZW5lc3Mgb2YgYW5kIGFjY2VzcyB0byBjYXJlZXIgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyBvcHBvcnR1bml0aWVzOyAyKSBpbXByb3ZlIHRoZSBlZmZlY3RpdmVuZXNzLCBxdWFsaXR5LCBhbmQgY29vcmRpbmF0aW9uIG9mIHByb2dyYW1zXG5hbmQgc2VydmljZXMgZGVzaWduZWQgdG8gbWFpbnRhaW4gYSBoaWdobHkgc2tpbGxlZCB3b3JrZm9yY2U7IDMpIHByb3ZpZGUgZm9yIHRoZSBtb3N0IGVmZmljaWVudCB1c2Ugb2YgZmVkZXJhbCwgc3RhdGUsIGFuZCBsb2NhbCB3b3JrZm9yY2VcbmRldmVsb3BtZW50IHJlc291cmNlczsgNCkgZnVsZmlsbCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBTdGF0ZSBXb3JrZm9yY2UgSW52ZXN0bWVudCBCb2FyZCBhcyBzZXQgZm9ydGggaW4gdGhlIFdvcmtmb3JjZSBJbm5vdmF0aW9uIGFuZFxuT3Bwb3J0dW5pdHkgQWN0IChXSU9BKTsgNSkgZGV2ZWxvcCBhbmQgb3ZlcnNlZSBwcm9jZWR1cmVzLCBjcml0ZXJpYSwgYW5kIHBlcmZvcm0ifV0sICJjaGlsZHJlbiI6IFt7Im5hbWUiOiAiTWlsaXRhcnkgRGl2aXNpb24iLCAiZ2YiOiA5NjcwOTAwLCAiZGVkIjogMTU5NzM2MDAsICJmZWQiOiA5MTIwMjgwMCwgInRvdGFsIjogMTE2ODQ3MzAwLCAiZmVkX3NoYXJlIjogMC43ODA1LCAiZGVkX3NoYXJlIjogMC4xMzY3LCAiYmlsbHMiOiBbIkg4NjciLCAiSDkwOCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIk1pbGl0YXJ5IE1hbmFnZW1lbnQiLCAidGV4dCI6ICJUaGUgTWlsaXRhcnkgRGl2aXNpb25cdTIwMTlzIE1pbGl0YXJ5IE1hbmFnZW1lbnQgUHJvZ3JhbSBwcm92aWRlcyBvdmVyYWxsIG1hbmFnZW1lbnQgdGhhdCBlbnN1cmVzIG1pc3Npb25cbmNhcGFiaWxpdHkgYW5kIG1lZXRzIHRoZSBnb2FscyBvZiB0aGUgc3RhdGUgYW5kIGZlZGVyYWwgZ292ZXJubWVudHMsIGFzIGVzdGFibGlzaGVkIGJ5IGxhdyJ9LCB7InN1Yl9wcm9ncmFtIjogIkZlZGVyYWwvU3RhdGUgQWdyZWVtZW50cyIsICJ0ZXh0IjogIlRoZSBwdXJwb3NlIG9mIHRoZSBNaWxpdGFyeSBEaXZpc2lvblx1MjAxOXMgRmVkZXJhbC9TdGF0ZSBBZ3JlZW1lbnRzIFByb2dyYW0gaXMgdG8gb3BlcmF0ZSBhbmQgbWFpbnRhaW4gdGhlIEdvd2VuXG5GaWVsZCBjb21wbGV4ZXMsIGRlc2VydCB0cmFpbmluZyByYW5nZSBmYWNpbGl0aWVzLCBhbmQgbmluZSBtYWludGVuYW5jZSBzaG9wcyBsb2NhdGVkIHRocm91Z2hvdXQgdGhlIHN0YXRlLiBUaGlzIHByb2dyYW0gaXMgYSBqb2ludCB2ZW50dXJlXG5iZXR3ZWVuIHRoZSBzdGF0ZSBhbmQgdGhlIGZlZGVyYWwgTmF0aW9uYWwgR3VhcmQgQnVyZWF1LiBTZXJ2aWNlIGNvbnRyYWN0cyBhcmUgbmVnb3RpYXRlZCBhbm51YWxseSBpbiB3aGljaCB0aGUgc3RhdGUgcHJvdmlkZXMgc3BlY2lmaWVkXG5zZXJ2aWNlcyB0byB0aGUgTmF0aW9uYWwgR3VhcmQgYW5kIGlzIHJlaW1idXJzZWQgYnkgdGhlIGZlZGVyYWwgZ292ZXJubWVudCBmb3IgNTAgdG8gMTAwIHBlcmNlbnQgb2YgdGhlIGNvc3QuIFRoZXIifSwgeyJzdWJfcHJvZ3JhbSI6ICJPZmZpY2Ugb2YgRW1lcmdlbmN5IE1hbmFnZW1lbnQiLCAidGV4dCI6ICJJbiBGWSAyMDE4LCB0aGUgSWRhaG8gT2ZmaWNlIG9mIEVtZXJnZW5jeSBNYW5hZ2VtZW50IChJT0VNKSByZXBsYWNlZCB0aGUgSWRhaG8gQnVyZWF1IG9mIEhvbWVsYW5kXG5TZWN1cml0eS4gQmVnaW5uaW5nIGluIEZZIDIwMDUsIHRoZSBCdXJlYXUgb2YgSG9tZWxhbmQgU2VjdXJpdHkgc3VwZXJzZWRlZCBhbmQgY29tYmluZWQgdGhlIGZ1bmN0aW9ucyBvZiB0aGUgQnVyZWF1IG9mIERpc2FzdGVyIFNlcnZpY2VzXG5hbmQgdGhlIEJ1cmVhdSBvZiBIYXphcmRvdXMgTWF0ZXJpYWxzLiBbQXV0aG9yaXR5OiBFeGVjLiBPcmRlciBOby4gMjAwMy0xMSwgU2VjdGlvbnMgMzktNzEwMSBhbmQgNDYtMTAwMSwgSWRhaG8gQ29kZSwgZXQgc2VxLl0ifSwgeyJzdWJfcHJvZ3JhbSI6ICJFbWVyZ2VuY3kgTWVkaWNhbCBTZXJ2aWNlcyIsICJ0ZXh0IjogIlByb3ZpZGVzIGEgc3RhdGV3aWRlIHN5c3RlbSB0byByZXNwb25kIHRvIGNyaXRpY2FsIGlsbG5lc3MgYW5kIGluanVyeSBzaXR1YXRpb25zLiBIMjA2ICgyMDI1KSBlc3RhYmxpc2hlZCB0aGVcbkVtZXJnZW5jeSBNZWRpY2FsIFNlcnZpY2VzIEFjdCB3aXRoaW4gVGl0bGUgNDYsIElkYWhvIENvZGUsIGFuZCB0cmFuc2ZlcnJlZCB0aGlzIHByb2dyYW0gZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBIZWFsdGggYW5kIFdlbGZhcmUgdG8gdGhlXG5NaWxpdGFyeSBEaXZpc2lvbiJ9XX0sIHsibmFtZSI6ICJXb3JrZm9yY2UgRGV2ZWxvcG1lbnQgQ291bmNpbCIsICJnZiI6IDMwODQyMDAsICJkZWQiOiA4MzU2NzIwMCwgImZlZCI6IDEwMTg0MDAsICJ0b3RhbCI6IDg3NjY5ODAwLCAiZmVkX3NoYXJlIjogMC4wMTE2LCAiZGVkX3NoYXJlIjogMC45NTMyLCAiYmlsbHMiOiBbIkg4NjciLCAiSDk0OSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDc2MSByZW1vdmVkIHJlZmVyZW5jZXMgdG8gdGhlIFNURU0gQWN0aW9uIENlbnRlciBpbiBJZGFobyBDb2RlIGFuZCBjaGFuZ2VkIHRoZSBjb2RpZmllZCBhdXRob3JpdHkgdG8gdGhlXG5Xb3JrZm9yY2UgRGV2ZWxvcG1lbnQgQ291bmNpbC4gVGhlIGZpc2NhbCBpbXBhY3Qgb2YgdGhpcyBsZWdpc2xhdGlvbiByZXN1bHRlZCBpbiBhIG5ldCBkZWNyZWFzZSBpbiBhcHByb3ByaWF0aW9uLiBUaHJvdWdoIEg5NDkgdGhlIHRvdGFsXG5hcHByb3ByaWF0aW9uIHRvIHRoZSBTVEVNIEFjdGlvbiBDZW50ZXIgb2YgJDUsOTkwLDUwMCB3YXMgcmVkdWNlZCBhbmQgdGhlIFdvcmtmb3JjZSBEZXZlbG9wbWVudCBDb3VuY2lsJ3MgYXBwcm9wcmlhdGlvbiB3YXMgaW5jcmVhc2VkXG5ieSAkMywwMDcsODAwLiBUaGlzIGltcCJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSByZXF1aXJlbWVudHMsIGdvYWxzLCBhbmQgb2JqZWN0aXZlcyBvZiB0aGUgV29ya2ZvcmNlIERldmVsb3BtZW50IENvdW5jaWwgaW5jbHVkZTogMSkgaW5jcmVhc2UgcHVibGljXG5hd2FyZW5lc3Mgb2YgYW5kIGFjY2VzcyB0byBjYXJlZXIgZWR1Y2F0aW9uIGFuZCB0cmFpbmluZyBvcHBvcnR1bml0aWVzOyAyKSBpbXByb3ZlIHRoZSBlZmZlY3RpdmVuZXNzLCBxdWFsaXR5LCBhbmQgY29vcmRpbmF0aW9uIG9mIHByb2dyYW1zXG5hbmQgc2VydmljZXMgZGVzaWduZWQgdG8gbWFpbnRhaW4gYSBoaWdobHkgc2tpbGxlZCB3b3JrZm9yY2U7IDMpIHByb3ZpZGUgZm9yIHRoZSBtb3N0IGVmZmljaWVudCB1c2Ugb2YgZmVkZXJhbCwgc3RhdGUsIGFuZCBsb2NhbCB3b3JrZm9yY2VcbmRldmVsb3BtZW50IHJlc291cmNlczsgNCkgZnVsZmlsbCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBTdGF0ZSBXb3JrZm9yY2UgSW52ZXN0bWVudCBCb2FyZCBhcyBzZXQgZm9ydGggaW4gdGhlIFdvcmtmIn1dfSwgeyJuYW1lIjogIk9mZmljZSBvZiBJbmZvcm1hdGlvbiBUZWNobm9sb2d5IFNlcnZpY2VzIiwgImdmIjogNjM3NDgwMCwgImRlZCI6IDQ0ODkyNzAwLCAiZmVkIjogNDU0NDAwLCAidG90YWwiOiA1MTcyMTkwMCwgImZlZF9zaGFyZSI6IDAuMDA4OCwgImRlZF9zaGFyZSI6IDAuODY4LCAiYmlsbHMiOiBbIkg4NjciLCAiSDg3MCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkdvdmVybm9yXHUyMDE5cyBFbWVyZ2VuY3kiLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIEluZm9ybWF0aW9uIFRlY2hub2xvZ3kgU2VydmljZXMgb3BlcmF0ZXMgdGhlIHN0YXRlIG5ldHdvcmsgYW5kIGNvb3JkaW5hdGVkIGludGVybmV0LCBjb25zb2xpZGF0ZWRcbm1lc3NhZ2luZywgdGVsZXBob25lLCBhbmQgZGF0YSBhbmQgdmlkZW8gdHJhbnNtaXNzaW9uIHNlcnZpY2VzLiBUaGUgb2ZmaWNlIGFsc28gY29vcmRpbmF0ZXMgdGhlIElkYWhvIFRlY2hub2xvZ3kgQXV0aG9yaXR5IChJVEEpLCB3aGljaFxucmV2aWV3cyBhbmQgZXZhbHVhdGVzIHRoZSBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IGFuZCB0ZWxlY29tbXVuaWNhdGlvbnMgc3lzdGVtcyBpbiB1c2UgYnkgc3RhdGUgYWdlbmNpZXMsIGFuZCBwcmVwYXJlcyBzdGF0ZXdpZGUgc2hvcnRcbmFuZCBsb25nLXJhbmdlIElUIGFuZCBUZWxlY29tbXVuaWNhdGlvbnMgUGxhbnMuIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aG9zZSBwbGFucywgdGhlIElUQSBlc3RhYmxpc2hlcyBzdGF0ZXdpZGUgSVQgYSJ9XX0sIHsibmFtZSI6ICJTcGVjaWVzLCBNaW5lcmFscywgYW5kIEVuZXJneSBDb29yZGluYXRpb24iLCAiZ2YiOiAxOTQzMTAwLCAiZGVkIjogMTE5NzYwMDAsICJmZWQiOiAzMzg4ODAwMCwgInRvdGFsIjogNDc4MDcxMDAsICJmZWRfc2hhcmUiOiAwLjcwODgsICJkZWRfc2hhcmUiOiAwLjI1MDUsICJiaWxscyI6IFsiUzE0MTYiXSwgIm5vdGVzIjogW3sidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg4OTggbW92ZWQgdGhlIFN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiBPZmZpY2UgZnJvbSB0aGUgSWRhaG8gU3RhdGUgSGlzdG9yaWNhbCBTb2NpZXR5IHRvIHRoZSBPZmZpY2Ugb2YgU3BlY2llcyxcbk1pbmVyYWxzLCBhbmQgRW5lcmd5IENvb3JkaW5hdGlvbiJ9LCB7InR5cGUiOiAiT1RIRVIgTEVHSVNMQVRJT04iLCAidGV4dCI6ICJINzM3IG1lcmdlZCB0aGUgT2ZmaWNlIG9mIFNwZWNpZXMgQ29uc2VydmF0aW9uIHdpdGggdGhlIE9mZmljZSBvZiBFbmVyZ3kgYW5kIE1pbmVyYWwgUmVzb3VyY2VzLiBUaGUgbmV3bHlcbmZvcm1lZCBvZmZpY2UgaXMgY2FsbGVkIHRoZSBPZmZpY2Ugb2YgU3BlY2llcywgTWluZXJhbHMsIGFuZCBFbmVyZ3kgQ29vcmRpbmF0aW9uIn1dLCAiZGVzY3JpcHRpb25zIjogW119LCB7Im5hbWUiOiAiRGl2aXNpb24gb2YgRmluYW5jaWFsIE1hbmFnZW1lbnQiLCAiZ2YiOiAyMjU1NDAwLCAiZGVkIjogOTk4ODAwLCAiZmVkIjogNDE1ODk3MDAsICJ0b3RhbCI6IDQ0ODQzOTAwLCAiZmVkX3NoYXJlIjogMC45Mjc0LCAiZGVkX3NoYXJlIjogMC4wMjIzLCAiYmlsbHMiOiBbIkg4NjciXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJFbnRlcnByaXNlIEJ1c2luZXNzIE9wZXJhdGlvbnMiLCAidGV4dCI6ICJUaGUgRGl2aXNpb24gb2YgRmluYW5jaWFsIE1hbmFnZW1lbnQgd29ya3Mgd2l0aCB0aGUgR292ZXJub3IgdG8gcHJvdmlkZSBkaXJlY3Rpb24gYW5kIGxlYWRlcnNoaXAgaW4gbWFuYWdpbmdcbnRoZSBmaW5hbmNpYWwgYW5kIHBvbGljeSBpc3N1ZXMgb2Ygc3RhdGUgZ292ZXJubWVudDsgcHJvZHVjZXMgYSBiYWxhbmNlZCBidWRnZXQgcmVjb21tZW5kYXRpb24gdG8gdGhlIExlZ2lzbGF0dXJlIHRoYXQgYWRkcmVzc2VzIHRoZSBuZWVkc1xub2YgdGhlIHN0YXRlOyBwcm9qZWN0cyBhbmQgbW9uaXRvcnMgc3RhdGUgcmV2ZW51ZXM7IGFuZCBjb29yZGluYXRlcyBzdGF0ZSBmaW5hbmNpYWwgcHJhY3RpY2VzLiBUaGUgZGl2aXNpb24gY29uc2lzdHMgb2YgZm91ciBtYWluIGFkbWluaXN0cmF0aXZlXG51bml0czogQnVkZ2V0LCBFY29ub21pYyBBbmFseXNpcywgRmlzY2FsIGFuZCBPcGVyYXRpb25zLCBhbmQgUmVndWxhdG9yeSBhbmQgTGVnaXNsYXRpdmUgQWZmYWlycywgd2hpY2ggaW5jbCJ9XX0sIHsibmFtZSI6ICJTdGF0ZSBMaXF1b3IgRGl2aXNpb24iLCAiZ2YiOiAwLCAiZGVkIjogMzMyNzA5MDAsICJmZWQiOiAwLCAidG90YWwiOiAzMzI3MDkwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDEuMCwgImJpbGxzIjogWyJIODY3IiwgIkg5MjQiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJHb3Zlcm5vclx1MjAxOXMgRW1lcmdlbmN5IiwgInRleHQiOiAiVGhlIFN0YXRlIExpcXVvciBEaXZpc2lvbiByZWd1bGF0ZXMgYW5kIGNvbnRyb2xzIHRoZSB0cmFmZmljIGFuZCBzYWxlIG9mIGFsY29ob2xpYyBsaXF1b3IuIFtTdGF0dXRvcnkgYXV0aG9yaXR5OlxuQ2hhcHRlciAyLCBUaXRsZSAyMywgSWRhaG8gQ29kZS5dIn1dfSwgeyJuYW1lIjogIkRpdmlzaW9uIG9mIEh1bWFuIFJlc291cmNlcyIsICJnZiI6IDAsICJkZWQiOiAxOTYyMDkwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDE5NjIwOTAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMS4wLCAiYmlsbHMiOiBbIkg4NjciXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJHb3Zlcm5vclx1MjAxOXMgRW1lcmdlbmN5IiwgInRleHQiOiAiVGhlIERpdmlzaW9uIG9mIEh1bWFuIFJlc291cmNlcyAoREhSKSBpcyBvcmdhbml6ZWQgd2l0aGluIHRoZSBPZmZpY2Ugb2YgdGhlIEdvdmVybm9yLiBUaGUgZGl2aXNpb24gaXNcbnJlc3BvbnNpYmxlIGZvciBlbXBsb3llZSByZWNydWl0bWVudCwgam9iIGNsYXNzaWZpY2F0aW9uLCBlbXBsb3llZSBhc3Nlc3NtZW50IGFuZCBzZWxlY3Rpb24gcHJvY2Vzc2VzLCBjb21wZW5zYXRpb24gaXNzdWVzLCB3b3JrZm9yY2VcbnBsYW5uaW5nIGFuZCBkZXZlbG9wbWVudCwgZW1wbG95ZWUgcmVsYXRpb25zLCBhbmQgcHJvdmlkaW5nIGh1bWFuIHJlc291cmNlIHBvbGljeSB0byBjb21wbHkgd2l0aCBhcHBsaWNhYmxlIGxhd3MgYW5kIHJlZ3VsYXRpb25zLiBNb3N0IG9mXG50aGUgZm9ybWVyIHBvd2VycyBhbmQgZHV0aWVzIG9mIHRoZSBQZXJzb25uZWwgQ29tbWlzc2lvbiB3ZXJlIHN0YXR1dG9yaWx5IHRyYW5zZmVycmVkIHRvIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoZSBEaXZpc2lvbiBvZiAifV19LCB7Im5hbWUiOiAiQ29tbWlzc2lvbiBvbiBBZ2luZyIsICJnZiI6IDYzMTk3MDAsICJkZWQiOiAwLCAiZmVkIjogMTA1MjQ3MDAsICJ0b3RhbCI6IDE2ODQ0NDAwLCAiZmVkX3NoYXJlIjogMC42MjQ4LCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIkg4NjciLCAiSDkzMyJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkVudGVycHJpc2UgQnVzaW5lc3MgT3BlcmF0aW9ucyIsICJ0ZXh0IjogIlRoZSBDb21taXNzaW9uIG9uIEFnaW5nIGFzc2lzdHMgb2xkZXIgSWRhaG9hbnMgdG8gY29udGludWUgbGl2aW5nIGluZGVwZW5kZW50bHkgaW4gdGhlaXIgb3duIGhvbWVzIGJ5XG5wcm92aWRpbmcgdGhlbSBhbmQgdGhlaXIgY2FyZWdpdmVycyB3aXRoIGEgdmFyaWV0eSBvZiBwcm9ncmFtcyBhbmQgc2VydmljZXMuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTUwMDEsIElkYWhvIENvZGVdIn1dfSwgeyJuYW1lIjogIlB1YmxpYyBFbXBsb3llZSBSZXRpcmVtZW50IFN5c3RlbSIsICJnZiI6IDAsICJkZWQiOiAxMzY3NTcwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDEzNjc1NzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMS4wLCAiYmlsbHMiOiBbIkg4NjciLCAiSDg2OCJdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlJldGlyZW1lbnQgQWRtaW5pc3RyYXRpb24iLCAidGV4dCI6ICJUaGUgUHVibGljIEVtcGxveWVlIFJldGlyZW1lbnQgU3lzdGVtIG9mIElkYWhvIChQRVJTSSkgYWRtaW5pc3RlcnMgYSBkZWZpbmVkIGJlbmVmaXQgcmV0aXJlbWVudCBwbGFuIHRoYXQgaXNcbm1hbmRhdG9yeSBmb3IgYWxsIGVsaWdpYmxlIHN0YXRlIGVtcGxveWVlcyBhbmQgc2Nob29sIGRpc3RyaWN0IGVtcGxveWVlcywgYXMgd2VsbCBhcyBmb3IgZW1wbG95ZWVzIG9mIHBvbGl0aWNhbCBzdWJkaXZpc2lvbnMgd2hpY2ggaGF2ZSBlbGVjdGVkXG50byBwYXJ0aWNpcGF0ZS4gUEVSU0kgYWxzbyBhZG1pbmlzdGVycyBhIGRlZmluZWQgY29udHJpYnV0aW9uIHBsYW4gdGhhdCBwcm92aWRlcyBhbiBvcHRpb25hbCA0MDEoaykgcGxhbiB0byBhbGwgbWVtYmVycyB3aG8gYXJlIGVsaWdpYmxlLlxuU3RhdHV0b3J5IGF1dGhvcml0eTogQ2hhcHRlciAxMywgVGl0bGUgNTksIElkYWhvIENvZGUifSwgeyJzdWJfcHJvZ3JhbSI6ICJQb3J0Zm9saW8gSW52ZXN0bWVudCIsICJ0ZXh0IjogIlRoZSBQb3J0Zm9saW8gSW52ZXN0bWVudCBQcm9ncmFtIG1hbmFnZXMgUEVSU0kgYXNzZXRzIHRvIHJlYWxpemUgc2VjdXJlIGxvbmctdGVybSByZXR1cm5zIG9uIGludmVzdG1lbnRzXG53aGlsZSBtaW5pbWl6aW5nIHJpc2ssIHdpdGggYSBnb2FsIG9mIHByb3ZpZGluZyB0aGUgZnVuZHMgbmVjZXNzYXJ5IHRvIG1lZXQgcmV0aXJlbWVudCBwbGFuIG9ibGlnYXRpb25zLiBTaW5jZSBGWSAxOTk2LCB0aGUgYWRtaW5pc3RyYXRpdmVcbmNvc3RzIG9mIHRoZSBQb3J0Zm9saW8gSW52ZXN0bWVudCBQcm9ncmFtIGhhdmUgYmVlbiBhcHByb3ByaWF0ZWQgYW5udWFsbHksIHdoaWxlIHRoZSByZW1haW5pbmcgaW52ZXN0bWVudCBjb3N0cyBvcGVyYXRlIHVuZGVyIGEgY29udGludW91c1xuYXBwcm9wcmlhdGlvbiBwdXJzdWFudCB0byBTZWN0aW9uIDU5LTEzMTEsIElkYWhvIENvZGUifV19LCB7Im5hbWUiOiAiT2ZmaWNlIG9mIERydWcgUG9saWN5IiwgImdmIjogMzgyNzAwLCAiZGVkIjogNTAyNDUwMCwgImZlZCI6IDQ1Mzc5MDAsICJ0b3RhbCI6IDk5NDUxMDAsICJmZWRfc2hhcmUiOiAwLjQ1NjMsICJkZWRfc2hhcmUiOiAwLjUwNTIsICJiaWxscyI6IFsiSDg2NyIsICJIOTQyIl0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJTZWN0aW9uIDkgb2YgSDk0MiByZXF1aXJlcyBPRFAgdG8gdXNlIHRoZSBzdGF0ZSBwcm9jdXJlbWVudCBwcm9jZXNzIHRvIGlkZW50aWZ5IGFcbnN1aXRhYmxlIHZlbmRvciB0byBjb25kdWN0IHRoZSBzdGF0ZXdpZGUgZHJ1ZyBhd2FyZW5lc3MgY2FtcGFpZ24uIFRoZSBKb2ludCBNaWxsZW5uaXVtIEZ1bmQgQ29tbWl0dGVlIHNoYWxsIGJlIHByb3ZpZGVkIGFuIG9wcG9ydHVuaXR5XG50byByZXZpZXcgdGhlIHByb3Bvc2FscyBhbmQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHNlbGVjdGlvbiBwcm9jZXNzLiBUaGlzIHNlY3Rpb24gYWxzbyByZXF1aXJlcyBzZW1pLWFubnVhbCByZXBvcnRpbmcgb24gdGhlIHVzZSBvZiBmdW5kcywgYXNcbndlbGwgYXMgYSBmdWxsIHJlcG9ydCBvZiB0aGUgc3RhdGV3aWRlIG1lIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRW50ZXJwcmlzZSBCdXNpbmVzcyBPcGVyYXRpb25zIiwgInRleHQiOiAiVGhlIE9mZmljZSBvZiBEcnVnIFBvbGljeSAoT0RQKSB3YXMgZXN0YWJsaXNoZWQgaW4gMjAwNyB0byBvdmVyc2VlIGFuZCBleGVjdXRlIHRoZSBjb29yZGluYXRpb24gb2YgYWxsIGRydWcgYW5kXG5zdWJzdGFuY2UgYWJ1c2UgcHJvZ3JhbXMgd2l0aGluIHRoZSBzdGF0ZS4gW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctODIxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsibmFtZSI6ICJDb21taXNzaW9uIGZvciB0aGUgQmxpbmQgYW5kIFZpc3VhbGx5IEltcGFpcmVkIiwgImdmIjogMTczNjkwMCwgImRlZCI6IDQ3ODYwMCwgImZlZCI6IDQxODUwMDAsICJ0b3RhbCI6IDY0MDA1MDAsICJmZWRfc2hhcmUiOiAwLjY1MzksICJkZWRfc2hhcmUiOiAwLjA3NDgsICJiaWxscyI6IFsiSDg2NyIsICJIODY5Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQ09ORElUSU9OUywgTElNSVRBVElPTlMsIEFORCBSRVNUUklDVElPTlMiLCAidGV4dCI6ICJIODY5IGluY2x1ZGVkIG9uZSBzZWN0aW9uIG9mIGNvbmRpdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgcmVzdHJpY3Rpb25zLiBTZWN0aW9uIDJcbmRpcmVjdGVkIHRoZSBjb21taXNzaW9uIHRvIHByaW9yaXRpemUgc2lnaHQgcmVzdG9yYXRpb24gcHJvY2VkdXJlcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkVudGVycHJpc2UgQnVzaW5lc3MgT3BlcmF0aW9ucyIsICJ0ZXh0IjogIlRoZSBJZGFobyBDb21taXNzaW9uIGZvciB0aGUgQmxpbmQgYW5kIFZpc3VhbGx5IEltcGFpcmVkIHByb21vdGVzIGNob2ljZXMgYW5kIGVtcG93ZXJtZW50IGZvciBwZW9wbGUgd2hvXG5hcmUgbGVnYWxseSBibGluZCwgZnVuY3Rpb25hbGx5IGJsaW5kLCBvciBpbiBkYW5nZXIgb2YgbGVnYWwgYmxpbmRuZXNzOyBhbmQgYXNzaXN0cyB0aGVtIGluIGFjaGlldmluZyBlbXBsb3ltZW50LCBpbmRlcGVuZGVuY2UsIGFuZCBpbnRlZ3JhdGlvblxuaW50byB0aGUgd29ya3BsYWNlIGFuZCB0aGUgY29tbXVuaXR5LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2Ny01NDAxLCBJZGFobyBDb2RlLCBldCBzZXEuXSJ9XX0sIHsibmFtZSI6ICJFeGVjdXRpdmUgT2ZmaWNlIG9mIHRoZSBHb3Zlcm5vciIsICJnZiI6IDI2Njc1MDAsICJkZWQiOiAyMDAwMDAwLCAiZmVkIjogMCwgInRvdGFsIjogNDY2NzUwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuNDI4NSwgImJpbGxzIjogWyJIODY2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhlIEV4ZWN1dGl2ZSBPZmZpY2Ugb2YgdGhlIEdvdmVybm9yIHJlY2VpdmVkIHNwZWNpZmljIGxlZ2lzbGF0aXZlIGF1dGhvcml6YXRpb24gaW4gU2VjdGlvbiAzIG9mIEg4NjYgdGhhdFxucmVtb3ZlZCBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZSB0cmFuc2ZlciBvZiBtb25leXMgYW1vbmcgcGVyc29ubmVsIGNvc3RzLCBvcGVyYXRpbmcgZXhwZW5kaXR1cmVzLCBjYXBpdGFsIG91dGxheSwgYW5kIHRydXN0ZWUgYW5kXG5iZW5lZml0IHBheW1lbnRzLiBUaGUgYmlsbCBhbHNvIGV4ZW1wdGVkIHRoZSBvZmZpY2UgZnJvbSB0aGUgMTAlIHRyYW5zZmVyIGxpbWl0YXRpb24gYmV0d2VlbiBidWRnZXRlZCBwcm9ncmFtcyJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIkFkbWluaXN0cmF0aW9uIC0gR292ZXJub3IncyBPZmZpY2UiLCAidGV4dCI6ICJUaGlzIHByb2dyYW0gZXhlcmNpc2VzIHRoZSBwb3dlcnMgYW5kIGR1dGllcyBvZiB0aGUgQ2hpZWYgRXhlY3V0aXZlIG9mIHRoZSBzdGF0ZSBvZiBJZGFobyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlXG5JZGFobyBDb25zdGl0dXRpb24gYW5kIHRoZSBsYXdzIG9mIHRoZSBzdGF0ZSJ9LCB7InN1Yl9wcm9ncmFtIjogIkFjdGluZyBHb3Zlcm5vciBQYXkiLCAidGV4dCI6ICJBcnRpY2xlIDQsIFNlY3Rpb25zIDEyIGFuZCAxNCBvZiB0aGUgSWRhaG8gQ29uc3RpdHV0aW9uIGRlbGluZWF0ZSB0aGUgc3VjY2Vzc2lvbiBvZiBwb3dlci4gSW4gdGhlIGV2ZW50IHRoZVxuR292ZXJub3IgaXMgb3V0IG9mIHRoZSBzdGF0ZSwgdGhlIExpZXV0ZW5hbnQgR292ZXJub3IgYmVjb21lcyBhY3RpbmcgR292ZXJub3IuIEluIHRoZSBhYnNlbmNlIG9mIHRoZSBMaWV1dGVuYW50IEdvdmVybm9yLCB0aGUgUHJlc2lkZW50XG5Qcm8gVGVtcG9yZSBpcyB0byBhY3QgYXMgR292ZXJub3IuIEluIHRoZSBhYnNlbmNlIG9mIHRoZSBQcmVzaWRlbnQgUHJvIFRlbXBvcmUsIHRoZSBTcGVha2VyIG9mIHRoZSBIb3VzZSBpcyB0byBhY3QgYXMgR292ZXJub3IuIFB1cnN1YW50XG50byBTZWN0aW9uIDY3LTgwOSgyKSwgSWRhaG8gQ29kZSwgdGhlIG9mZmljaWFsIGFjdGluZyBhcyBHb3Zlcm5vciBpcyBlbnRpdGxlZCB0byBhZGRpdGlvbmFsIGNvbXBlbnNhdGlvbiBjYWxjdWxhdGVkIGFzICJ9LCB7InN1Yl9wcm9ncmFtIjogIkV4cGVuc2UgQWxsb3dhbmNlIiwgInRleHQiOiAiU2VjdGlvbiA2Ny04MDgoZCksIElkYWhvIENvZGUsIHByb3ZpZGVzIHRoYXQgY2VydGFpbiBtb25leXMgbWF5IGJlIHVzZWQgYXQgdGhlIEdvdmVybm9yJ3MgZGlzY3JldGlvbiB0byBhc3Npc3RcbmluIGRlZnJheWluZyBleHBlbnNlcyByZWxhdGluZyB0byBvciByZXN1bHRpbmcgZnJvbSB0aGUgZGlzY2hhcmdlIG9mIG9mZmljaWFsIGR1dGllcyJ9LCB7InN1Yl9wcm9ncmFtIjogIkdvdmVybm9yXHUyMDE5cyBFbWVyZ2VuY3kiLCAidGV4dCI6ICJGdW5kcyBhcmUgYXZhaWxhYmxlIHRvIGJlIGV4cGVuZGVkIGJ5IHRoZSBHb3Zlcm5vciB0byBwYXkgbmVjZXNzYXJ5IGNvc3RzIGFzc29jaWF0ZWQgd2l0aCBhbnkgZW1lcmdlbmN5LFxud2hpY2ggd2FzIG5vdCBmb3Jlc2VlbiBvciByZWFzb25hYmx5IGZvcmVzZWVhYmxlIGJ5IHRoZSBMZWdpc2xhdHVyZSwgYW5kIHdoaWNoIG1heSBhcmlzZSBpbiBjYXJyeWluZyBvbiB0aGUgZXNzZW50aWFsIGZ1bmN0aW9ucyBvZiBzdGF0ZVxuZ292ZXJubWVudCBhbmQgaW4gcHJvdGVjdGluZyB0aGUgaW50ZXJlc3RzIG9mIHRoZSBzdGF0ZSAoU2VjdGlvbiA1Ny0xNjAxLCBJZGFobyBDb2RlKSJ9XX0sIHsibmFtZSI6ICJDb21taXNzaW9uIG9uIHRoZSBBcnRzIiwgImdmIjogOTI2MTAwLCAiZGVkIjogMTA2MzAwLCAiZmVkIjogMTI0ODgwMCwgInRvdGFsIjogMjI4MTIwMCwgImZlZF9zaGFyZSI6IDAuNTQ3NCwgImRlZF9zaGFyZSI6IDAuMDQ2NiwgImJpbGxzIjogWyJIODY3Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiRW50ZXJwcmlzZSBCdXNpbmVzcyBPcGVyYXRpb25zIiwgInRleHQiOiAiVGhlIENvbW1pc3Npb24gb24gdGhlIEFydHMgYWR2b2NhdGVzIGFuZCBlbmNvdXJhZ2VzIHRoZSBkZXZlbG9wbWVudCBvZiBhcnRzIGluIElkYWhvLiBJdCBpcyBhIHNlcnZpY2UgYW5kXG5hZHZvY2FjeSBvcmdhbml6YXRpb24gdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiwgdGVjaG5pY2FsIGFzc2lzdGFuY2UsIGF3YXJkcywgYW5kIGdyYW50cyB0byBpbmRpdmlkdWFscyBhbmQgbG9jYWwgYXJ0cyBvcmdhbml6YXRpb25zLlxuW1N0YXR1dG9yeSBBdXRob3JpdHk6IFNlY3Rpb24gNjctNTYwMSwgSWRhaG8gQ29kZV0ifV19LCB7Im5hbWUiOiAiV29sZiBEZXByZWRhdGlvbiBDb250cm9sIEJvYXJkIiwgImdmIjogMzcyNDAwLCAiZGVkIjogMCwgImZlZCI6IDAsICJ0b3RhbCI6IDM3MjQwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogWyJIODY3Il0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIExlZ2lzbGF0dXJlIHBhc3NlZCBINDcwIG9mIDIwMTQgYW5kIGVzdGFibGlzaGVkIGEgZml2ZS1tZW1iZXIgV29sZiBEZXByZWRhdGlvbiBDb250cm9sIEJvYXJkIGluIHRoZVxuT2ZmaWNlIG9mIHRoZSBHb3Zlcm5vciBhbmQgY3JlYXRlZCBhIHNldCBvZiBuZXcgY29udGludW91c2x5IGFwcHJvcHJpYXRlZCBmdW5kcyBhbmQgc3ViYWNjb3VudHMgdG8gYmUgYWRtaW5pc3RlcmVkIGJ5IHRoZSBEZXBhcnRtZW50IG9mXG5BZ3JpY3VsdHVyZS4gSDQ3MCBlc3RhYmxpc2hlZCB0aGF0IGZlZXMgZnJvbSBzcG9ydHNtZW4gYW5kIHRoZSBsaXZlc3RvY2sgaW5kdXN0cnkgYmUgYWxsb2NhdGVkIGludG8gdGhlIHN1YmFjY291bnRzIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXRcbnRoZSBHZW5lcmFsIEZ1bmQgd291bGQgYWxzbyBjb250cmlidXRlLiBUaGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIFdvbGYgRGVwcmVkYXRpb24gQ29udHJvbCBCb2FyZCBpcyB0byBhbGxvY2F0ZSB0aGUgbW8ifV19LCB7Im5hbWUiOiAiU1RFTSBBY3Rpb24gQ2VudGVyIiwgImdmIjogMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiAwLCAiZmVkX3NoYXJlIjogMCwgImRlZF9zaGFyZSI6IDAsICJiaWxscyI6IFtdLCAibm90ZXMiOiBbeyJ0eXBlIjogIk9USEVSIExFR0lTTEFUSU9OIiwgInRleHQiOiAiSDc2MSByZW1vdmVkIHJlZmVyZW5jZXMgdG8gdGhlIFNURU0gQWN0aW9uIENlbnRlciBpbiBJZGFobyBDb2RlIGFuZCBjaGFuZ2VkIHRoZSBjb2RpZmllZCBhdXRob3JpdHkgdG8gdGhlXG5Xb3JrZm9yY2UgRGV2ZWxvcG1lbnQgQ291bmNpbC4gVGhlIGZpc2NhbCBpbXBhY3Qgb2YgdGhpcyBsZWdpc2xhdGlvbiByZXN1bHRlZCBpbiBhIG5ldCBkZWNyZWFzZSBpbiBhcHByb3ByaWF0aW9uLiBUaHJvdWdoIEg5NDksIHRoZSB0b3RhbFxuYXBwcm9wcmlhdGlvbiB0byB0aGUgU1RFTSBBY3Rpb24gQ2VudGVyIG9mICQ1LDk5MCw1MDAgd2FzIHJlZHVjZWQgYW5kIHRoZSBXb3JrZm9yY2UgRGV2ZWxvcG1lbnQgQ291bmNpbCdzIGFwcHJvcHJpYXRpb24gd2FzXG5pbmNyZWFzZWQgYnkgJDMsMDA3LDgwMC4gVGhpcyBpbSJ9XSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSBTY2llbmNlLCBUZWNobm9sb2d5LCBFbmdpbmVlcmluZywgYW5kIE1hdGggQWN0aW9uIENlbnRlciAoU1RFTS1BQykgd2FzIGNyZWF0ZWQgdW5kZXIgdGhlIE9mZmljZSBvZiB0aGVcbkdvdmVybm9yIHRocm91Z2ggSDMwMiBvZiAyMDE1IHRvIHByb21vdGUgdGhlIGV4cGFuc2lvbiBvZiBzdHVkZW50IGVuZ2FnZW1lbnQgaW4gU1RFTSBhY3Rpdml0aWVzLiBTVEVNIHB1cnN1ZXMgdGhpcyBtaXNzaW9uIHRocm91Z2ggMSlcbmNvb3JkaW5hdGlvbiBvZiBhbGwgc3RhdGUgZGVwYXJ0bWVudHMgYW5kIGRpdmlzaW9ucyBvbiBTVEVNLXJlbGF0ZWQgYWN0aXZpdGllczsgMikgcHJvbW90aW9uIG9mIFNURU0gdGhyb3VnaCBiZXN0IHByYWN0aWNlcyBpbiBlZHVjYXRpb247IDMpXG5zdXBwb3J0IG9mIGhpZ2gtcXVhbGl0eSBwcm9mZXNzaW9uYWwgZGV2ZWxvcG1lbnQgZm9yIGVkdWNhdG9yczsgNCkgZmFjaWxpdGF0aW9uIG9mIFNURU0tcmVsYXRlZCBjb21wZXRpdGlvbnMsIHNjaWVuY2UgIn1dfV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJMZWdpc2xhdGl2ZSBCcmFuY2giLCAiZnRwIjogODYuMCwgImdmIjogMTg1NDQzMDAsICJkZWQiOiAzMDU1ODAwLCAiZmVkIjogMCwgInRvdGFsIjogMjE2MDAxMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjE0MTUsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NDgiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbXSwgImNoaWxkcmVuIjogW3sibmFtZSI6ICJMZWdpc2xhdGl2ZSBTZXJ2aWNlcyBPZmZpY2UiLCAiZ2YiOiA4OTQzNjAwLCAiZGVkIjogMzA1NTgwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDExOTk5NDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4yNTQ3LCAiYmlsbHMiOiBbXSwgIm5vdGVzIjogW3sidHlwZSI6ICJCVURHRVQgTEFXIEVYRU1QVElPTlMiLCAidGV4dCI6ICJUaGlzIGFnZW5jeSByZWNlaXZlZCBzcGVjaWZpYyBsZWdpc2xhdGl2ZSBhdXRob3JpemF0aW9uIGluIEg4NDggdGhhdCByZW1vdmVzIGFsbCByZXN0cmljdGlvbnMgbGltaXRpbmcgdGhlXG50cmFuc2ZlciBvZiBtb25leXMgYW1vbmcgcGVyc29ubmVsIGNvc3RzLCBhbmQgb3BlcmF0aW5nIGV4cGVuZGl0dXJlcy4gVGhlIGJpbGwgYWxzbyBleGVtcHRlZCB0aGUgYWdlbmN5IGZyb20gdGhlIDEwJSB0cmFuc2ZlciBsaW1pdGF0aW9uXG5iZXR3ZWVuIHRoZSBMZWdpc2xhdGl2ZSBUZWNobm9sb2d5IGFuZCB0aGUgTGVnaXNsYXRpdmUgU2VydmljZXMgT2ZmaWNlIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIExlZ2lzbGF0aXZlIFNlcnZpY2VzIE9mZmljZSAoTFNPKSBwcm92aWRlcyBwcm9mZXNzaW9uYWwgc3RhZmYgc3VwcG9ydCB0byB0aGUgTGVnaXNsYXR1cmUgaW4gdGhlIGFyZWFzIG9mXG5yZXNlYXJjaCBhbmQgbGVnaXNsYXRpb247IGJ1ZGdldCBhbmQgcG9saWN5IGFuYWx5c2lzOyByZXZlbnVlIGFzc2Vzc21lbnQsIGxlZ2lzbGF0aXZlIGF1ZGl0czsgaW5mb3JtYXRpb24gdGVjaG5vbG9neTsgYW5kIGFkbWluaXN0cmF0aW9uIn1dfSwgeyJuYW1lIjogIkxlZ2lzbGF0dXJlIiwgImdmIjogODUxMTAwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiA4NTExMDAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYmlsbHMiOiBbIkg4NDgiXSwgIm5vdGVzIjogW10sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgSWRhaG8gTGVnaXNsYXR1cmUgaXMgY29tcG9zZWQgb2YgMzUgc2VuYXRvcnMgYW5kIDcwIHJlcHJlc2VudGF0aXZlcyBmcm9tIElkYWhvJ3MgMzUgbGVnaXNsYXRpdmUgZGlzdHJpY3RzLlxuVGhlIG1lbWJlcnNoaXAgaXMgZWxlY3RlZCBmb3IgdHdvLXllYXIgdGVybXMgYW5kIG1lZXRzIGFubnVhbGx5In1dfSwgeyJuYW1lIjogIk9mZmljZSBvZiBQZXJmb3JtYW5jZSBFdmFsdWF0aW9ucyIsICJnZiI6IDEwODk3MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMTA4OTcwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImJpbGxzIjogW10sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiVGhpcyBhZ2VuY3kgcmVjZWl2ZWQgc3BlY2lmaWMgbGVnaXNsYXRpdmUgYXV0aG9yaXphdGlvbiBpbiBIODQ4IHRoYXQgcmVtb3ZlcyBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZVxudHJhbnNmZXIgb2YgbW9uZXlzIGFtb25nIHBlcnNvbm5lbCBjb3N0cywgYW5kIG9wZXJhdGluZyBleHBlbmRpdHVyZXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgT2ZmaWNlIG9mIFBlcmZvcm1hbmNlIEV2YWx1YXRpb25zIHByb3ZpZGVzIHByb2Zlc3Npb25hbCBhbmQgaW5kZXBlbmRlbnQgYXNzZXNzbWVudCBhbmQgZXZhbHVhdGlvbiBvZlxuc3RhdGUgYWdlbmNpZXMsIHByb2dyYW1zLCBmdW5jdGlvbnMsIGFuZCBhY3Rpdml0aWVzIHVuZGVyIHRoZSBkaXJlY3Rpb24gb2YgdGhlIEpvaW50IExlZ2lzbGF0aXZlIE92ZXJzaWdodCBDb21taXR0ZWUifV19XX0sIHsiYXJlYSI6ICJHZW5lcmFsIEdvdmVybm1lbnQiLCAiYWdlbmN5IjogIkxpZXV0ZW5hbnQgR292ZXJub3IiLCAiZnRwIjogMy4wLCAiZ2YiOiAzMDI1MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogMzAyNTAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4wLCAiYW1lbmRzX2NvZGUiOiBmYWxzZSwgImJpbGxzIjogWyJIODY2Il0sICJub3RlcyI6IFt7InR5cGUiOiAiQlVER0VUIExBVyBFWEVNUFRJT05TIiwgInRleHQiOiAiU2VjdGlvbiA0IG9mIEg4NjYgcmVtb3ZlZCBhbGwgcmVzdHJpY3Rpb25zIGxpbWl0aW5nIHRoZSB0cmFuc2ZlciBvZiBtb25leXMgYW1vbmcgcGVyc29ubmVsIGNvc3RzLCBvcGVyYXRpbmdcbmV4cGVuZGl0dXJlcywgY2FwaXRhbCBvdXRsYXksIGFuZCB0cnVzdGVlIGFuZCBiZW5lZml0IHBheW1lbnRzIn1dLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU3RhdGUgSGlzdG9yaWMgUHJlc2VydmF0aW9uIiwgInRleHQiOiAiVGhlIExpZXV0ZW5hbnQgR292ZXJub3IgY2FycmllcyBvdXQgdmFyaW91cyBjb25zdGl0dXRpb25hbCBhbmQgc3RhdHV0b3J5IHJlc3BvbnNpYmlsaXRpZXMgYXMgYSBzdGF0ZXdpZGUgZWxlY3RlZFxub2ZmaWNpYWwgb2YgdGhlIEV4ZWN1dGl2ZSBCcmFuY2ggYW5kIGFzIHByZXNpZGluZyBvZmZpY2VyIG9mIHRoZSBJZGFobyBTZW5hdGUuIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBTZWN0aW9uIDY3LTgwOSwgSWRhaG8gQ29kZV0ifV19LCB7ImFyZWEiOiAiR2VuZXJhbCBHb3Zlcm5tZW50IiwgImFnZW5jeSI6ICJEZXBhcnRtZW50IG9mIFJldmVudWUgYW5kIFRheGF0aW9uIiwgImZ0cCI6IDQ0OS4wLCAiZ2YiOiA0NTc4OTUwMCwgImRlZCI6IDExMjY2NTAwLCAiZmVkIjogMCwgInRvdGFsIjogNTcwNTYwMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjE5NzUsICJhbWVuZHNfY29kZSI6IGZhbHNlLCAiYmlsbHMiOiBbIkg4NjciLCAiSDg3MSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiSDg3MSBpbmNsdWRlZCBvbmUgc2VjdGlvbiBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucy4gU2VjdGlvbiAyIG9mXG5IODcxIHJlcXVpcmVkIHRoYXQgJDU1MCwwMDAgb2YgdGhlIG1vbmV5cyBhcHByb3ByaWF0ZWQgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIGluIFNlY3Rpb24gMSBvZiB0aGUgYmlsbCBtYXkgb25seSBiZSB1c2VkIGZvciBGQVNUIFRheFxuIENvbGxlY3Rpb24gdmVuZG9yIHBheW1lbnRzIn0sIHsidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg1OTkgd2FzIHRoZSBhbm51YWwgdGF4IGNvbmZvcm1pdHkgYmlsbCB0byB1cGRhdGUgc3RhdHV0b3J5IHJlZmVyZW5jZXMgdG8gdGhlIEludGVybmFsIFJldmVudWUgQ29kZSAoSVJDKS4gVGhlIGJpbGxcbmNvbmZvcm1lZCB0aGUgSWRhaG8gaW5jb21lIHRheCBjb2RlIHRvIGNoYW5nZXMgbWFkZSB0byB0aGUgSVJDIHRoYXQgYWZmZWN0ZWQgdGhlIDIwMjUgdGF4IHllYXIsIGZ1bGx5IGNvbmZvcm1pbmcgdG8gdGhlIHRheCBjaGFuZ2VzIGluIHRoZVxuZmVkZXJhbCBPbmUgQmlnIEJlYXV0aWZ1bCBCaWxsIChIUjEpIGV4Y2VwdCBmb3IgYm9udXMgZGVwcmVjaWF0aW9uIGFuZCBSJkUgZXhwZW5kaXR1cmUgY2hhbmdlcy4gUGFydCBvZiB0aGUgc3VwcGxlbWVudGFsIGFwcHJvcHJpYXRpb25cbnByb3ZpZGVkIGkifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJTdGF0ZSBIaXN0b3JpYyBQcmVzZXJ2YXRpb24iLCAidGV4dCI6ICJUaGUgQm9hcmQgb2YgVGF4IEFwcGVhbHMgKElkYWhvIENvZGUsIFRpdGxlIDYzLCBDaGFwdGVyIDM4KSBwcm92aWRlcyBhIGZvcnVtIGZvciB0YXhwYXllcnMgdG8gYXBwZWFsIHRheFxuZGVjaXNpb25zIG1hZGUgZnJvbSB0aGUgSWRhaG8gU3RhdGUgVGF4IENvbW1pc3Npb24gb3IgdGhlIGNvdW50eSBib2FyZHMgb2YgZXF1YWxpemF0aW9uLiBUaGUgdGhyZWUtbWVtYmVyIGJvYXJkIHByb3ZpZGVzIGFuIG9wcG9ydHVuaXR5XG5mb3IgYXBwZWxsYW50cyBhbmQgcmVzcG9uZGVudHMgdG8gcHJlc2VudCB0ZXN0aW1vbnkgYW5kIGV2aWRlbmNlIGF0IHF1YXNpLWp1ZGljaWFsIGJvYXJkIGhlYXJpbmdzIGFyb3VuZCB0aGUgc3RhdGUifSwgeyJzdWJfcHJvZ3JhbSI6ICJHZW5lcmFsIFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIEdlbmVyYWwgU2VydmljZXMgcG9yZ2FtIHByb3ZpZGVzIHRoZSBjZW50cmFsaXplZCBtYW5hZ2VtZW50IG9mIHN0YXRlIHRheCByZXZlbnVlcyBhbmQgdGhlIGFnZW5jeVxuYnVkZ2V0LCByZXNlYXJjaCwgcG9saWN5LCBsZWdhbCwgcGVyc29ubmVsLCBxdWFsaXR5IGFzc3VyYW5jZSwgYW5kIHNvZnR3YXJlIGRldmVsb3BtZW50LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2My0xMDEsIElkYWhvIENvZGUsXG5ldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkF1ZGl0IERpdmlzaW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIGVuc3VyZXMgZmFpcm5lc3MgYW5kIGNvbnNpc3RlbmN5IG9mIElkYWhvJ3MgdGF4IGxhd3MgYnkgZXhhbWluaW5nIHRheCByZXR1cm5zIGZvciBwb3RlbnRpYWwgZXJyb3JzXG5hbmQgb2J0YWluaW5nIHRheCByZXR1cm5zIGluIGNhc2VzIHdoZXJlIGEgcmV0dXJuIGlzIHJlcXVpcmVkIHRvIGJlIGZpbGVkIGJ1dCBubyByZXR1cm4gd2FzIHN1Ym1pdHRlZC4gSXQgY29uZHVjdHMgYXVkaXRzIG9uIHZpcnR1YWxseSBhbGwgdGF4XG50eXBlcyBhZG1pbmlzdGVyZWQgYnkgdGhlIGFnZW5jeSBieSBhdXRob3JpdHkgb2YgSWRhaG8gQ29kZSBhbmQgdGhlIE11bHRpLVN0YXRlIFRheCBDb21wYWN0LCBhbmQgY29uZHVjdHMgZGlzY292ZXJ5IGFuZCBlbmZvcmNlbWVudFxuZWZmb3J0cyBkaXJlY3RlZCBhdCBub24tZmlsZXJzIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29tcGxpYW5jZSBEaXZpc2lvbiIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBwcm92aWRlcyB0YXhwYXllcnMgd2l0aCBlZHVjYXRpb24gYW5kIHByb2dyYW1zIHRvIGVuc3VyZSBlcXVpdGFibGUgYW5kIGZhaXIgY29tcGxpYW5jZSwgYXMgd2VsbFxuYXMgcGF5bWVudCBvZiB1bnBhaWQgdGF4IGRlYnRzLiBJdCBwcm92aWRlcyBkaXJlY3QgdGF4cGF5ZXIgc2VydmljZSB0byB0aGUgcHVibGljIGZyb20gdGhlIGFkbWluaXN0cmF0aXZlIG9mZmljZSBpbiBCb2lzZSBhbmQgZml2ZSBmaWVsZCBvZmZpY2VcbmxvY2F0aW9uczsgYW5kIGNvbGxlY3RzIGRlbGlucXVlbnQgdGF4ZXMgZm9yIHZpcnR1YWxseSBhbGwgdGF4IHR5cGVzIGFkbWluaXN0ZXJlZCBieSB0aGUgYWdlbmN5IGJ5IGF1dGhvcml0eSBvZiBJZGFobyBDb2RlIGFuZCB0aGUgTXVsdGktU3RhdGVcblRheCBDb21wYWN0LiBBZGRpdGlvbmFsbHksIGl0IHByb3ZpZGVzIHRheCBwcmVwYXJhdGlvbiBzdXBwb3J0IGFuZCBlZHVjYXRpb24sIGFuZCBzZXJ2ZXMgYXMgYSBsaW5rIGJldHdlZW4gdGhlIHB1YmxpYyBhbmQgdGhlIGFnZW5jeSJ9LCB7InN1Yl9wcm9ncmFtIjogIlJldmVudWUgT3BlcmF0aW9ucyIsICJ0ZXh0IjogIkFkbWluaXN0ZXJzIHRoZSB2b2x1bnRhcnkgdGF4IGNvbXBsaWFuY2UgcHJvZ3JhbS4gTWFqb3IgYWN0aXZpdGllcyBpbmNsdWRlOiByZWdpc3RlcmluZyBwZXJtaXQgaG9sZGVycyBmb3Igc2FsZXMsXG53aXRoaG9sZGluZywgaG90ZWwvbW90ZWwsIHNwZWNpYWwgZnVlbHMsIGJlZXIsIHdpbmUsIGNpZ2FyZXR0ZSBhbmQgdG9iYWNjbyB0YXhlczsgZW5zdXJpbmcgdGhhdCBhbGwgaW5kaXZpZHVhbHMgYW5kIGxpY2Vuc2VkIGJ1c2luZXNzZXMgYXJlXG5tYWlsZWQgcHJvcGVyIHRheCBmb3JtcyBmb3IgcmVwb3J0aW5nOyBlc3RhYmxpc2hpbmcgdGF4cGF5ZXIgbGlhYmlsaXR5LCBhcyB3ZWxsIGFzIHByb2Nlc3NpbmcgcmV2ZW51ZSBhbmQgcmVmdW5kIGRvY3VtZW50cyBzdWJtaXR0ZWQgYnlcbnRheHBheWVyczsgYW5kIG1haW50YWluaW5nIGEgcmVjb3JkcyBzeXN0ZW0gY2FwYWJsZSBvZiBwcm92aWRpbmcgaW5kaXZpZHVhbHMgd2l0aCB0YXggZG9jdW1lbnRzIn0sIHsic3ViX3Byb2dyYW0iOiAiUHJvcGVydHkgVGF4IiwgInRleHQiOiAiVGhlIFByb3BlcnR5IFRheCBQcm9ncmFtIHByb3ZpZGVzIG92ZXJzaWdodCBhbmQgdGVjaG5pY2FsIHN1cHBvcnQgaW4gdGhlIGFkbWluaXN0cmF0aW9uIG9mIHRoZSBwcm9wZXJ0eSB0YXhcbnN5c3RlbSwgd29ya2luZyB0byBlbnN1cmUgZmFpciwgZXF1aXRhYmxlLCBhbmQgYWNjdXJhdGUgcHJvcGVydHkgdGF4YXRpb24uIFRoZSBwcm9ncmFtIGlzIHJlcXVpcmVkIHRvOiBhbm51YWxseSBhcHByYWlzZSBhbGwgY2xhc3MgdGhyZWVcbm9wZXJhdGluZyBwcm9wZXJ0eSwgYXMgcmVxdWlyZWQgYnkgU2VjdGlvbiA2My0yMjE1LCBJZGFobyBDb2RlOyBleGFtaW5lIHByb3BlcnR5IHRheCBsZXZpZXMgb2YgYWxsIHRheGluZyBkaXN0cmljdHMgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aFxuSWRhaG8gQ29kZTsgZGV2ZWxvcCBmb3JtcywgcHJvY2VkdXJlcywgYW5kIGNvbXB1dGVyIHNvZnR3YXJlIG5lY2Vzc2FyeSBmb3IgY291bnR5IGFzc2Vzc29ycyB0byBhcHByYWlzZSBwcm9wZXJ0eTsgZGV2ZWxvcCBhbiBhc3Nlc3Nvclx1MjAxOXNcbm1hbnVhbCBpbiBvcmRlciB0byBmYWNpbGl0YXRlIHVuaWZvcm1pdHkgb2YgYXBwcmFpc2FsczsgYW5kIGFkbWluaXN0ZXIgcHJvcGVyIn1dLCAiY2hpbGRyZW4iOiBbeyJuYW1lIjogIlN0YXRlIFRheCBDb21taXNzaW9uIiwgImdmIjogNDUxMzIyMDAsICJkZWQiOiAxMTI2NjUwMCwgImZlZCI6IDAsICJ0b3RhbCI6IDU2Mzk4NzAwLCAiZmVkX3NoYXJlIjogMC4wLCAiZGVkX3NoYXJlIjogMC4xOTk4LCAiYmlsbHMiOiBbIkg4NjciLCAiSDg3MSJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiSDg3MSBpbmNsdWRlZCBvbmUgc2VjdGlvbiBvZiBjb25kaXRpb25zLCBsaW1pdGF0aW9ucywgYW5kIHJlc3RyaWN0aW9ucy4gU2VjdGlvbiAyIG9mXG5IODcxIHJlcXVpcmVkIHRoYXQgJDU1MCwwMDAgb2YgdGhlIG1vbmV5cyBhcHByb3ByaWF0ZWQgZnJvbSB0aGUgR2VuZXJhbCBGdW5kIGluIFNlY3Rpb24gMSBvZiB0aGUgYmlsbCBtYXkgb25seSBiZSB1c2VkIGZvciBGQVNUIFRheFxuIENvbGxlY3Rpb24gdmVuZG9yIHBheW1lbnRzIn0sIHsidHlwZSI6ICJPVEhFUiBMRUdJU0xBVElPTiIsICJ0ZXh0IjogIkg1OTkgd2FzIHRoZSBhbm51YWwgdGF4IGNvbmZvcm1pdHkgYmlsbCB0byB1cGRhdGUgc3RhdHV0b3J5IHJlZmVyZW5jZXMgdG8gdGhlIEludGVybmFsIFJldmVudWUgQ29kZSAoSVJDKS4gVGhlIGJpbGxcbmNvbmZvcm1lZCB0aGUgSWRhaG8gaW5jb21lIHRheCBjb2RlIHRvIGNoYW5nZXMgbWFkZSB0byB0aGUgSVJDIHRoYXQgYWZmZWN0ZWQgdGhlIDIwMjUgdGF4IHllYXIsIGZ1bGx5IGNvbmZvcm1pbmcgdG8gdGhlIHRheCBjaGFuZ2VzIGluIHRoZVxuZmVkZXJhbCBPbmUgQmlnIEJlYXV0aWZ1bCBCaWxsIChIUjEpIGV4Y2VwdCBmb3IgYm9udXMgZGVwcmVjaWF0aW9uIGFuZCBSJkUgZXhwZW5kaXR1cmUgY2hhbmdlcy4gUGFydCBvZiB0aGUgc3VwcGxlbWVudGFsIGFwcHJvcHJpYXRpb25cbnByb3ZpZGVkIGkifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJHZW5lcmFsIFNlcnZpY2VzIiwgInRleHQiOiAiVGhlIEdlbmVyYWwgU2VydmljZXMgcG9yZ2FtIHByb3ZpZGVzIHRoZSBjZW50cmFsaXplZCBtYW5hZ2VtZW50IG9mIHN0YXRlIHRheCByZXZlbnVlcyBhbmQgdGhlIGFnZW5jeVxuYnVkZ2V0LCByZXNlYXJjaCwgcG9saWN5LCBsZWdhbCwgcGVyc29ubmVsLCBxdWFsaXR5IGFzc3VyYW5jZSwgYW5kIHNvZnR3YXJlIGRldmVsb3BtZW50LiBbU3RhdHV0b3J5IEF1dGhvcml0eTogU2VjdGlvbiA2My0xMDEsIElkYWhvIENvZGUsXG5ldCBzZXEuXSJ9LCB7InN1Yl9wcm9ncmFtIjogIkF1ZGl0IERpdmlzaW9uIiwgInRleHQiOiAiVGhpcyBwcm9ncmFtIGVuc3VyZXMgZmFpcm5lc3MgYW5kIGNvbnNpc3RlbmN5IG9mIElkYWhvJ3MgdGF4IGxhd3MgYnkgZXhhbWluaW5nIHRheCByZXR1cm5zIGZvciBwb3RlbnRpYWwgZXJyb3JzXG5hbmQgb2J0YWluaW5nIHRheCByZXR1cm5zIGluIGNhc2VzIHdoZXJlIGEgcmV0dXJuIGlzIHJlcXVpcmVkIHRvIGJlIGZpbGVkIGJ1dCBubyByZXR1cm4gd2FzIHN1Ym1pdHRlZC4gSXQgY29uZHVjdHMgYXVkaXRzIG9uIHZpcnR1YWxseSBhbGwgdGF4XG50eXBlcyBhZG1pbmlzdGVyZWQgYnkgdGhlIGFnZW5jeSBieSBhdXRob3JpdHkgb2YgSWRhaG8gQ29kZSBhbmQgdGhlIE11bHRpLVN0YXRlIFRheCBDb21wYWN0LCBhbmQgY29uZHVjdHMgZGlzY292ZXJ5IGFuZCBlbmZvcmNlbWVudFxuZWZmb3J0cyBkaXJlY3RlZCBhdCBub24tZmlsZXJzIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29tcGxpYW5jZSBEaXZpc2lvbiIsICJ0ZXh0IjogIlRoaXMgcHJvZ3JhbSBwcm92aWRlcyB0YXhwYXllcnMgd2l0aCBlZHVjYXRpb24gYW5kIHByb2dyYW1zIHRvIGVuc3VyZSBlcXVpdGFibGUgYW5kIGZhaXIgY29tcGxpYW5jZSwgYXMgd2VsbFxuYXMgcGF5bWVudCBvZiB1bnBhaWQgdGF4IGRlYnRzLiBJdCBwcm92aWRlcyBkaXJlY3QgdGF4cGF5ZXIgc2VydmljZSB0byB0aGUgcHVibGljIGZyb20gdGhlIGFkbWluaXN0cmF0aXZlIG9mZmljZSBpbiBCb2lzZSBhbmQgZml2ZSBmaWVsZCBvZmZpY2VcbmxvY2F0aW9uczsgYW5kIGNvbGxlY3RzIGRlbGlucXVlbnQgdGF4ZXMgZm9yIHZpcnR1YWxseSBhbGwgdGF4IHR5cGVzIGFkbWluaXN0ZXJlZCBieSB0aGUgYWdlbmN5IGJ5IGF1dGhvcml0eSBvZiBJZGFobyBDb2RlIGFuZCB0aGUgTXVsdGktU3RhdGVcblRheCBDb21wYWN0LiBBZGRpdGlvbmFsbHksIGl0IHByb3ZpZGVzIHRheCBwcmVwYXJhdGlvbiBzdXBwb3J0IGFuZCBlZHVjYXRpb24sIGFuZCBzZXJ2ZXMgYXMgYSBsaW5rIGJldHdlIn0sIHsic3ViX3Byb2dyYW0iOiAiUmV2ZW51ZSBPcGVyYXRpb25zIiwgInRleHQiOiAiQWRtaW5pc3RlcnMgdGhlIHZvbHVudGFyeSB0YXggY29tcGxpYW5jZSBwcm9ncmFtLiBNYWpvciBhY3Rpdml0aWVzIGluY2x1ZGU6IHJlZ2lzdGVyaW5nIHBlcm1pdCBob2xkZXJzIGZvciBzYWxlcyxcbndpdGhob2xkaW5nLCBob3RlbC9tb3RlbCwgc3BlY2lhbCBmdWVscywgYmVlciwgd2luZSwgY2lnYXJldHRlIGFuZCB0b2JhY2NvIHRheGVzOyBlbnN1cmluZyB0aGF0IGFsbCBpbmRpdmlkdWFscyBhbmQgbGljZW5zZWQgYnVzaW5lc3NlcyBhcmVcbm1haWxlZCBwcm9wZXIgdGF4IGZvcm1zIGZvciByZXBvcnRpbmc7IGVzdGFibGlzaGluZyB0YXhwYXllciBsaWFiaWxpdHksIGFzIHdlbGwgYXMgcHJvY2Vzc2luZyByZXZlbnVlIGFuZCByZWZ1bmQgZG9jdW1lbnRzIHN1Ym1pdHRlZCBieVxudGF4cGF5ZXJzOyBhbmQgbWFpbnRhaW5pbmcgYSByZWNvcmRzIHN5c3RlbSBjYXBhYmxlIG9mIHByb3ZpZGluZyBpbmRpdmlkdWFscyB3aXRoIHRheCBkb2N1bWVudHMifSwgeyJzdWJfcHJvZ3JhbSI6ICJQcm9wZXJ0eSBUYXgiLCAidGV4dCI6ICJUaGUgUHJvcGVydHkgVGF4IFByb2dyYW0gcHJvdmlkZXMgb3ZlcnNpZ2h0IGFuZCB0ZWNobmljYWwgc3VwcG9ydCBpbiB0aGUgYWRtaW5pc3RyYXRpb24gb2YgdGhlIHByb3BlcnR5IHRheFxuc3lzdGVtLCB3b3JraW5nIHRvIGVuc3VyZSBmYWlyLCBlcXVpdGFibGUsIGFuZCBhY2N1cmF0ZSBwcm9wZXJ0eSB0YXhhdGlvbi4gVGhlIHByb2dyYW0gaXMgcmVxdWlyZWQgdG86IGFubnVhbGx5IGFwcHJhaXNlIGFsbCBjbGFzcyB0aHJlZVxub3BlcmF0aW5nIHByb3BlcnR5LCBhcyByZXF1aXJlZCBieSBTZWN0aW9uIDYzLTIyMTUsIElkYWhvIENvZGU7IGV4YW1pbmUgcHJvcGVydHkgdGF4IGxldmllcyBvZiBhbGwgdGF4aW5nIGRpc3RyaWN0cyB0byBlbnN1cmUgY29tcGxpYW5jZSB3aXRoXG5JZGFobyBDb2RlOyBkZXZlbG9wIGZvcm1zLCBwcm9jZWR1cmVzLCBhbmQgY29tcHV0ZXIgc29mdHdhcmUgbmVjZXNzYXJ5IGZvciBjb3VudHkgYXNzZXNzb3JzIHRvIGFwcHJhaXNlIHByb3BlcnR5OyJ9XX0sIHsibmFtZSI6ICJCb2FyZCBvZiBUYXggQXBwZWFscyIsICJnZiI6IDY1NzMwMCwgImRlZCI6IDAsICJmZWQiOiAwLCAidG90YWwiOiA2NTczMDAsICJmZWRfc2hhcmUiOiAwLjAsICJkZWRfc2hhcmUiOiAwLjAsICJiaWxscyI6IFtdLCAibm90ZXMiOiBbXSwgImRlc2NyaXB0aW9ucyI6IFt7InN1Yl9wcm9ncmFtIjogIlN0YXRlIEhpc3RvcmljIFByZXNlcnZhdGlvbiIsICJ0ZXh0IjogIlRoZSBCb2FyZCBvZiBUYXggQXBwZWFscyAoSWRhaG8gQ29kZSwgVGl0bGUgNjMsIENoYXB0ZXIgMzgpIHByb3ZpZGVzIGEgZm9ydW0gZm9yIHRheHBheWVycyB0byBhcHBlYWwgdGF4XG5kZWNpc2lvbnMgbWFkZSBmcm9tIHRoZSBJZGFobyBTdGF0ZSBUYXggQ29tbWlzc2lvbiBvciB0aGUgY291bnR5IGJvYXJkcyBvZiBlcXVhbGl6YXRpb24uIFRoZSB0aHJlZS1tZW1iZXIgYm9hcmQgcHJvdmlkZXMgYW4gb3Bwb3J0dW5pdHlcbmZvciBhcHBlbGxhbnRzIGFuZCByZXNwb25kZW50cyB0byBwcmVzZW50IHRlc3RpbW9ueSBhbmQgZXZpZGVuY2UgYXQgcXVhc2ktanVkaWNpYWwgYm9hcmQgaGVhcmluZ3MgYXJvdW5kIHRoZSBzdGF0ZSJ9XX1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiU2VjcmV0YXJ5IG9mIFN0YXRlIiwgImZ0cCI6IDM1LjUsICJnZiI6IDU4NzI0MDAsICJkZWQiOiAwLCAiZmVkIjogMCwgInRvdGFsIjogNTg3MjQwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuMCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg2NiIsICJIOTUyIl0sICJub3RlcyI6IFtdLCAiZGVzY3JpcHRpb25zIjogW3sic3ViX3Byb2dyYW0iOiAiU2VjcmV0YXJ5IG9mIFN0YXRlIiwgInRleHQiOiAiVGhlIEFkbWluaXN0cmF0aW9uIFByb2dyYW0gcGVyZm9ybXMgYWxsIHRoZSBjb25zdGl0dXRpb25hbCBhbmQgc3RhdHV0b3J5IGZ1bmN0aW9ucyBvZiB0aGUgT2ZmaWNlIG9mIHRoZSBTZWNyZXRhcnlcbm9mIFN0YXRlIGluY2x1ZGluZyByZWdpc3RlcmluZyB0aGUgb2ZmaWNpYWwgYWN0cyBvZiB0aGUgTGVnaXNsYXR1cmUgYW5kIHRoZSBHb3Zlcm5vcjsgYWRtaW5pc3RlcmluZyBhbmQgY2VydGlmeWluZyBlbGVjdGlvbnM7IG1haW50YWluaW5nIGEgcmVnaXN0cnlcbm9mIHRvcnQgY2xhaW1zLCBleHRyYWRpdGlvbnMsIGRlZWRzLCBvZmZpY2lhbCBvYXRocywgYW5kIGd1YmVybmF0b3JpYWwgYXBwb2ludG1lbnRzOyBhZG1pbmlzdGVyaW5nIHRoZSBTdW5zaGluZSBMYXc7IGFuZCBtYWludGFpbmluZyBhbmRcbm9wZXJhdGluZyB0aGUgQ2VudHJhbGl6ZWQgVW5pZm9ybSBDb21tZXJjaWFsIENvZGUgYXMgaXQgcmVsYXRlcyB0byBzdGF0ZSwgY29tbWVyY2lhbCwgYW5kIGZhcm0gcHJvZHVjdCBmaWxpbmdzLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogQ2hhcHRlclxuOSwgVGl0bGUgNjcsIElkYWhvIENvZGVdIn0sIHsic3ViX3Byb2dyYW0iOiAiQ29tbWlzc2lvbiBvbiBVbmlmb3JtIFN0YXRlIExhd3MiLCAidGV4dCI6ICJUaGUgQ29tbWlzc2lvbiBvbiBVbmlmb3JtIFN0YXRlIExhd3MgaXMgY29tcG9zZWQgb2YgZm91ciBtZW1iZXJzIHdobyBhcmUgYXBwb2ludGVkIGJ5IHRoZSBHb3Zlcm5vci4gVGhlXG5jb21taXNzaW9uIHN0dWRpZXMgcHJvcG9zZWQgdW5pZm9ybSBsYXdzIGFuZCBkcmFmdHMgbGVnaXNsYXRpb24gZm9yIGNvbnNpZGVyYXRpb24gYnkgdGhlIElkYWhvIExlZ2lzbGF0dXJlIHdoZXJlIHVuaWZvcm1pdHkgYW1vbmcgc3RhdGVcbmxhd3MgaXMgZGVzaXJhYmxlLiBbU3RhdHV0b3J5IEF1dGhvcml0eTogQ2hhcHRlciAxNywgVGl0bGUgNjcsIElkYWhvIENvZGVdIn1dfSwgeyJhcmVhIjogIkdlbmVyYWwgR292ZXJubWVudCIsICJhZ2VuY3kiOiAiU3RhdGUgVHJlYXN1cmVyIiwgImZ0cCI6IDMwLjAsICJnZiI6IDE2NDA4MDAsICJkZWQiOiAzODE2OTAwLCAiZmVkIjogMCwgInRvdGFsIjogNTQ1NzcwMCwgImZlZF9zaGFyZSI6IDAuMCwgImRlZF9zaGFyZSI6IDAuNjk5NCwgImFtZW5kc19jb2RlIjogZmFsc2UsICJiaWxscyI6IFsiSDg2NiJdLCAibm90ZXMiOiBbeyJ0eXBlIjogIkNPTkRJVElPTlMsIExJTUlUQVRJT05TLCBBTkQgUkVTVFJJQ1RJT05TIiwgInRleHQiOiAiU2VjdGlvbiAxMiBvZiBIODY2IGxpbWl0ZWQgdGhlIGFtb3VudCB0aGUgU3RhdGUgVHJlYXN1cmVyIGNhbiB1c2UgZnJvbSB0aGUgR2VuZXJhbFxuRnVuZCBhbmQgUHJvZmVzc2lvbmFsIFNlcnZpY2VzIEZ1bmQgZm9yIHBheW1lbnQgb2YgYmFuayBzZXJ2aWNlIGZlZXMifV0sICJkZXNjcmlwdGlvbnMiOiBbeyJzdWJfcHJvZ3JhbSI6ICJDb21taXNzaW9uIG9uIFVuaWZvcm0gU3RhdGUgTGF3cyIsICJ0ZXh0IjogIlRoZSBTdGF0ZSBUcmVhc3VyZXIgb3BlcmF0ZXMgYXMgdGhlIGNlbnRyYWwgY2hpZWYgZmlzY2FsIG9mZmljZXIgYW5kIGJhbmtlciBvZiBtb25leXMgY29sbGVjdGVkIGJ5IElkYWhvLiBUaGVcblRyZWFzdXJlcidzIE9mZmljZSBhY3RzIGFzIHRoZSBzdGF0ZSdzIGJhbmssIHJlY2VpdmluZyBhbmQgZGlzYnVyc2luZyBhbGwgbW9uZXlzLiBUaGUgb2ZmaWNlIGFsc28gaW52ZXN0cyBpZGxlIHN0YXRlIG1vbmV5cyBhbmQgZnVuZHMgZm9yIGxvY2FsXG5nb3Zlcm5tZW50cyBhbmQgc3RhdGUgYWdlbmNpZXMuIFRoZSBUcmVhc3VyZXIncyBPZmZpY2UgYWRtaW5pc3RlcnMgdGhlIElkYWhvIE1pbGxlbm5pdW0gRnVuZCwgdGhlIElkZWFsIENvbGxlZ2UgU2F2aW5ncyBQcm9ncmFtLCBhbmQgdGhlXG5JZGFobyBQcmltZSBMb2FuIFByb2dyYW0uIFtTdGF0dXRvcnkgQXV0aG9yaXR5OiBDaGFwdGVyIDEyLCBUaXRsZSA2NywgSWRhaG8gQ29kZV0ifV19XX0= KGZ1bmN0aW9uKCl7CiAgInVzZSBzdHJpY3QiOwoKICBmdW5jdGlvbiBpbml0KCl7CgogIGNvbnN0IEFSRUFfT1JERVIgPSBbCiAgICAiRWR1Y2F0aW9uIiwgIkhlYWx0aCBhbmQgSHVtYW4gU2VydmljZXMiLCAiUHVibGljIFNhZmV0eSIsCiAgICAiTmF0dXJhbCBSZXNvdXJjZXMiLCAiRWNvbm9taWMgRGV2ZWxvcG1lbnQiLCAiR2VuZXJhbCBHb3Zlcm5tZW50IgogIF07CgogIC8vIC0tLS0tLS0tLS0gZm9ybWF0dGluZyAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gZm10UGxhaW4obil7CiAgICBjb25zdCBtID0gbi8xZTY7CiAgICBjb25zdCBuZWcgPSBtIDwgMDsKICAgIGNvbnN0IGJvZHkgPSAiJCIgKyBNYXRoLmFicyhtKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7bWluaW11bUZyYWN0aW9uRGlnaXRzOjEsIG1heGltdW1GcmFjdGlvbkRpZ2l0czoxfSkgKyAiTSI7CiAgICByZXR1cm4gbmVnID8gIigiICsgYm9keSArICIpIiA6IGJvZHk7CiAgfQogIGZ1bmN0aW9uIGZtdFNpZ25lZChuKXsKICAgIGNvbnN0IG0gPSBuLzFlNjsKICAgIGlmIChNYXRoLmFicyhtKSA8IDAuMDUpIHJldHVybiAibm8gY2hhbmdlIjsKICAgIGNvbnN0IHNpZ24gPSBtID4gMCA/ICIrIiA6ICJcdTIyMTIiOwogICAgcmV0dXJuIHNpZ24gKyAiJCIgKyBNYXRoLmFicyhtKS50b0xvY2FsZVN0cmluZygiZW4tVVMiLCB7bWluaW11bUZyYWN0aW9uRGlnaXRzOjEsIG1heGltdW1GcmFjdGlvbkRpZ2l0czoxfSkgKyAiTSI7CiAgfQogIGZ1bmN0aW9uIHBjdChuKXsgcmV0dXJuIChuKjEwMCkudG9GaXhlZCgxKSArICIlIjsgfQoKICAvLyAtLS0tLS0tLS0tIHN0YXRlIC0tLS0tLS0tLS0KICBjb25zdCBzdGF0ZSA9IHsgcmV2ZW51ZTp7fSwgc3BlbmRpbmc6e30sIHNwZW5kaW5nRmVkOnt9LCBzcGVuZGluZ0RlZDp7fSwgbGlua2VkOnt9LCBjaGlsZFBjdDp7fSwgY2hpbGRGZWRQY3Q6e30sIGNoaWxkRGVkUGN0Ont9IH07CgogIERBVEEucmV2ZW51ZV9sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsKXsKICAgIGlmIChsLnR5cGUgPT09ICJ0b2dnbGUiKSBzdGF0ZS5yZXZlbnVlW2wuaWRdID0gZmFsc2U7CiAgICBlbHNlIGlmIChsLnVuaXQgPT09ICJyYXRlIikgc3RhdGUucmV2ZW51ZVtsLmlkXSA9IGwuYmFzZV9yYXRlOwogICAgZWxzZSBzdGF0ZS5yZXZlbnVlW2wuaWRdID0gbC5iYXNlX2Ftb3VudDsKICB9KTsKICBEQVRBLnNwZW5kaW5nX2xldmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwsIGkpewogICAgc3RhdGUuc3BlbmRpbmdbaV0gPSAwOyAgICAgIC8vIEdlbmVyYWwgRnVuZCBwZXJjZW50IGNoYW5nZSwgLTEwMC4uMTAwIChtYXN0ZXIsIHdoZW4gY2hpbGRyZW4gZXhpc3QpCiAgICBzdGF0ZS5zcGVuZGluZ0ZlZFtpXSA9IDA7ICAgLy8gRmVkZXJhbCBGdW5kcyBwZXJjZW50IGNoYW5nZSwgLTEwMC4uMTAwICh1c2VkIHdoZW4gdW5saW5rZWQgLyBtYXN0ZXIpCiAgICBzdGF0ZS5zcGVuZGluZ0RlZFtpXSA9IDA7ICAgLy8gRGVkaWNhdGVkIEZ1bmRzIHBlcmNlbnQgY2hhbmdlLCAtMTAwLi4xMDAgKG1hc3Rlciwgd2hlbiBjaGlsZHJlbiBleGlzdCkKICAgIHN0YXRlLmxpbmtlZFtpXSA9ICEhbC5mbWFwX3JlZ3VsYXI7IC8vIGRlZmF1bHQ6IGZvbGxvdyBHRiBhdXRvbWF0aWNhbGx5IHdoZW4gd2UgaGF2ZSBhIHJlYWwgbWF0Y2ggcmF0ZQogICAgaWYgKGwuY2hpbGRyZW4pewogICAgICBzdGF0ZS5jaGlsZFBjdFtpXSA9IGwuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAwOyB9KTsKICAgICAgc3RhdGUuY2hpbGRGZWRQY3RbaV0gPSBsLmNoaWxkcmVuLm1hcChmdW5jdGlvbigpeyByZXR1cm4gMDsgfSk7CiAgICAgIHN0YXRlLmNoaWxkRGVkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgfQogIH0pOwoKICAvLyAtLS0tLS0tLS0tIGNhbGN1bGF0aW9uIC0tLS0tLS0tLS0KICBmdW5jdGlvbiByZXZlbnVlRGVsdGEobGV2ZXIpewogICAgY29uc3QgdiA9IHN0YXRlLnJldmVudWVbbGV2ZXIuaWRdOwogICAgaWYgKGxldmVyLnR5cGUgPT09ICJ0b2dnbGUiKXsKICAgICAgaWYgKCF2KSByZXR1cm4gMDsKICAgICAgaWYgKGxldmVyLmlkID09PSAiZ3JvY2VyeV9leGVtcHRpb24iKXsKICAgICAgICAvLyBzY2FsZSB3aXRoIHRoZSBjdXJyZW50IHNhbGVzIHRheCByYXRlIHNsaWRlciAtLSBleGVtcHRpbmcgZ3JvY2VyaWVzIGZyb20gYQogICAgICAgIC8vIDAlIHNhbGVzIHRheCBpcyB3b3J0aCAkMDsgdGhlIGJhc2UgZXN0aW1hdGUgYXNzdW1lZCB0aGUgZW5hY3RlZCA2JSByYXRlCiAgICAgICAgY29uc3Qgc2FsZXNUYXhMZXZlciA9IERBVEEucmV2ZW51ZV9sZXZlcnMuZmluZChmdW5jdGlvbihzbCl7IHJldHVybiBzbC5pZCA9PT0gInNhbGVzX3RheCI7IH0pOwogICAgICAgIGNvbnN0IHJhdGlvID0gc2FsZXNUYXhMZXZlciA/IChzdGF0ZS5yZXZlbnVlWyJzYWxlc190YXgiXSAvIHNhbGVzVGF4TGV2ZXIuYmFzZV9yYXRlKSA6IDE7CiAgICAgICAgcmV0dXJuIGxldmVyLmNvc3RfaWZfZW5hYmxlZCAqIHJhdGlvOwogICAgICB9CiAgICAgIHJldHVybiBsZXZlci5jb3N0X2lmX2VuYWJsZWQ7CiAgICB9CiAgICBpZiAobGV2ZXIudW5pdCA9PT0gInJhdGUiKSByZXR1cm4gbGV2ZXIuYmFzZV9hbW91bnQgKiAodi9sZXZlci5iYXNlX3JhdGUgLSAxKTsKICAgIGlmIChsZXZlci51bml0ID09PSAiZG9sbGFyc19wZXJfcGVyc29uIikgcmV0dXJuIGxldmVyLnRvdGFsX3Byb2dyYW1fY29zdCAqICh2L2xldmVyLmJhc2VfYW1vdW50IC0gMSk7CiAgICByZXR1cm4gMDsKICB9CiAgZnVuY3Rpb24gY2hpbGREZWx0YUdGKGxldmVyLCBpLCBjaSl7CiAgICByZXR1cm4gbGV2ZXIuY2hpbGRyZW5bY2ldLmdmICogKHN0YXRlLmNoaWxkUGN0W2ldW2NpXSAvIDEwMCk7CiAgfQogIGZ1bmN0aW9uIGNoaWxkRGVsdGFGZWQobGV2ZXIsIGksIGNpKXsKICAgIHJldHVybiBsZXZlci5jaGlsZHJlbltjaV0uZmVkICogKHN0YXRlLmNoaWxkRmVkUGN0W2ldW2NpXSAvIDEwMCk7CiAgfQogIGZ1bmN0aW9uIGNoaWxkRGVsdGFEZWQobGV2ZXIsIGksIGNpKXsKICAgIHJldHVybiBsZXZlci5jaGlsZHJlbltjaV0uZGVkICogKHN0YXRlLmNoaWxkRGVkUGN0W2ldW2NpXSAvIDEwMCk7CiAgfQogIGZ1bmN0aW9uIHNwZW5kaW5nRGVsdGFHRihsZXZlciwgaSl7CiAgICBpZiAobGV2ZXIuY2hpbGRyZW4pewogICAgICBsZXQgc3VtID0gMDsKICAgICAgZm9yIChsZXQgY2kgPSAwOyBjaSA8IGxldmVyLmNoaWxkcmVuLmxlbmd0aDsgY2krKykgc3VtICs9IGNoaWxkRGVsdGFHRihsZXZlciwgaSwgY2kpOwogICAgICByZXR1cm4gc3VtOwogICAgfQogICAgcmV0dXJuIGxldmVyLmdmICogKHN0YXRlLnNwZW5kaW5nW2ldIC8gMTAwKTsKICB9CiAgZnVuY3Rpb24gZm1hcE11bHRpcGxpZXIobGV2ZXIpewogICAgcmV0dXJuIGxldmVyLmZtYXBfcmVndWxhciAvICgxIC0gbGV2ZXIuZm1hcF9yZWd1bGFyKTsKICB9CiAgZnVuY3Rpb24gc3BlbmRpbmdEZWx0YUZlZChsZXZlciwgaSl7CiAgICBpZiAobGV2ZXIuY2hpbGRyZW4pewogICAgICBsZXQgc3VtID0gMDsKICAgICAgZm9yIChsZXQgY2kgPSAwOyBjaSA8IGxldmVyLmNoaWxkcmVuLmxlbmd0aDsgY2krKykgc3VtICs9IGNoaWxkRGVsdGFGZWQobGV2ZXIsIGksIGNpKTsKICAgICAgcmV0dXJuIHN1bTsKICAgIH0KICAgIGlmIChsZXZlci5mbWFwX3JlZ3VsYXIgJiYgc3RhdGUubGlua2VkW2ldKXsKICAgICAgcmV0dXJuIHNwZW5kaW5nRGVsdGFHRihsZXZlciwgaSkgKiBmbWFwTXVsdGlwbGllcihsZXZlcik7CiAgICB9CiAgICByZXR1cm4gbGV2ZXIuZmVkICogKHN0YXRlLnNwZW5kaW5nRmVkW2ldIC8gMTAwKTsKICB9CiAgZnVuY3Rpb24gc3BlbmRpbmdEZWx0YURlZChsZXZlciwgaSl7CiAgICBpZiAobGV2ZXIuY2hpbGRyZW4pewogICAgICBsZXQgc3VtID0gMDsKICAgICAgZm9yIChsZXQgY2kgPSAwOyBjaSA8IGxldmVyLmNoaWxkcmVuLmxlbmd0aDsgY2krKykgc3VtICs9IGNoaWxkRGVsdGFEZWQobGV2ZXIsIGksIGNpKTsKICAgICAgcmV0dXJuIHN1bTsKICAgIH0KICAgIHJldHVybiBsZXZlci5kZWQgKiAoc3RhdGUuc3BlbmRpbmdEZWRbaV0gLyAxMDApOwogIH0KCiAgZnVuY3Rpb24gdG90YWxzKCl7CiAgICBsZXQgcmV2RGVsdGEgPSAwOwogICAgREFUQS5yZXZlbnVlX2xldmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwpeyByZXZEZWx0YSArPSByZXZlbnVlRGVsdGEobCk7IH0pOwogICAgbGV0IHNwZW5kRGVsdGEgPSAwLCBmZWREZWx0YSA9IDAsIGRlZERlbHRhID0gMDsKICAgIERBVEEuc3BlbmRpbmdfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCwgaSl7CiAgICAgIHNwZW5kRGVsdGEgKz0gc3BlbmRpbmdEZWx0YUdGKGwsIGkpOwogICAgICBmZWREZWx0YSArPSBzcGVuZGluZ0RlbHRhRmVkKGwsIGkpOwogICAgICBkZWREZWx0YSArPSBzcGVuZGluZ0RlbHRhRGVkKGwsIGkpOwogICAgfSk7CiAgICBjb25zdCByZXZlbnVlID0gREFUQS5tZXRhLmdmX3JldmVudWVfdG90YWxfZnkyNyArIHJldkRlbHRhOwogICAgY29uc3QgYXBwcm9wID0gREFUQS5tZXRhLmdmX2FwcHJvcHJpYXRpb25fdG90YWxfZnkyNyArIHNwZW5kRGVsdGE7CiAgICAvLyBFbmRpbmcgQmFsYW5jZSBwZXIgdGhlIExGUidzIG93biBHZW5lcmFsIEZ1bmQgQnVkZ2V0IFJlcG9ydCAocC4zKTogTmV0IFJldmVudWVzIG1pbnVzCiAgICAvLyBBcHByb3ByaWF0aW9ucywgd2hlcmUgTmV0IFJldmVudWVzIGluY2x1ZGVzIHRoZSBiZWdpbm5pbmcgY2FzaCBiYWxhbmNlIGNhcnJpZWQgb3ZlciBmcm9tCiAgICAvLyBGWTIwMjYgYW5kIG5ldCBvbmUtdGltZSB0cmFuc2ZlcnMgYWxyZWFkeSBlbmFjdGVkIHRoaXMgc2Vzc2lvbi4gVGhvc2UgdHdvIGNvbXBvbmVudHMgYXJlCiAgICAvLyBmaXhlZCAtLSB0aGV5IGRvbid0IG1vdmUgd2l0aCBoeXBvdGhldGljYWwgY3VycmVudC15ZWFyIHRheCBvciBzcGVuZGluZyBjaGFuZ2VzLgogICAgY29uc3QgZml4ZWRPZmZzZXQgPSBEQVRBLm1ldGEuYmVnaW5uaW5nX2JhbGFuY2VfZnkyNyArIERBVEEubWV0YS5uZXRfdHJhbnNmZXJzX2Z5Mjc7CiAgICBjb25zdCBiYWxhbmNlID0gcmV2ZW51ZSAtIGFwcHJvcCArIGZpeGVkT2Zmc2V0OwogICAgcmV0dXJuIHsgcmV2ZW51ZSwgYXBwcm9wLCBiYWxhbmNlLCByZXZEZWx0YSwgc3BlbmREZWx0YSwgZmVkRGVsdGEsIGRlZERlbHRhLCBmaXhlZE9mZnNldCB9OwogIH0KCiAgLy8gLS0tLS0tLS0tLSBidWlsZDogcmV2ZW51ZSBjYXJkcyAtLS0tLS0tLS0tCiAgY29uc3QgcmV2R3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXZlbnVlR3JpZCIpOwoKICBmdW5jdGlvbiByZXZlbnVlQ2FyZEhUTUwobCl7CiAgICBpZiAobC50eXBlID09PSAidG9nZ2xlIil7CiAgICAgIHJldHVybiAoCiAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLWNhcmQiPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLXRvcCI+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ibGV2ZXItbmFtZSI+JyArIGwubGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImxldmVyLWRlbHRhIiBpZD0icmV2LWRlbHRhLScgKyBsLmlkICsgJyI+bm8gY2hhbmdlPC9zcGFuPicgKwogICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InRvZ2dsZS1yb3ciPicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJ0b2dnbGUtc3dpdGNoIj4nICsKICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBkYXRhLXJldj0iJyArIGwuaWQgKyAnIiBpZD0icmV2LWlucHV0LScgKyBsLmlkICsgJyI+JyArCiAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJ0b2dnbGUtdHJhY2siPjwvc3Bhbj48c3BhbiBjbGFzcz0idG9nZ2xlLXRodW1iIj48L3NwYW4+JyArCiAgICAgICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InRvZ2dsZS1sYWJlbCI+RXhlbXB0IGdyb2NlcmllcyBhdCBjaGVja291dCAoZXN0LiAnICsgZm10UGxhaW4obC5jb3N0X2lmX2VuYWJsZWQpICsgJyBhdCB0aGUgZW5hY3RlZCA2JSByYXRlOyBzY2FsZXMgd2l0aCB0aGUgc2FsZXMgdGF4IHNsaWRlciBhYm92ZSk8L3NwYW4+JyArCiAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItbm90ZSI+JyArIGwubm90ZSArICc8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1jaXRlIj5Tb3VyY2U6ICcgKyBsLmNpdGF0aW9uICsgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nCiAgICAgICk7CiAgICB9CiAgICBpZiAobC51bml0ID09PSAiZG9sbGFyc19wZXJfcGVyc29uIil7CiAgICAgIHJldHVybiAoCiAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLWNhcmQiPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLXRvcCI+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ibGV2ZXItbmFtZSI+JyArIGwubGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImxldmVyLWZpZ3VyZSIgaWQ9InJldi1maWd1cmUtJyArIGwuaWQgKyAnIj4kJyArIGwuYmFzZV9hbW91bnQgKyAnPC9zcGFuPicgKwogICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgJzxpbnB1dCB0eXBlPSJyYW5nZSIgZGF0YS1yZXY9IicgKyBsLmlkICsgJyIgaWQ9InJldi1pbnB1dC0nICsgbC5pZCArCiAgICAgICAgICAgICciIG1pbj0iJyArIGwubWluX3ZhbCArICciIG1heD0iJyArIGwubWF4X3ZhbCArICciIHN0ZXA9IicgKyBsLnN0ZXAgKyAnIiB2YWx1ZT0iJyArIGwuYmFzZV9hbW91bnQgKyAnIj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJzbGlkZXItdGlja3MiPjxzcGFuPiQnICsgbC5taW5fdmFsICsgJzwvc3Bhbj48c3Bhbj5jdXJyZW50IGxhdzogJCcgKyBsLmJhc2VfYW1vdW50ICsgJzwvc3Bhbj48c3Bhbj4kJyArIGwubWF4X3ZhbCArICc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItZGVsdGEiIGlkPSJyZXYtZGVsdGEtJyArIGwuaWQgKyAnIiBzdHlsZT0ibWFyZ2luLXRvcDo4cHg7Ij5HZW5lcmFsIEZ1bmQgaW1wYWN0OiBubyBjaGFuZ2U8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1ub3RlIj4nICsgbC5ub3RlICsgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImxldmVyLWNpdGUiPlNvdXJjZTogJyArIGwuY2l0YXRpb24gKyAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PicKICAgICAgKTsKICAgIH0KICAgIC8vIHJhdGUgbGV2ZXIKICAgIHJldHVybiAoCiAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1jYXJkIj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItdG9wIj4nICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0ibGV2ZXItbmFtZSI+JyArIGwubGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJsZXZlci1maWd1cmUiIGlkPSJyZXYtZmlndXJlLScgKyBsLmlkICsgJyI+JyArIHBjdChsLmJhc2VfcmF0ZSkgKyAnPC9zcGFuPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGlucHV0IHR5cGU9InJhbmdlIiBkYXRhLXJldj0iJyArIGwuaWQgKyAnIiBpZD0icmV2LWlucHV0LScgKyBsLmlkICsKICAgICAgICAgICciIG1pbj0iJyArIGwubWluX3JhdGUgKyAnIiBtYXg9IicgKyBsLm1heF9yYXRlICsgJyIgc3RlcD0iJyArIGwuc3RlcCArICciIHZhbHVlPSInICsgbC5iYXNlX3JhdGUgKyAnIj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ic2xpZGVyLXRpY2tzIj48c3Bhbj4nICsgcGN0KGwubWluX3JhdGUpICsgJzwvc3Bhbj48c3Bhbj5jdXJyZW50IGxhdzogJyArIHBjdChsLmJhc2VfcmF0ZSkgKyAnPC9zcGFuPjxzcGFuPicgKyBwY3QobC5tYXhfcmF0ZSkgKyAnPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJsZXZlci1kZWx0YSIgaWQ9InJldi1kZWx0YS0nICsgbC5pZCArICciIHN0eWxlPSJtYXJnaW4tdG9wOjhweDsiPkJhc2UgcmV2ZW51ZTogJyArIGZtdFBsYWluKGwuYmFzZV9hbW91bnQpICsgJyAmbmJzcDvCtyZuYnNwOyBubyBjaGFuZ2U8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItbm90ZSI+JyArIGwubm90ZSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ibGV2ZXItY2l0ZSI+U291cmNlOiAnICsgbC5jaXRhdGlvbiArICc8L2Rpdj4nICsKICAgICAgJzwvZGl2PicKICAgICk7CiAgfQoKICBEQVRBLnJldmVudWVfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCl7CiAgICByZXZHcmlkLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIiwgcmV2ZW51ZUNhcmRIVE1MKGwpKTsKICB9KTsKCiAgLy8gLS0tLS0tLS0tLSBidWlsZDogc3BlbmRpbmcgYWNjb3JkaW9ucyAtLS0tLS0tLS0tCiAgY29uc3QgYWNjb3JkaW9uc1Jvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJlYUFjY29yZGlvbnMiKTsKCiAgZnVuY3Rpb24gZnVuZEJhckhUTUwobCl7CiAgICBjb25zdCBnZlBjdCA9IChsLmdmL2wudG90YWwqMTAwKSB8fCAwOwogICAgY29uc3QgZGVkUGN0ID0gKGwuZGVkL2wudG90YWwqMTAwKSB8fCAwOwogICAgY29uc3QgZmVkUGN0ID0gKGwuZmVkL2wudG90YWwqMTAwKSB8fCAwOwogICAgcmV0dXJuICgKICAgICAgJzxkaXYgY2xhc3M9ImZ1bmQtYmFyIj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNlZy1nZiIgc3R5bGU9IndpZHRoOicgKyBnZlBjdCArICclIj48L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzZWctZGVkIiBzdHlsZT0id2lkdGg6JyArIGRlZFBjdCArICclIj48L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzZWctZmVkIiBzdHlsZT0id2lkdGg6JyArIGZlZFBjdCArICclIj48L3NwYW4+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9ImZ1bmQtbGVnZW5kIj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9ImZsLWdmIj5HZW5lcmFsICcgKyBnZlBjdC50b0ZpeGVkKDApICsgJyU8L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJmbC1kZWQiPkRlZGljYXRlZCAnICsgZGVkUGN0LnRvRml4ZWQoMCkgKyAnJTwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9ImZsLWZlZCI+RmVkZXJhbCAnICsgZmVkUGN0LnRvRml4ZWQoMCkgKyAnJTwvc3Bhbj4nICsKICAgICAgJzwvZGl2PicKICAgICk7CiAgfQoKICBmdW5jdGlvbiBnZlNsaWRlckhUTUwobCwgaSl7CiAgICBjb25zdCBsYWJlbCA9IGwuY2hpbGRyZW4gPyAiR2VuZXJhbCBGdW5kIDxzcGFuIGNsYXNzPVwibWFzdGVyLXRhZ1wiPnNjYWxlcyBhbGwgc3ViLXByb2dyYW1zPC9zcGFuPiIgOiAiR2VuZXJhbCBGdW5kIjsKICAgIHJldHVybiAoCiAgICAgICc8ZGl2IGNsYXNzPSJzbGlkZXItcm93LWxhYmVsIj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9InNsaWRlci1raW5kIGdmIj4nICsgbGFiZWwgKyAnPC9zcGFuPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWZpZ3MiPjxzcGFuIGNsYXNzPSJzbGlkZXItZmlnIiBpZD0iYWdlbmN5LWdmLScgKyBpICsgJyI+JyArIGZtdFBsYWluKGwuZ2YpICsgJzwvc3Bhbj4gJyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9InNsaWRlci1kZWx0YSIgaWQ9ImFnZW5jeS1kZWx0YS0nICsgaSArICciPm5vIGNoYW5nZTwvc3Bhbj48L3NwYW4+JyArCiAgICAgICc8L2Rpdj4nICsKICAgICAgJzxpbnB1dCB0eXBlPSJyYW5nZSIgZGF0YS1zcGVuZD0iJyArIGkgKyAnIiBpZD0ic3BlbmQtaW5wdXQtJyArIGkgKyAnIiBtaW49Ii0xMDAiIG1heD0iMTAwIiBzdGVwPSIxIiB2YWx1ZT0iMCI+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJzbGlkZXItdGlja3MiPjxzcGFuPlx1MjIxMjEwMCU8L3NwYW4+PHNwYW4+RlkyMDI3IGFzIGVuYWN0ZWQ8L3NwYW4+PHNwYW4+KzEwMCU8L3NwYW4+PC9kaXY+JwogICAgKTsKICB9CgogIGZ1bmN0aW9uIGZlZFNsaWRlckhUTUwobCwgaSl7CiAgICBjb25zdCBsaW5rYWJsZSA9ICEhbC5mbWFwX3JlZ3VsYXI7CiAgICBjb25zdCBsaW5rZWQgPSBzdGF0ZS5saW5rZWRbaV07CiAgICBsZXQgbGlua1JvdyA9ICIiOwogICAgaWYgKGxpbmthYmxlKXsKICAgICAgbGlua1JvdyA9ICc8ZGl2IGNsYXNzPSJsaW5rLXJvdyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ibGluay1pbnB1dC0nICsgaSArICciIGRhdGEtbGluaz0iJyArIGkgKyAnIicgKyAobGlua2VkID8gJyBjaGVja2VkJyA6ICcnKSArICc+JyArCiAgICAgICAgJzxsYWJlbCBmb3I9ImxpbmstaW5wdXQtJyArIGkgKyAnIj5MaW5rIHRvIEdlbmVyYWwgRnVuZCAoJyArIChsLmZtYXBfcmVndWxhcioxMDApLnRvRml4ZWQoMikgKyAnJSBGTUFQKTwvbGFiZWw+PC9kaXY+JzsKICAgIH0KICAgIGNvbnN0IGxhYmVsID0gIkZlZGVyYWwgRnVuZHMiICsgKGwuY2hpbGRyZW4gPyAnIDxzcGFuIGNsYXNzPSJtYXN0ZXItdGFnIj5zY2FsZXMgYWxsIHN1Yi1wcm9ncmFtczwvc3Bhbj4nIDogJycpICsKICAgICAgJzxzcGFuIGlkPSJmZWQtZm9sbG93aW5nLScgKyBpICsgJyI+JyArIChsaW5rYWJsZSAmJiBsaW5rZWQgPyAnIChmb2xsb3dpbmcgR0YpJyA6ICcnKSArICc8L3NwYW4+JzsKICAgIHJldHVybiAoCiAgICAgIGxpbmtSb3cgKwogICAgICAnPGRpdiBjbGFzcz0ic2xpZGVyLXJvdy1sYWJlbCI+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXIta2luZCBmZWQiPicgKyBsYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZmlncyI+PHNwYW4gY2xhc3M9InNsaWRlci1maWciIGlkPSJhZ2VuY3ktZmVkLScgKyBpICsgJyI+JyArIGZtdFBsYWluKGwuZmVkKSArICc8L3NwYW4+ICcgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZGVsdGEiIGlkPSJhZ2VuY3ktZmVkLWRlbHRhLScgKyBpICsgJyI+bm8gY2hhbmdlPC9zcGFuPjwvc3Bhbj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGlucHV0IHR5cGU9InJhbmdlIiBjbGFzcz0iZmVkLXNsaWRlciIgZGF0YS1zcGVuZC1mZWQ9IicgKyBpICsgJyIgaWQ9InNwZW5kLWZlZC1pbnB1dC0nICsgaSArCiAgICAgICAgJyIgbWluPSItMTAwIiBtYXg9IjEwMCIgc3RlcD0iMSIgdmFsdWU9IjAiJyArICgobGlua2FibGUgJiYgbGlua2VkKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJz4nICsKICAgICAgJzxkaXYgY2xhc3M9InNsaWRlci10aWNrcyI+PHNwYW4+XHUyMjEyMTAwJTwvc3Bhbj48c3Bhbj5GWTIwMjcgYXMgZW5hY3RlZDwvc3Bhbj48c3Bhbj4rMTAwJTwvc3Bhbj48L2Rpdj4nCiAgICApOwogIH0KCiAgZnVuY3Rpb24gZGVkU2xpZGVySFRNTChsLCBpKXsKICAgIGNvbnN0IGxhYmVsID0gIkRlZGljYXRlZCBGdW5kcyIgKyAobC5jaGlsZHJlbiA/ICcgPHNwYW4gY2xhc3M9Im1hc3Rlci10YWciPnNjYWxlcyBhbGwgc3ViLXByb2dyYW1zPC9zcGFuPicgOiAnJyk7CiAgICByZXR1cm4gKAogICAgICAnPGRpdiBjbGFzcz0ic2xpZGVyLXJvdy1sYWJlbCI+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXIta2luZCBkZWQiPicgKyBsYWJlbCArICc8L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZmlncyI+PHNwYW4gY2xhc3M9InNsaWRlci1maWciIGlkPSJhZ2VuY3ktZGVkLScgKyBpICsgJyI+JyArIGZtdFBsYWluKGwuZGVkKSArICc8L3NwYW4+ICcgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZGVsdGEiIGlkPSJhZ2VuY3ktZGVkLWRlbHRhLScgKyBpICsgJyI+bm8gY2hhbmdlPC9zcGFuPjwvc3Bhbj4nICsKICAgICAgJzwvZGl2PicgKwogICAgICAnPGlucHV0IHR5cGU9InJhbmdlIiBjbGFzcz0iZGVkLXNsaWRlciIgZGF0YS1zcGVuZC1kZWQ9IicgKyBpICsgJyIgaWQ9InNwZW5kLWRlZC1pbnB1dC0nICsgaSArICciIG1pbj0iLTEwMCIgbWF4PSIxMDAiIHN0ZXA9IjEiIHZhbHVlPSIwIj4nICsKICAgICAgJzxkaXYgY2xhc3M9InNsaWRlci10aWNrcyI+PHNwYW4+XHUyMjEyMTAwJTwvc3Bhbj48c3Bhbj5GWTIwMjcgYXMgZW5hY3RlZDwvc3Bhbj48c3Bhbj4rMTAwJTwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9ImRlZC1jYXZlYXQiPkRlZGljYXRlZCBmdW5kcyBjb21lIGZyb20gZmVlcywgZW5kb3dtZW50IGVhcm5pbmdzLCBvciBvdGhlciBzdGF0dXRvcmlseSBzcGVjaWZpYyBzb3VyY2VzIFx1MjAxNCBKRkFDIGNhblwndCBmcmVlbHkgcmVhbGxvY2F0ZSB0aGVtIHRoZSB3YXkgaXQgY2FuIEdlbmVyYWwgRnVuZC4gVGhpcyBzbGlkZXIgaXMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmQgbWl4LCBub3QgYSByZWFsaXN0aWMgcG9saWN5IGxldmVyLjwvZGl2PicKICAgICk7CiAgfQoKICBmdW5jdGlvbiBjaGlsZFJvd0hUTUwobCwgaSwgY2hpbGQsIGNpKXsKICAgIGNvbnN0IGhhc0dGID0gY2hpbGQuZ2YgPiAwOwogICAgY29uc3QgaGFzRmVkID0gY2hpbGQuZmVkID4gMDsKICAgIGNvbnN0IGhhc0RlZCA9IGNoaWxkLmRlZCA+IDA7CiAgICBjb25zdCBiaWxsVGFncyA9IChjaGlsZC5iaWxscyB8fCBbXSkubWFwKGZ1bmN0aW9uKGIpewogICAgICBjb25zdCB1cmwgPSBiaWxsVXJsKGIpOwogICAgICByZXR1cm4gdXJsID8gJzxhIGNsYXNzPSJiaWxsLXRhZyIgaHJlZj0iJyArIHVybCArICciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj4nICsgYiArICc8L2E+JyA6ICcnOwogICAgfSkuam9pbigiIik7CiAgICBsZXQgcm93cyA9ICIiOwogICAgaWYgKGhhc0dGKXsKICAgICAgcm93cyArPSAnPGRpdiBjbGFzcz0ic2xpZGVyLXJvdy1sYWJlbCI+PHNwYW4gY2xhc3M9InNsaWRlci1raW5kIGdmIj5HZW5lcmFsIEZ1bmQ8L3NwYW4+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJzbGlkZXItZmlncyI+PHNwYW4gY2xhc3M9InNsaWRlci1maWciIGlkPSJjaGlsZC1nZi0nICsgaSArICctJyArIGNpICsgJyI+JyArIGZtdFBsYWluKGNoaWxkLmdmKSArICc8L3NwYW4+ICcgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWRlbHRhIiBpZD0iY2hpbGQtZGVsdGEtJyArIGkgKyAnLScgKyBjaSArICciPm5vIGNoYW5nZTwvc3Bhbj48L3NwYW4+PC9kaXY+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJyYW5nZSIgY2xhc3M9ImNoaWxkLXNsaWRlciIgZGF0YS1jaGlsZD0iJyArIGkgKyAnOicgKyBjaSArICciIGlkPSJjaGlsZC1pbnB1dC0nICsgaSArICctJyArIGNpICsgJyIgbWluPSItMTAwIiBtYXg9IjEwMCIgc3RlcD0iMSIgdmFsdWU9IjAiPic7CiAgICB9CiAgICBpZiAoaGFzRGVkKXsKICAgICAgcm93cyArPSAnPGRpdiBjbGFzcz0ic2xpZGVyLXJvdy1sYWJlbCI+PHNwYW4gY2xhc3M9InNsaWRlci1raW5kIGRlZCI+RGVkaWNhdGVkIEZ1bmRzPC9zcGFuPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWZpZ3MiPjxzcGFuIGNsYXNzPSJzbGlkZXItZmlnIiBpZD0iY2hpbGQtZGVkLScgKyBpICsgJy0nICsgY2kgKyAnIj4nICsgZm10UGxhaW4oY2hpbGQuZGVkKSArICc8L3NwYW4+ICcgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWRlbHRhIiBpZD0iY2hpbGQtZGVkLWRlbHRhLScgKyBpICsgJy0nICsgY2kgKyAnIj5ubyBjaGFuZ2U8L3NwYW4+PC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8aW5wdXQgdHlwZT0icmFuZ2UiIGNsYXNzPSJjaGlsZC1zbGlkZXIgZGVkLXNsaWRlciIgZGF0YS1jaGlsZC1kZWQ9IicgKyBpICsgJzonICsgY2kgKyAnIiBpZD0iY2hpbGQtZGVkLWlucHV0LScgKyBpICsgJy0nICsgY2kgKyAnIiBtaW49Ii0xMDAiIG1heD0iMTAwIiBzdGVwPSIxIiB2YWx1ZT0iMCI+JzsKICAgIH0KICAgIGlmIChoYXNGZWQpewogICAgICByb3dzICs9ICc8ZGl2IGNsYXNzPSJzbGlkZXItcm93LWxhYmVsIj48c3BhbiBjbGFzcz0ic2xpZGVyLWtpbmQgZmVkIj5GZWRlcmFsIEZ1bmRzPC9zcGFuPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWZpZ3MiPjxzcGFuIGNsYXNzPSJzbGlkZXItZmlnIiBpZD0iY2hpbGQtZmVkLScgKyBpICsgJy0nICsgY2kgKyAnIj4nICsgZm10UGxhaW4oY2hpbGQuZmVkKSArICc8L3NwYW4+ICcgKwogICAgICAgICc8c3BhbiBjbGFzcz0ic2xpZGVyLWRlbHRhIiBpZD0iY2hpbGQtZmVkLWRlbHRhLScgKyBpICsgJy0nICsgY2kgKyAnIj5ubyBjaGFuZ2U8L3NwYW4+PC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8aW5wdXQgdHlwZT0icmFuZ2UiIGNsYXNzPSJjaGlsZC1zbGlkZXIgZmVkLXNsaWRlciIgZGF0YS1jaGlsZC1mZWQ9IicgKyBpICsgJzonICsgY2kgKyAnIiBpZD0iY2hpbGQtZmVkLWlucHV0LScgKyBpICsgJy0nICsgY2kgKyAnIiBtaW49Ii0xMDAiIG1heD0iMTAwIiBzdGVwPSIxIiB2YWx1ZT0iMCI+JzsKICAgIH0KICAgIGlmICghaGFzR0YgJiYgIWhhc0ZlZCAmJiAhaGFzRGVkKXsKICAgICAgcm93cyA9ICc8ZGl2IGNsYXNzPSJuby1nZi1ub3RlIj4kMCBmb3IgRlkyMDI3IFx1MjAxNCBzZWUgbm90ZXMgYmVsb3cgKG9mdGVuIG1lYW5zIHRoZSBwcm9ncmFtIHdhcyBjb25zb2xpZGF0ZWQgaW50byBhbm90aGVyIGxpbmUgdGhpcyB5ZWFyKS48L2Rpdj4nOwogICAgfQogICAgY29uc3QgZGVzY0J0biA9IGNoaWxkLmRlc2NyaXB0aW9ucyAmJiBjaGlsZC5kZXNjcmlwdGlvbnMubGVuZ3RoCiAgICAgID8gJzxidXR0b24gY2xhc3M9ImRlc2MtdG9nZ2xlIiBkYXRhLWNoaWxkLWRlc2MtdG9nZ2xlPSInICsgaSArICc6JyArIGNpICsgJyI+V2hhdCB0aGlzIGZ1bmRzIFx1MjViZTwvYnV0dG9uPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJkZXNjLWJveCIgaWQ9ImNoaWxkLWRlc2MtYm94LScgKyBpICsgJy0nICsgY2kgKyAnIj4nICsKICAgICAgICAgIGNoaWxkLmRlc2NyaXB0aW9ucy5tYXAoZnVuY3Rpb24oZCl7IHJldHVybiAnPHA+PHNwYW4gY2xhc3M9ImRlc2Mta2luZCI+JyArIChkLnN1Yl9wcm9ncmFtfHxjaGlsZC5uYW1lKSArICc8L3NwYW4+PGJyPicgKyBkLnRleHQgKyAnPC9wPic7IH0pLmpvaW4oIiIpICsKICAgICAgICAnPC9kaXY+JwogICAgICA6ICIiOwogICAgY29uc3Qgbm90ZUJ0biA9IGNoaWxkLm5vdGVzICYmIGNoaWxkLm5vdGVzLmxlbmd0aAogICAgICA/ICc8YnV0dG9uIGNsYXNzPSJjYXZlYXQtdG9nZ2xlIiBkYXRhLWNoaWxkLWNhdmVhdC10b2dnbGU9IicgKyBpICsgJzonICsgY2kgKyAnIj5Db25kaXRpb25zIFx1MjViZTwvYnV0dG9uPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJjYXZlYXQtYm94IiBpZD0iY2hpbGQtY2F2ZWF0LWJveC0nICsgaSArICctJyArIGNpICsgJyI+JyArCiAgICAgICAgICBjaGlsZC5ub3Rlcy5tYXAoZnVuY3Rpb24obil7IHJldHVybiAnPHA+PHNwYW4gY2xhc3M9ImNhdmVhdC1raW5kIj4nICsgbi50eXBlICsgJzwvc3Bhbj48YnI+JyArIG4udGV4dCArICc8L3A+JzsgfSkuam9pbigiIikgKwogICAgICAgICc8L2Rpdj4nCiAgICAgIDogIiI7CiAgICByZXR1cm4gKAogICAgICAnPGRpdiBjbGFzcz0iY2hpbGQtcm93Ij4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iY2hpbGQtdG9wIj4nICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2hpbGQtbmFtZSI+JyArIGNoaWxkLm5hbWUgKyAnPC9zcGFuPicgKyBiaWxsVGFncyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9ImNoaWxkLXRvdGFsIj4nICsgZm10UGxhaW4oY2hpbGQudG90YWwpICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgZnVuZEJhckhUTUwoY2hpbGQpICsKICAgICAgICByb3dzICsKICAgICAgICAnPGRpdiBjbGFzcz0iY2hpbGQtbGlua3MiPicgKyBkZXNjQnRuICsgbm90ZUJ0biArICc8L2Rpdj4nICsKICAgICAgJzwvZGl2PicKICAgICk7CiAgfQoKICBmdW5jdGlvbiBjaGlsZHJlblNlY3Rpb25IVE1MKGwsIGkpewogICAgaWYgKCFsLmNoaWxkcmVuIHx8ICFsLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuICIiOwogICAgY29uc3Qgcm93cyA9IGwuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGMsIGNpKXsgcmV0dXJuIGNoaWxkUm93SFRNTChsLCBpLCBjLCBjaSk7IH0pLmpvaW4oIiIpOwogICAgcmV0dXJuICgKICAgICAgJzxidXR0b24gY2xhc3M9InN1YnByb2dyYW0tdG9nZ2xlIiBkYXRhLXN1YnByb2dyYW0tdG9nZ2xlPSInICsgaSArICciPlx1MjViOCBTaG93ICcgKyBsLmNoaWxkcmVuLmxlbmd0aCArICcgc3ViLXByb2dyYW1zPC9idXR0b24+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJzdWJwcm9ncmFtLWxpc3QiIGlkPSJzdWJwcm9ncmFtLWxpc3QtJyArIGkgKyAnIj4nICsgcm93cyArICc8L2Rpdj4nCiAgICApOwogIH0KCiAgZnVuY3Rpb24gY2F2ZWF0Qm94SFRNTChsLCBpKXsKICAgIGxldCBwYXJ0cyA9IFtdOwogICAgaWYgKGwuZm1hcF9yZWd1bGFyKXsKICAgICAgY29uc3QgbXVsdCA9IChsLmZtYXBfcmVndWxhci8oMS1sLmZtYXBfcmVndWxhcikpOwogICAgICBwYXJ0cy5wdXNoKCc8cD48c3BhbiBjbGFzcz0iY2F2ZWF0LWtpbmQiPkZlZGVyYWwgbWF0Y2ggcmF0ZSAoRk1BUCk8L3NwYW4+PGJyPklkYWhvXCdzIHJlZ3VsYXIgTWVkaWNhaWQgRk1BUCBmb3IgRlkyMDI3IGlzICcgKwogICAgICAgIChsLmZtYXBfcmVndWxhcioxMDApLnRvRml4ZWQoMikgKyAnJSAoQ0hJUFwncyBlbmhhbmNlZCByYXRlIGlzICcgKyAobC5mbWFwX2VuaGFuY2VkX2NoaXAqMTAwKS50b0ZpeGVkKDIpICsKICAgICAgICAnJSksIHBlciBISFNcJ3Mgb2ZmaWNpYWwgRmVkZXJhbCBSZWdpc3RlciBub3RpY2UuIEZvciBldmVyeSAkMSBvZiBzdGF0ZSBzcGVuZGluZyBvbiByZWd1bGFyIEZNQVAtbWF0Y2hlZCBzZXJ2aWNlcywgdGhlIGZlZGVyYWwgJyArCiAgICAgICAgJ2dvdmVybm1lbnQgY29udHJpYnV0ZXMgYWJvdXQgJCcgKyBtdWx0LnRvRml4ZWQoMikgKyAnIGluIG1hdGNoIFx1MjAxNCBzbyBhICQxIHN0YXRlIGN1dCBjYW4gcmVtb3ZlIHJvdWdobHkgJCcgKyAoMSttdWx0KS50b0ZpeGVkKDIpICsKICAgICAgICAnIG9mIHRvdGFsIGZ1bmRlZCBjYXJlLiBUaGUgRGl2aXNpb25cJ3MgJyArIGZtdFBsYWluKGwuZ2YpICsgJyBHZW5lcmFsIEZ1bmQgbGluZSBibGVuZHMgc2V2ZXJhbCBtYXRjaCByYXRlcyAocmVndWxhciBGTUFQLCBBQ0EgJyArCiAgICAgICAgJ2V4cGFuc2lvbiBhdCBhIGZpeGVkIDkwJSBmZWRlcmFsLCBDSElQXCdzIGVuaGFuY2VkIHJhdGUsIH41MCUgZm9yIGFkbWluaXN0cmF0aW9uKSwgc28gdGhpcyBtdWx0aXBsaWVyIGFwcGxpZXMgbW9zdCBkaXJlY3RseSB0byAnICsKICAgICAgICAndHJhZGl0aW9uYWwgTWVkaWNhaWQgc2VydmljZXMsIG5vdCB0aGUgd2hvbGUgbGluZS4gVGhlIEZlZGVyYWwgRnVuZHMgc2xpZGVyIGFib3ZlIGlzIGxpbmtlZCB0byB0aGlzIHJhdGUgYnkgZGVmYXVsdCBcdTIwMTQgdW5jaGVjayAnICsKICAgICAgICAnIkxpbmsgdG8gR2VuZXJhbCBGdW5kIiB0byBtb3ZlIGl0IGluZGVwZW5kZW50bHkuIDxzcGFuIHN0eWxlPSJvcGFjaXR5Oi43Ij5Tb3VyY2U6ICcgKyBsLmZtYXBfY2l0YXRpb24gKyAnPC9zcGFuPjwvcD4nKTsKICAgIH0gZWxzZSBpZiAobC5mZWRfc2hhcmUgPj0gMC4zKXsKICAgICAgcGFydHMucHVzaCgnPHA+PHNwYW4gY2xhc3M9ImNhdmVhdC1raW5kIj5GZWRlcmFsIG1hdGNoPC9zcGFuPjxicj4nICsgKGwuZmVkX3NoYXJlKjEwMCkudG9GaXhlZCgwKSArICclIG9mIHRoaXMgcHJvZ3JhbVwncyB0b3RhbCBmdW5kaW5nIGlzIGZlZGVyYWwuIEN1dHRpbmcgdGhlIHN0YXRlIEdlbmVyYWwgRnVuZCBzaGFyZSBkb2VzblwndCBuZWNlc3NhcmlseSByZWR1Y2UgdGhlIGZlZGVyYWwgZG9sbGFycyBcdTIwMTQgYW5kIGZvciBhIG1hdGNoZWQgcHJvZ3JhbSwgaXQgY2FuIG1lYW4gZm9yZmVpdGluZyBmZWRlcmFsIG1hdGNoIG9uIHRvcCBvZiB0aGUgc3RhdGUgY3V0LjwvcD4nKTsKICAgIH0KICAgIGlmIChsLmFtZW5kc19jb2RlKXsKICAgICAgcGFydHMucHVzaCgnPHA+PHNwYW4gY2xhc3M9ImNhdmVhdC1raW5kIj5CZXlvbmQgYSBidWRnZXQgYmlsbDwvc3Bhbj48YnI+VGhpcyBwcm9ncmFtXCdzIEZZMjAyNyBidWRnZXQgYmlsbCBhbHJlYWR5IGFtZW5kZWQgSWRhaG8gQ29kZSBvciBzZXNzaW9uIGxhdywgbm90IGp1c3QgYXBwcm9wcmlhdGVkIGRvbGxhcnMuIEEgaHlwb3RoZXRpY2FsIGN1dCBvZiBzaW1pbGFyIHNjb3BlIHdvdWxkIGxpa2VseSBuZWVkIHRoZSBzYW1lLjwvcD4nKTsKICAgIH0KICAgIGwubm90ZXMuZm9yRWFjaChmdW5jdGlvbihuKXsKICAgICAgaWYgKG4udHlwZSA9PT0gIkZFREVSQUwgTUFUQ0ggUkFURSAoRk1BUCkiKSByZXR1cm47IC8vIGFscmVhZHkgcmVuZGVyZWQgcHJlY2lzZWx5IGFib3ZlCiAgICAgIHBhcnRzLnB1c2goJzxwPjxzcGFuIGNsYXNzPSJjYXZlYXQta2luZCI+JyArIG4udHlwZSArICc8L3NwYW4+PGJyPicgKyBuLnRleHQgKyAnPC9wPicpOwogICAgfSk7CiAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gIiI7CiAgICByZXR1cm4gKAogICAgICAnPGJ1dHRvbiBjbGFzcz0iY2F2ZWF0LXRvZ2dsZSIgZGF0YS1jYXZlYXQtdG9nZ2xlPSInICsgaSArICciPlNob3cgbGVnaXNsYXRpdmUgY29uZGl0aW9ucyAmYW1wOyBjb250ZXh0IFx1MjViZTwvYnV0dG9uPicgKwogICAgICAnPGRpdiBjbGFzcz0iY2F2ZWF0LWJveCIgaWQ9ImNhdmVhdC1ib3gtJyArIGkgKyAnIj4nICsgcGFydHMuam9pbigiIikgKyAnPC9kaXY+JwogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRlc2NCb3hIVE1MKGwsIGkpewogICAgaWYgKCFsLmRlc2NyaXB0aW9ucyB8fCBsLmRlc2NyaXB0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAiIjsKICAgIGNvbnN0IHBhcnRzID0gbC5kZXNjcmlwdGlvbnMubWFwKGZ1bmN0aW9uKGQpewogICAgICBjb25zdCBsYWJlbCA9IGQuc3ViX3Byb2dyYW0gfHwgbC5hZ2VuY3k7CiAgICAgIHJldHVybiAnPHA+PHNwYW4gY2xhc3M9ImRlc2Mta2luZCI+JyArIGxhYmVsICsgJzwvc3Bhbj48YnI+JyArIGQudGV4dCArICc8L3A+JzsKICAgIH0pOwogICAgcmV0dXJuICgKICAgICAgJzxidXR0b24gY2xhc3M9ImRlc2MtdG9nZ2xlIiBkYXRhLWRlc2MtdG9nZ2xlPSInICsgaSArICciPlNob3cgd2hhdCB0aGlzIGZ1bmRzIFx1MjViZTwvYnV0dG9uPicgKwogICAgICAnPGRpdiBjbGFzcz0iZGVzYy1ib3giIGlkPSJkZXNjLWJveC0nICsgaSArICciPicgKyBwYXJ0cy5qb2luKCIiKSArICc8L2Rpdj4nCiAgICApOwogIH0KCiAgZnVuY3Rpb24gYmlsbFVybChiaWxsKXsKICAgIGNvbnN0IG0gPSAvXihbQS1aXSspKFxkKykkLy5leGVjKGJpbGwpOwogICAgaWYgKCFtKSByZXR1cm4gbnVsbDsKICAgIGxldCBudW0gPSBtWzJdOwogICAgd2hpbGUgKG51bS5sZW5ndGggPCA0KSBudW0gPSAiMCIgKyBudW07CiAgICByZXR1cm4gImh0dHBzOi8vbGVnaXNsYXR1cmUuaWRhaG8uZ292L3Nlc3Npb25pbmZvLzIwMjYvbGVnaXNsYXRpb24vIiArIG1bMV0gKyBudW0gKyAiLyI7CiAgfQoKICBmdW5jdGlvbiBhZ2VuY3lSb3dIVE1MKGwsIGkpewogICAgY29uc3QgYmlsbFRhZ3MgPSAobC5iaWxscyB8fCBbXSkubWFwKGZ1bmN0aW9uKGIpewogICAgICBjb25zdCB1cmwgPSBiaWxsVXJsKGIpOwogICAgICByZXR1cm4gdXJsCiAgICAgICAgPyAnPGEgY2xhc3M9ImJpbGwtdGFnIiBocmVmPSInICsgdXJsICsgJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPicgKyBiICsgJzwvYT4nCiAgICAgICAgOiAnPHNwYW4gY2xhc3M9ImJpbGwtdGFnIj4nICsgYiArICc8L3NwYW4+JzsKICAgIH0pLmpvaW4oIiIpOwogICAgY29uc3QgY29kZVRhZyA9IGwuYW1lbmRzX2NvZGUgPyAnPHNwYW4gY2xhc3M9ImNvZGUtdGFnIj5hbWVuZHMgY29kZTwvc3Bhbj4nIDogIiI7CiAgICBjb25zdCBoYXNHRiA9IGwuZ2YgPiAwOwogICAgY29uc3QgaGFzRGVkID0gbC5kZWQgPiAwOwogICAgY29uc3QgaGFzRmVkID0gbC5mZWQgPiAwOwoKICAgIGxldCBib2R5ID0gIiI7CiAgICBpZiAoaGFzR0YpIGJvZHkgKz0gZ2ZTbGlkZXJIVE1MKGwsIGkpOwogICAgaWYgKGhhc0RlZCkgYm9keSArPSBkZWRTbGlkZXJIVE1MKGwsIGkpOwogICAgaWYgKGhhc0ZlZCkgYm9keSArPSBmZWRTbGlkZXJIVE1MKGwsIGkpOwogICAgaWYgKCFoYXNHRiAmJiAhaGFzRmVkICYmICFoYXNEZWQpewogICAgICBib2R5ID0gJzxkaXYgY2xhc3M9Im5vLWdmLW5vdGUiPiQwIGZvciBGWTIwMjcuPC9kaXY+JzsKICAgIH0gZWxzZSBpZiAoIWhhc0ZlZCl7CiAgICAgIGJvZHkgKz0gJzxkaXYgY2xhc3M9Im5vLWdmLW5vdGUiIHN0eWxlPSJtYXJnaW4tdG9wOjhweDsiPk5vIGZlZGVyYWwgZnVuZGluZyBmb3IgdGhpcyBwcm9ncmFtLjwvZGl2Pic7CiAgICB9IGVsc2UgaWYgKCFoYXNHRil7CiAgICAgIGJvZHkgKz0gJzxkaXYgY2xhc3M9Im5vLWdmLW5vdGUiIHN0eWxlPSJtYXJnaW4tdG9wOjhweDsiPk5vIEdlbmVyYWwgRnVuZCBhcHByb3ByaWF0aW9uIFx1MjAxNCB0aGUgc2xpZGVycyBhYm92ZSBhZGp1c3QgZGVkaWNhdGVkIGFuZCBmZWRlcmFsIGZ1bmRzIG9ubHkuPC9kaXY+JzsKICAgIH0KCiAgICByZXR1cm4gKAogICAgICAnPGRpdiBjbGFzcz0iYWdlbmN5LXJvdyI+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImFnZW5jeS10b3AiPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImFnZW5jeS1uYW1lLXdyYXAiPjxzcGFuIGNsYXNzPSJhZ2VuY3ktbmFtZSI+JyArIGwuYWdlbmN5ICsgJzwvc3Bhbj4nICsgYmlsbFRhZ3MgKyBjb2RlVGFnICsgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9ImFnZW5jeS1maWd1cmVzIj48ZGl2IGNsYXNzPSJhZ2VuY3ktZ2YiPicgKyBmbXRQbGFpbihsLnRvdGFsKSArICcgdG90YWw8L2Rpdj48L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgZnVuZEJhckhUTUwobCkgKwogICAgICAgIGJvZHkgKwogICAgICAgIGNoaWxkcmVuU2VjdGlvbkhUTUwobCwgaSkgKwogICAgICAgIGRlc2NCb3hIVE1MKGwsIGkpICsKICAgICAgICBjYXZlYXRCb3hIVE1MKGwsIGkpICsKICAgICAgJzwvZGl2PicKICAgICk7CiAgfQoKICBjb25zdCBhcmVhSW5kZXggPSB7fTsKICBBUkVBX09SREVSLmZvckVhY2goZnVuY3Rpb24oYXJlYSwgaWR4KXsKICAgIGNvbnN0IGxldmVycyA9IFtdOwogICAgREFUQS5zcGVuZGluZ19sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsLCBpKXsgaWYgKGwuYXJlYSA9PT0gYXJlYSkgbGV2ZXJzLnB1c2goW2wsaV0pOyB9KTsKICAgIGNvbnN0IGFyZWFHRiA9IGxldmVycy5yZWR1Y2UoZnVuY3Rpb24oc3VtLCBwYWlyKXsgcmV0dXJuIHN1bSArIHBhaXJbMF0uZ2Y7IH0sIDApOwogICAgY29uc3QgYXJlYVRvdGFsID0gbGV2ZXJzLnJlZHVjZShmdW5jdGlvbihzdW0sIHBhaXIpeyByZXR1cm4gc3VtICsgcGFpclswXS50b3RhbDsgfSwgMCk7CiAgICBjb25zdCBudW0gPSBTdHJpbmcoaWR4KzEpLnBhZFN0YXJ0KDIsIjAiKTsKICAgIGNvbnN0IHJvd3NIVE1MID0gbGV2ZXJzLm1hcChmdW5jdGlvbihwYWlyKXsgcmV0dXJuIGFnZW5jeVJvd0hUTUwocGFpclswXSwgcGFpclsxXSk7IH0pLmpvaW4oIiIpOwogICAgY29uc3QgaHRtbCA9ICgKICAgICAgJzxkZXRhaWxzIGNsYXNzPSJhcmVhIj4nICsKICAgICAgICAnPHN1bW1hcnkgY2xhc3M9ImFyZWEtc3VtbWFyeSI+JyArCiAgICAgICAgICAnPHNwYW4gY2xhc3M9ImFyZWEtY2hldnJvbiI+XHUyNWI4PC9zcGFuPicgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJhcmVhLW5hbWUiPicgKyBudW0gKyAnICZuYnNwOycgKyBhcmVhICsgJzwvc3Bhbj4nICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0iYXJlYS1maWd1cmVzIj4nICsKICAgICAgICAgICAgJzxzcGFuPjxzcGFuIGNsYXNzPSJhcmVhLWZpZ3VyZS1sYWJlbCI+R2VuZXJhbCBGdW5kPC9zcGFuPjxicj48c3BhbiBjbGFzcz0iYXJlYS1maWd1cmUtdmFsdWUiIGlkPSJhcmVhLWdmLScgKyBpZHggKyAnIj4nICsgZm10UGxhaW4oYXJlYUdGKSArICc8L3NwYW4+PC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4+PHNwYW4gY2xhc3M9ImFyZWEtZmlndXJlLWxhYmVsIj5BbGwgRnVuZHM8L3NwYW4+PGJyPjxzcGFuIGNsYXNzPSJhcmVhLWZpZ3VyZS12YWx1ZSI+JyArIGZtdFBsYWluKGFyZWFUb3RhbCkgKyAnPC9zcGFuPjwvc3Bhbj4nICsKICAgICAgICAgICc8L3NwYW4+JyArCiAgICAgICAgJzwvc3VtbWFyeT4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYXJlYS1ib2R5Ij4nICsgcm93c0hUTUwgKyAnPC9kaXY+JyArCiAgICAgICc8L2RldGFpbHM+JwogICAgKTsKICAgIGFjY29yZGlvbnNSb290Lmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIiwgaHRtbCk7CiAgICBhcmVhSW5kZXhbYXJlYV0gPSB7IGlkeCwgYmFzZUdGOiBhcmVhR0YsIG1lbWJlcklkeDogbGV2ZXJzLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcFsxXTt9KSB9OwogIH0pOwoKICAvLyAtLS0tLS0tLS0tIHVwZGF0ZSAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gdXBkYXRlQWxsKCl7CiAgICBjb25zdCB0ID0gdG90YWxzKCk7CiAgICBjb25zdCBiYWxFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJCYWxhbmNlIik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVkZ2VyUmV2ZW51ZSIpLnRleHRDb250ZW50ID0gZm10UGxhaW4odC5yZXZlbnVlKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJBcHByb3AiKS50ZXh0Q29udGVudCA9IGZtdFBsYWluKHQuYXBwcm9wKTsKICAgIGJhbEVsLnRleHRDb250ZW50ID0gZm10UGxhaW4odC5iYWxhbmNlKTsKICAgIGJhbEVsLmNsYXNzTGlzdC5yZW1vdmUoImRlZmljaXQiLCJzdXJwbHVzIik7CiAgICBiYWxFbC5jbGFzc0xpc3QuYWRkKHQuYmFsYW5jZSA8IDAgPyAiZGVmaWNpdCIgOiAic3VycGx1cyIpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZGdlclJldmVudWVEZWx0YSIpLnRleHRDb250ZW50ID0gZm10U2lnbmVkKHQucmV2RGVsdGEpICsgIiB2cy4gZW5hY3RlZCI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVkZ2VyQXByb3BEZWx0YSIpLnRleHRDb250ZW50ID0gZm10U2lnbmVkKHQuc3BlbmREZWx0YSkgKyAiIHZzLiBlbmFjdGVkIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJCYWxhbmNlTm90ZSIpLnRleHRDb250ZW50ID0gdC5iYWxhbmNlIDwgMCA/ICJzaG9ydGZhbGwiIDogInN1cnBsdXMiOwoKICAgIGNvbnN0IGZlZFN0cmlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZGdlckZlZFN0cmlwIik7CiAgICBpZiAoTWF0aC5hYnModC5mZWREZWx0YSkgPiA1MDAwMCl7CiAgICAgIGZlZFN0cmlwLmNsYXNzTGlzdC5hZGQoInNob3ciKTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlZGdlckZlZFZhbHVlIikudGV4dENvbnRlbnQgPSBmbXRTaWduZWQodC5mZWREZWx0YSk7CiAgICB9IGVsc2UgewogICAgICBmZWRTdHJpcC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93Iik7CiAgICB9CiAgICBjb25zdCBkZWRTdHJpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWRnZXJEZWRTdHJpcCIpOwogICAgaWYgKGRlZFN0cmlwKXsKICAgICAgaWYgKE1hdGguYWJzKHQuZGVkRGVsdGEpID4gNTAwMDApewogICAgICAgIGRlZFN0cmlwLmNsYXNzTGlzdC5hZGQoInNob3ciKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVkZ2VyRGVkVmFsdWUiKS50ZXh0Q29udGVudCA9IGZtdFNpZ25lZCh0LmRlZERlbHRhKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkZWRTdHJpcC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93Iik7CiAgICAgIH0KICAgIH0KCiAgICBEQVRBLnJldmVudWVfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCl7CiAgICAgIGNvbnN0IGQgPSByZXZlbnVlRGVsdGEobCk7CiAgICAgIGNvbnN0IGRlbHRhRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmV2LWRlbHRhLSIgKyBsLmlkKTsKICAgICAgaWYgKGwudHlwZSA9PT0gInRvZ2dsZSIpewogICAgICAgIGRlbHRhRWwudGV4dENvbnRlbnQgPSBzdGF0ZS5yZXZlbnVlW2wuaWRdID8gKGZtdFNpZ25lZChkKSArICIgdG8gR2VuZXJhbCBGdW5kIikgOiAibm8gY2hhbmdlIjsKICAgICAgICBkZWx0YUVsLmNsYXNzTmFtZSA9ICJsZXZlci1kZWx0YSAiICsgKGQgPCAwID8gIm5lZyIgOiAoZCA+IDAgPyAicG9zIiA6ICIiKSk7CiAgICAgIH0gZWxzZSBpZiAobC51bml0ID09PSAiZG9sbGFyc19wZXJfcGVyc29uIil7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldi1maWd1cmUtIiArIGwuaWQpLnRleHRDb250ZW50ID0gIiQiICsgc3RhdGUucmV2ZW51ZVtsLmlkXTsKICAgICAgICBkZWx0YUVsLnRleHRDb250ZW50ID0gIkdlbmVyYWwgRnVuZCBpbXBhY3Q6ICIgKyBmbXRTaWduZWQoZCk7CiAgICAgICAgZGVsdGFFbC5jbGFzc05hbWUgPSAibGV2ZXItZGVsdGEgIiArIChkIDwgMCA/ICJuZWciIDogKGQgPiAwID8gInBvcyIgOiAiIikpOwogICAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXYtZmlndXJlLSIgKyBsLmlkKS50ZXh0Q29udGVudCA9IHBjdChzdGF0ZS5yZXZlbnVlW2wuaWRdKTsKICAgICAgICBkZWx0YUVsLmlubmVySFRNTCA9ICJCYXNlIHJldmVudWU6ICIgKyBmbXRQbGFpbihsLmJhc2VfYW1vdW50KSArICIgJm5ic3A7XHUwMGI3Jm5ic3A7ICIgKyBmbXRTaWduZWQoZCk7CiAgICAgICAgZGVsdGFFbC5jbGFzc05hbWUgPSAibGV2ZXItZGVsdGEgIiArIChkIDwgMCA/ICJuZWciIDogKGQgPiAwID8gInBvcyIgOiAiIikpOwogICAgICB9CiAgICB9KTsKCiAgICBEQVRBLnNwZW5kaW5nX2xldmVycy5mb3JFYWNoKGZ1bmN0aW9uKGwsIGkpewogICAgICBpZiAobC5nZiA+IDApewogICAgICAgIGNvbnN0IGQgPSBzcGVuZGluZ0RlbHRhR0YobCwgaSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFnZW5jeS1nZi0iICsgaSkudGV4dENvbnRlbnQgPSBmbXRQbGFpbihsLmdmICsgZCk7CiAgICAgICAgY29uc3QgZGVsdGFFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZ2VuY3ktZGVsdGEtIiArIGkpOwogICAgICAgIGRlbHRhRWwudGV4dENvbnRlbnQgPSBmbXRTaWduZWQoZCk7CiAgICAgICAgZGVsdGFFbC5jbGFzc05hbWUgPSAic2xpZGVyLWRlbHRhICIgKyAoZCA8IDAgPyAibmVnIiA6IChkID4gMCA/ICJwb3MiIDogIiIpKTsKICAgICAgfQogICAgICBpZiAobC5mZWQgPiAwKXsKICAgICAgICBjb25zdCBmZCA9IHNwZW5kaW5nRGVsdGFGZWQobCwgaSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFnZW5jeS1mZWQtIiArIGkpLnRleHRDb250ZW50ID0gZm10UGxhaW4obC5mZWQgKyBmZCk7CiAgICAgICAgY29uc3QgZmRlbHRhRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWdlbmN5LWZlZC1kZWx0YS0iICsgaSk7CiAgICAgICAgZmRlbHRhRWwudGV4dENvbnRlbnQgPSBmbXRTaWduZWQoZmQpOwogICAgICAgIGZkZWx0YUVsLmNsYXNzTmFtZSA9ICJzbGlkZXItZGVsdGEgIiArIChmZCA8IDAgPyAibmVnIiA6IChmZCA+IDAgPyAicG9zIiA6ICIiKSk7CiAgICAgICAgLy8ga2VlcCB0aGUgKHBvc3NpYmx5IGRpc2FibGVkKSBmZWRlcmFsIHNsaWRlcidzIHZpc3VhbCBwb3NpdGlvbiBob25lc3Qgd2hlbiBsaW5rZWQKICAgICAgICBpZiAobC5mbWFwX3JlZ3VsYXIgJiYgc3RhdGUubGlua2VkW2ldKXsKICAgICAgICAgIGNvbnN0IGVxdWl2UGN0ID0gbC5mZWQgIT09IDAgPyAoZmQgLyBsLmZlZCAqIDEwMCkgOiAwOwogICAgICAgICAgY29uc3QgZmVkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlbmQtZmVkLWlucHV0LSIgKyBpKTsKICAgICAgICAgIGlmIChmZWRJbnB1dCkgZmVkSW5wdXQudmFsdWUgPSBNYXRoLm1heCgtMTAwLCBNYXRoLm1pbigxMDAsIGVxdWl2UGN0KSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChsLmRlZCA+IDApewogICAgICAgIGNvbnN0IGRkID0gc3BlbmRpbmdEZWx0YURlZChsLCBpKTsKICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZ2VuY3ktZGVkLSIgKyBpKTsKICAgICAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gZm10UGxhaW4obC5kZWQgKyBkZCk7CiAgICAgICAgY29uc3QgZGRlbHRhRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWdlbmN5LWRlZC1kZWx0YS0iICsgaSk7CiAgICAgICAgaWYgKGRkZWx0YUVsKXsgZGRlbHRhRWwudGV4dENvbnRlbnQgPSBmbXRTaWduZWQoZGQpOyBkZGVsdGFFbC5jbGFzc05hbWUgPSAic2xpZGVyLWRlbHRhICIgKyAoZGQgPCAwID8gIm5lZyIgOiAoZGQgPiAwID8gInBvcyIgOiAiIikpOyB9CiAgICAgIH0KICAgICAgaWYgKGwuY2hpbGRyZW4pewogICAgICAgIGwuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjLCBjaSl7CiAgICAgICAgICBpZiAoYy5nZiA+IDApewogICAgICAgICAgICBjb25zdCBjZCA9IGNoaWxkRGVsdGFHRihsLCBpLCBjaSk7CiAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWdmLSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gZm10UGxhaW4oYy5nZiArIGNkKTsKICAgICAgICAgICAgY29uc3QgZGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWRlbHRhLSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgICBpZiAoZGVsKXsgZGVsLnRleHRDb250ZW50ID0gZm10U2lnbmVkKGNkKTsgZGVsLmNsYXNzTmFtZSA9ICJzbGlkZXItZGVsdGEgIiArIChjZCA8IDAgPyAibmVnIiA6IChjZCA+IDAgPyAicG9zIiA6ICIiKSk7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChjLmRlZCA+IDApewogICAgICAgICAgICBjb25zdCBjZGQgPSBjaGlsZERlbHRhRGVkKGwsIGksIGNpKTsKICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZGVkLSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gZm10UGxhaW4oYy5kZWQgKyBjZGQpOwogICAgICAgICAgICBjb25zdCBkZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZGVkLWRlbHRhLSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgICBpZiAoZGVsKXsgZGVsLnRleHRDb250ZW50ID0gZm10U2lnbmVkKGNkZCk7IGRlbC5jbGFzc05hbWUgPSAic2xpZGVyLWRlbHRhICIgKyAoY2RkIDwgMCA/ICJuZWciIDogKGNkZCA+IDAgPyAicG9zIiA6ICIiKSk7IH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChjLmZlZCA+IDApewogICAgICAgICAgICBjb25zdCBjZmQgPSBjaGlsZERlbHRhRmVkKGwsIGksIGNpKTsKICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZmVkLSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gZm10UGxhaW4oYy5mZWQgKyBjZmQpOwogICAgICAgICAgICBjb25zdCBkZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZmVkLWRlbHRhLSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgICBpZiAoZGVsKXsgZGVsLnRleHRDb250ZW50ID0gZm10U2lnbmVkKGNmZCk7IGRlbC5jbGFzc05hbWUgPSAic2xpZGVyLWRlbHRhICIgKyAoY2ZkIDwgMCA/ICJuZWciIDogKGNmZCA+IDAgPyAicG9zIiA6ICIiKSk7IH0KICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgfSk7CgogICAgT2JqZWN0LmtleXMoYXJlYUluZGV4KS5mb3JFYWNoKGZ1bmN0aW9uKGFyZWEpewogICAgICBjb25zdCBpbmZvID0gYXJlYUluZGV4W2FyZWFdOwogICAgICBsZXQgc3VtID0gMDsKICAgICAgaW5mby5tZW1iZXJJZHguZm9yRWFjaChmdW5jdGlvbihpKXsgc3VtICs9IERBVEEuc3BlbmRpbmdfbGV2ZXJzW2ldLmdmICsgc3BlbmRpbmdEZWx0YUdGKERBVEEuc3BlbmRpbmdfbGV2ZXJzW2ldLCBpKTsgfSk7CiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFyZWEtZ2YtIiArIGluZm8uaWR4KTsKICAgICAgaWYgKGVsKSBlbC50ZXh0Q29udGVudCA9IGZtdFBsYWluKHN1bSk7CiAgICB9KTsKICB9CgogIC8vIC0tLS0tLS0tLS0gZXZlbnRzIC0tLS0tLS0tLS0KICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZSl7CiAgICBjb25zdCByZXZJZCA9IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YS1yZXYiKTsKICAgIGNvbnN0IHNwZW5kSWR4ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXNwZW5kIik7CiAgICBjb25zdCBzcGVuZEZlZElkeCA9IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YS1zcGVuZC1mZWQiKTsKICAgIGNvbnN0IHNwZW5kRGVkSWR4ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLXNwZW5kLWRlZCIpOwogICAgY29uc3QgY2hpbGRLZXkgPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtY2hpbGQiKTsKICAgIGNvbnN0IGNoaWxkRmVkS2V5ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNoaWxkLWZlZCIpOwogICAgY29uc3QgY2hpbGREZWRLZXkgPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtY2hpbGQtZGVkIik7CiAgICBpZiAocmV2SWQgIT09IG51bGwpewogICAgICBjb25zdCBsZXZlciA9IERBVEEucmV2ZW51ZV9sZXZlcnMuZmluZChmdW5jdGlvbihsKXsgcmV0dXJuIGwuaWQgPT09IHJldklkOyB9KTsKICAgICAgc3RhdGUucmV2ZW51ZVtyZXZJZF0gPSAobGV2ZXIudHlwZSA9PT0gInRvZ2dsZSIpID8gZS50YXJnZXQuY2hlY2tlZCA6IHBhcnNlRmxvYXQoZS50YXJnZXQudmFsdWUpOwogICAgICB1cGRhdGVBbGwoKTsKICAgIH0gZWxzZSBpZiAoc3BlbmRJZHggIT09IG51bGwpewogICAgICBjb25zdCB2YWwgPSBwYXJzZUZsb2F0KGUudGFyZ2V0LnZhbHVlKTsKICAgICAgc3RhdGUuc3BlbmRpbmdbc3BlbmRJZHhdID0gdmFsOwogICAgICBjb25zdCBsZXZlciA9IERBVEEuc3BlbmRpbmdfbGV2ZXJzW3NwZW5kSWR4XTsKICAgICAgaWYgKGxldmVyLmNoaWxkcmVuKXsKICAgICAgICAvLyBtYXN0ZXIgY29udHJvbDogY2FzY2FkZSB0byBldmVyeSBjaGlsZCdzIEdGIHNsaWRlcgogICAgICAgIHN0YXRlLmNoaWxkUGN0W3NwZW5kSWR4XSA9IGxldmVyLmNoaWxkcmVuLm1hcChmdW5jdGlvbigpeyByZXR1cm4gdmFsOyB9KTsKICAgICAgICBsZXZlci5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGMsIGNpKXsKICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWlucHV0LSIgKyBzcGVuZElkeCArICItIiArIGNpKTsKICAgICAgICAgIGlmIChlbCkgZWwudmFsdWUgPSB2YWw7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgdXBkYXRlQWxsKCk7CiAgICB9IGVsc2UgaWYgKHNwZW5kRmVkSWR4ICE9PSBudWxsKXsKICAgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChlLnRhcmdldC52YWx1ZSk7CiAgICAgIHN0YXRlLnNwZW5kaW5nRmVkW3NwZW5kRmVkSWR4XSA9IHZhbDsKICAgICAgY29uc3QgbGV2ZXIgPSBEQVRBLnNwZW5kaW5nX2xldmVyc1tzcGVuZEZlZElkeF07CiAgICAgIGlmIChsZXZlci5jaGlsZHJlbil7CiAgICAgICAgc3RhdGUuY2hpbGRGZWRQY3Rbc3BlbmRGZWRJZHhdID0gbGV2ZXIuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKCl7IHJldHVybiB2YWw7IH0pOwogICAgICAgIGxldmVyLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYywgY2kpewogICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZmVkLWlucHV0LSIgKyBzcGVuZEZlZElkeCArICItIiArIGNpKTsKICAgICAgICAgIGlmIChlbCkgZWwudmFsdWUgPSB2YWw7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgdXBkYXRlQWxsKCk7CiAgICB9IGVsc2UgaWYgKHNwZW5kRGVkSWR4ICE9PSBudWxsKXsKICAgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChlLnRhcmdldC52YWx1ZSk7CiAgICAgIHN0YXRlLnNwZW5kaW5nRGVkW3NwZW5kRGVkSWR4XSA9IHZhbDsKICAgICAgY29uc3QgbGV2ZXIgPSBEQVRBLnNwZW5kaW5nX2xldmVyc1tzcGVuZERlZElkeF07CiAgICAgIGlmIChsZXZlci5jaGlsZHJlbil7CiAgICAgICAgc3RhdGUuY2hpbGREZWRQY3Rbc3BlbmREZWRJZHhdID0gbGV2ZXIuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKCl7IHJldHVybiB2YWw7IH0pOwogICAgICAgIGxldmVyLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYywgY2kpewogICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZGVkLWlucHV0LSIgKyBzcGVuZERlZElkeCArICItIiArIGNpKTsKICAgICAgICAgIGlmIChlbCkgZWwudmFsdWUgPSB2YWw7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgdXBkYXRlQWxsKCk7CiAgICB9IGVsc2UgaWYgKGNoaWxkS2V5ICE9PSBudWxsKXsKICAgICAgY29uc3QgcGFydHMgPSBjaGlsZEtleS5zcGxpdCgiOiIpOyBjb25zdCBpID0gcGFydHNbMF0sIGNpID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTsKICAgICAgc3RhdGUuY2hpbGRQY3RbaV1bY2ldID0gcGFyc2VGbG9hdChlLnRhcmdldC52YWx1ZSk7CiAgICAgIHVwZGF0ZUFsbCgpOwogICAgfSBlbHNlIGlmIChjaGlsZEZlZEtleSAhPT0gbnVsbCl7CiAgICAgIGNvbnN0IHBhcnRzID0gY2hpbGRGZWRLZXkuc3BsaXQoIjoiKTsgY29uc3QgaSA9IHBhcnRzWzBdLCBjaSA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7CiAgICAgIHN0YXRlLmNoaWxkRmVkUGN0W2ldW2NpXSA9IHBhcnNlRmxvYXQoZS50YXJnZXQudmFsdWUpOwogICAgICB1cGRhdGVBbGwoKTsKICAgIH0gZWxzZSBpZiAoY2hpbGREZWRLZXkgIT09IG51bGwpewogICAgICBjb25zdCBwYXJ0cyA9IGNoaWxkRGVkS2V5LnNwbGl0KCI6Iik7IGNvbnN0IGkgPSBwYXJ0c1swXSwgY2kgPSBwYXJzZUludChwYXJ0c1sxXSwgMTApOwogICAgICBzdGF0ZS5jaGlsZERlZFBjdFtpXVtjaV0gPSBwYXJzZUZsb2F0KGUudGFyZ2V0LnZhbHVlKTsKICAgICAgdXBkYXRlQWxsKCk7CiAgICB9CiAgfSk7CgogIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZnVuY3Rpb24oZSl7CiAgICBjb25zdCBsaW5rSWR4ID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmsiKTsKICAgIGlmIChsaW5rSWR4ICE9PSBudWxsKXsKICAgICAgY29uc3QgaSA9IGxpbmtJZHg7CiAgICAgIGNvbnN0IGwgPSBEQVRBLnNwZW5kaW5nX2xldmVyc1tpXTsKICAgICAgY29uc3Qgbm93TGlua2VkID0gZS50YXJnZXQuY2hlY2tlZDsKICAgICAgY29uc3QgZmVkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlbmQtZmVkLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKCFub3dMaW5rZWQpewogICAgICAgIC8vIHByZXNlcnZlIGNvbnRpbnVpdHk6IHNlZWQgdGhlIGluZGVwZW5kZW50IHNsaWRlciBhdCBpdHMgY3VycmVudCBkZXJpdmVkIHBvc2l0aW9uCiAgICAgICAgY29uc3QgY3VycmVudEVxdWl2UGN0ID0gZmVkSW5wdXQgPyBwYXJzZUZsb2F0KGZlZElucHV0LnZhbHVlKSA6IDA7CiAgICAgICAgc3RhdGUubGlua2VkW2ldID0gZmFsc2U7CiAgICAgICAgaWYgKGZlZElucHV0KXsgZmVkSW5wdXQuZGlzYWJsZWQgPSBmYWxzZTsgZmVkSW5wdXQudmFsdWUgPSBjdXJyZW50RXF1aXZQY3Q7IH0KICAgICAgICBzdGF0ZS5zcGVuZGluZ0ZlZFtpXSA9IGN1cnJlbnRFcXVpdlBjdDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzdGF0ZS5saW5rZWRbaV0gPSB0cnVlOwogICAgICAgIGlmIChmZWRJbnB1dCkgZmVkSW5wdXQuZGlzYWJsZWQgPSB0cnVlOwogICAgICB9CiAgICAgIGNvbnN0IGZvbGxvd1RhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmZWQtZm9sbG93aW5nLSIgKyBpKTsKICAgICAgaWYgKGZvbGxvd1RhZykgZm9sbG93VGFnLnRleHRDb250ZW50ID0gbm93TGlua2VkID8gIiAoZm9sbG93aW5nIEdGKSIgOiAiIjsKICAgICAgdXBkYXRlQWxsKCk7CiAgICB9CiAgfSk7CgogIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKXsKICAgIGNvbnN0IGNhdmVhdEJ0biA9IGUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWNhdmVhdC10b2dnbGVdIik7CiAgICBpZiAoY2F2ZWF0QnRuKXsKICAgICAgY29uc3QgaSA9IGNhdmVhdEJ0bi5nZXRBdHRyaWJ1dGUoImRhdGEtY2F2ZWF0LXRvZ2dsZSIpOwogICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2F2ZWF0LWJveC0iICsgaSk7CiAgICAgIGNvbnN0IG9wZW4gPSBib3guY2xhc3NMaXN0LnRvZ2dsZSgib3BlbiIpOwogICAgICBjYXZlYXRCdG4udGV4dENvbnRlbnQgPSAob3BlbiA/ICJIaWRlIGxlZ2lzbGF0aXZlIGNvbmRpdGlvbnMgJiBjb250ZXh0IFx1MjViNCIgOiAiU2hvdyBsZWdpc2xhdGl2ZSBjb25kaXRpb25zICYgY29udGV4dCBcdTI1YmUiKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgZGVzY0J0biA9IGUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWRlc2MtdG9nZ2xlXSIpOwogICAgaWYgKGRlc2NCdG4pewogICAgICBjb25zdCBpID0gZGVzY0J0bi5nZXRBdHRyaWJ1dGUoImRhdGEtZGVzYy10b2dnbGUiKTsKICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2MtYm94LSIgKyBpKTsKICAgICAgY29uc3Qgb3BlbiA9IGJveC5jbGFzc0xpc3QudG9nZ2xlKCJvcGVuIik7CiAgICAgIGRlc2NCdG4udGV4dENvbnRlbnQgPSAob3BlbiA/ICJIaWRlIHdoYXQgdGhpcyBmdW5kcyBcdTI1YjQiIDogIlNob3cgd2hhdCB0aGlzIGZ1bmRzIFx1MjViZSIpOwogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBzdWJCdG4gPSBlLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1zdWJwcm9ncmFtLXRvZ2dsZV0iKTsKICAgIGlmIChzdWJCdG4pewogICAgICBjb25zdCBpID0gc3ViQnRuLmdldEF0dHJpYnV0ZSgiZGF0YS1zdWJwcm9ncmFtLXRvZ2dsZSIpOwogICAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1YnByb2dyYW0tbGlzdC0iICsgaSk7CiAgICAgIGNvbnN0IG9wZW4gPSBsaXN0LmNsYXNzTGlzdC50b2dnbGUoIm9wZW4iKTsKICAgICAgY29uc3QgbiA9IERBVEEuc3BlbmRpbmdfbGV2ZXJzW2ldLmNoaWxkcmVuLmxlbmd0aDsKICAgICAgc3ViQnRuLnRleHRDb250ZW50ID0gKG9wZW4gPyAiXHUyNWJlIEhpZGUgIiA6ICJcdTI1YjggU2hvdyAiKSArIG4gKyAiIHN1Yi1wcm9ncmFtcyI7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IGNoaWxkRGVzY0J0biA9IGUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWNoaWxkLWRlc2MtdG9nZ2xlXSIpOwogICAgaWYgKGNoaWxkRGVzY0J0bil7CiAgICAgIGNvbnN0IGtleSA9IGNoaWxkRGVzY0J0bi5nZXRBdHRyaWJ1dGUoImRhdGEtY2hpbGQtZGVzYy10b2dnbGUiKTsKICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWRlc2MtYm94LSIgKyBrZXkucmVwbGFjZSgiOiIsICItIikpOwogICAgICBjb25zdCBvcGVuID0gYm94LmNsYXNzTGlzdC50b2dnbGUoIm9wZW4iKTsKICAgICAgY2hpbGREZXNjQnRuLnRleHRDb250ZW50ID0gb3BlbiA/ICJXaGF0IHRoaXMgZnVuZHMgXHUyNWI0IiA6ICJXaGF0IHRoaXMgZnVuZHMgXHUyNWJlIjsKICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgY2hpbGRDYXZlYXRCdG4gPSBlLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1jaGlsZC1jYXZlYXQtdG9nZ2xlXSIpOwogICAgaWYgKGNoaWxkQ2F2ZWF0QnRuKXsKICAgICAgY29uc3Qga2V5ID0gY2hpbGRDYXZlYXRCdG4uZ2V0QXR0cmlidXRlKCJkYXRhLWNoaWxkLWNhdmVhdC10b2dnbGUiKTsKICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWNhdmVhdC1ib3gtIiArIGtleS5yZXBsYWNlKCI6IiwgIi0iKSk7CiAgICAgIGNvbnN0IG9wZW4gPSBib3guY2xhc3NMaXN0LnRvZ2dsZSgib3BlbiIpOwogICAgICBjaGlsZENhdmVhdEJ0bi50ZXh0Q29udGVudCA9IG9wZW4gPyAiQ29uZGl0aW9ucyBcdTI1YjQiIDogIkNvbmRpdGlvbnMgXHUyNWJlIjsKICAgICAgcmV0dXJuOwogICAgfQogIH0pOwoKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzZXRCdG4iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCl7CiAgICBEQVRBLnJldmVudWVfbGV2ZXJzLmZvckVhY2goZnVuY3Rpb24obCl7CiAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJldi1pbnB1dC0iICsgbC5pZCk7CiAgICAgIGlmIChsLnR5cGUgPT09ICJ0b2dnbGUiKXsgc3RhdGUucmV2ZW51ZVtsLmlkXSA9IGZhbHNlOyBpbnB1dC5jaGVja2VkID0gZmFsc2U7IH0KICAgICAgZWxzZSBpZiAobC51bml0ID09PSAicmF0ZSIpeyBzdGF0ZS5yZXZlbnVlW2wuaWRdID0gbC5iYXNlX3JhdGU7IGlucHV0LnZhbHVlID0gbC5iYXNlX3JhdGU7IH0KICAgICAgZWxzZSB7IHN0YXRlLnJldmVudWVbbC5pZF0gPSBsLmJhc2VfYW1vdW50OyBpbnB1dC52YWx1ZSA9IGwuYmFzZV9hbW91bnQ7IH0KICAgIH0pOwogICAgREFUQS5zcGVuZGluZ19sZXZlcnMuZm9yRWFjaChmdW5jdGlvbihsLCBpKXsKICAgICAgc3RhdGUuc3BlbmRpbmdbaV0gPSAwOwogICAgICBzdGF0ZS5zcGVuZGluZ0ZlZFtpXSA9IDA7CiAgICAgIHN0YXRlLnNwZW5kaW5nRGVkW2ldID0gMDsKICAgICAgc3RhdGUubGlua2VkW2ldID0gISFsLmZtYXBfcmVndWxhcjsKICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlbmQtaW5wdXQtIiArIGkpOwogICAgICBpZiAoaW5wdXQpIGlucHV0LnZhbHVlID0gMDsKICAgICAgY29uc3QgZmVkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlbmQtZmVkLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKGZlZElucHV0KXsgZmVkSW5wdXQudmFsdWUgPSAwOyBmZWRJbnB1dC5kaXNhYmxlZCA9ICEhbC5mbWFwX3JlZ3VsYXI7IH0KICAgICAgY29uc3QgZGVkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BlbmQtZGVkLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKGRlZElucHV0KSBkZWRJbnB1dC52YWx1ZSA9IDA7CiAgICAgIGNvbnN0IGxpbmtJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rLWlucHV0LSIgKyBpKTsKICAgICAgaWYgKGxpbmtJbnB1dCkgbGlua0lucHV0LmNoZWNrZWQgPSAhIWwuZm1hcF9yZWd1bGFyOwogICAgICBjb25zdCBmb2xsb3dUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmVkLWZvbGxvd2luZy0iICsgaSk7CiAgICAgIGlmIChmb2xsb3dUYWcpIGZvbGxvd1RhZy50ZXh0Q29udGVudCA9IGwuZm1hcF9yZWd1bGFyID8gIiAoZm9sbG93aW5nIEdGKSIgOiAiIjsKICAgICAgaWYgKGwuY2hpbGRyZW4pewogICAgICAgIHN0YXRlLmNoaWxkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgICAgIHN0YXRlLmNoaWxkRmVkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgICAgIHN0YXRlLmNoaWxkRGVkUGN0W2ldID0gbC5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuIDA7IH0pOwogICAgICAgIGwuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjLCBjaSl7CiAgICAgICAgICBjb25zdCBnZkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkLWlucHV0LSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgaWYgKGdmRWwpIGdmRWwudmFsdWUgPSAwOwogICAgICAgICAgY29uc3QgZmVkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpbGQtZmVkLWlucHV0LSIgKyBpICsgIi0iICsgY2kpOwogICAgICAgICAgaWYgKGZlZEVsKSBmZWRFbC52YWx1ZSA9IDA7CiAgICAgICAgICBjb25zdCBkZWRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZC1kZWQtaW5wdXQtIiArIGkgKyAiLSIgKyBjaSk7CiAgICAgICAgICBpZiAoZGVkRWwpIGRlZEVsLnZhbHVlID0gMDsKICAgICAgICB9KTsKICAgICAgfQogICAgfSk7CiAgICB1cGRhdGVBbGwoKTsKICB9KTsKCiAgdXBkYXRlQWxsKCk7CgogIC8vIC0tLS0tLS0tLS0gb2Zmc2V0IGJlbG93IGFueSBzdGlja3kvZml4ZWQgc2l0ZSBjaHJvbWUgLS0tLS0tLS0tLQogIC8vIFJhdGhlciB0aGFuIGxvb2tpbmcgZm9yIG9uZSBzcGVjaWZpYyBlbGVtZW50LCBzY2FuIGZvciBhbnl0aGluZyBwaW5uZWQgdG8gdGhlCiAgLy8gdG9wIG9mIHRoZSB2aWV3cG9ydCAtLSBXUCBhZG1pbiBiYXIsIHRoZW1lIHN0aWNreSBuYXYsIGNvb2tpZSBiYW5uZXJzLCBldGMuIC0tCiAgLy8gYW5kIHNpdCBqdXN0IGJlbG93IHRoZSB0YWxsZXN0IHN0YWNrIG9mIHRoZW0uIFJlLWNoZWNrZWQgb24gcmVzaXplIGFuZCBzY3JvbGwKICAvLyAodGhyb3R0bGVkKSBzaW5jZSBzb21lIHRoZW1lcyBvbmx5IHN3aXRjaCB0aGVpciBoZWFkZXIgdG8gZml4ZWQvc3RpY2t5IG9uY2UKICAvLyB5b3UndmUgc2Nyb2xsZWQgcGFzdCBhIHRocmVzaG9sZC4KICBjb25zdCBsZWRnZXJPdXRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5sZWRnZXItc3RpY2t5LW91dGVyIik7CiAgZnVuY3Rpb24gYWRqdXN0U3RpY2t5T2Zmc2V0KCl7CiAgICBpZiAoIWxlZGdlck91dGVyKSByZXR1cm47CiAgICBsZXQgbWF4Qm90dG9tID0gMDsKICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJoZWFkZXIsIG5hdiwgW2NsYXNzKj0naGVhZGVyJ10sIFtjbGFzcyo9J3N0aWNreSddLCBbY2xhc3MqPSdmaXhlZCddLCBbaWQqPSdoZWFkZXInXSwgI3dwYWRtaW5iYXIiKTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FuZGlkYXRlcy5sZW5ndGg7IGkrKyl7CiAgICAgIGNvbnN0IGVsID0gY2FuZGlkYXRlc1tpXTsKICAgICAgaWYgKGVsID09PSBsZWRnZXJPdXRlciB8fCBsZWRnZXJPdXRlci5jb250YWlucyhlbCkgfHwgZWwuY29udGFpbnMobGVkZ2VyT3V0ZXIpKSBjb250aW51ZTsKICAgICAgY29uc3QgY3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7CiAgICAgIGlmICgoY3MucG9zaXRpb24gPT09ICJmaXhlZCIgfHwgY3MucG9zaXRpb24gPT09ICJzdGlja3kiKSAmJiBjcy52aXNpYmlsaXR5ICE9PSAiaGlkZGVuIiAmJiBjcy5kaXNwbGF5ICE9PSAibm9uZSIpewogICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICBpZiAocmVjdC50b3AgPj0gLTUgJiYgcmVjdC50b3AgPCAyMDAgJiYgcmVjdC5ib3R0b20gPiA1ICYmIHJlY3Qud2lkdGggPiAwKXsKICAgICAgICAgIG1heEJvdHRvbSA9IE1hdGgubWF4KG1heEJvdHRvbSwgcmVjdC5ib3R0b20pOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgbGVkZ2VyT3V0ZXIuc3R5bGUudG9wID0gTWF0aC5tYXgoMCwgbWF4Qm90dG9tKSArICJweCI7CiAgfQogIGFkanVzdFN0aWNreU9mZnNldCgpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBhZGp1c3RTdGlja3lPZmZzZXQpOwogIGxldCBzY3JvbGxUaW1lciA9IG51bGw7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIGZ1bmN0aW9uKCl7CiAgICBpZiAoc2Nyb2xsVGltZXIpIHJldHVybjsKICAgIHNjcm9sbFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpeyBhZGp1c3RTdGlja3lPZmZzZXQoKTsgc2Nyb2xsVGltZXIgPSBudWxsOyB9LCAxNTApOwogIH0sIHsgcGFzc2l2ZTp0cnVlIH0pOwoKICB9IC8vIGVuZCBpbml0KCkKCiAgZnVuY3Rpb24gc2hvd0ZhdGFsRXJyb3IoZXJyKXsKICAgIHRyeXsKICAgICAgdmFyIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBib3guc2V0QXR0cmlidXRlKCJzdHlsZSIsCiAgICAgICAgIm1heC13aWR0aDo5NjBweDttYXJnaW46MjBweCBhdXRvO3BhZGRpbmc6MTZweCAxOHB4O2JhY2tncm91bmQ6I0YxREFEMztib3JkZXI6MXB4IHNvbGlkICNBMTNEMkU7IiArCiAgICAgICAgImJvcmRlci1yYWRpdXM6NnB4O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTJweDtjb2xvcjojNWEyMzE4O2xpbmUtaGVpZ2h0OjEuNjt3aGl0ZS1zcGFjZTpwcmUtd3JhcDsiKTsKICAgICAgYm94LnRleHRDb250ZW50ID0gIkJ1ZGdldCBzaW11bGF0b3IgZmFpbGVkIHRvIGxvYWQ6ICIgKyAoZXJyICYmIGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2UgOiBlcnIpICsKICAgICAgICAiXG5cblRoaXMgdXN1YWxseSBtZWFucyBzb21ldGhpbmcgb24gdGhlIHBhZ2UgKGEgY2FjaGluZyBvciBtaW5pZmljYXRpb24gcGx1Z2luLCBtb3N0IG9mdGVuKSBhbHRlcmVkIHRoZSBzY3JpcHQuICIgKwogICAgICAgICJPcGVuIHRoZSBicm93c2VyIGNvbnNvbGUgKEYxMikgZm9yIHRoZSBmdWxsIGVycm9yLCBvciB0cnkgZGlzYWJsaW5nIEpTL0hUTUwgbWluaWZpY2F0aW9uIGZvciB0aGlzIHBhZ2UuIjsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChib3gpOwogICAgfSBjYXRjaChlMil7IC8qIG5vdGhpbmcgbW9yZSB3ZSBjYW4gZG8gKi8gfQogIH0KCiAgZnVuY3Rpb24gYm9vdCgpewogICAgdHJ5IHsgaW5pdCgpOyB9CiAgICBjYXRjaChlcnIpeyBzaG93RmF0YWxFcnJvcihlcnIpOyB9CiAgfQoKICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImxvYWRpbmciKXsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBib290KTsKICB9IGVsc2UgewogICAgYm9vdCgpOwogIH0KfSkoKTsKCg== Share: Copy Facebook Twitter Email