PD9waHAKIyBHZW5lcmF0ZWQgYnkgdGhlIHByb3RvY29sIGJ1ZmZlciBjb21waWxlci4gIERPIE5PVCBFRElUIQojIHNvdXJjZTogZ29vZ2xlL3Byb3RvYnVmL2FwaS5wcm90bwoKbmFtZXNwYWNlIEdQQk1ldGFkYXRhXEdvb2dsZVxQcm90b2J1ZjsKCmNsYXNzIEFwaQp7CiAgICBwdWJsaWMgc3RhdGljICRpc19pbml0aWFsaXplZCA9IGZhbHNlOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5pdE9uY2UoKSB7CiAgICAgICAgJHBvb2wgPSBcR29vZ2xlXFByb3RvYnVmXEludGVybmFsXERlc2NyaXB0b3JQb29sOjpnZXRHZW5lcmF0ZWRQb29sKCk7CgogICAgICAgIGlmIChzdGF0aWM6OiRpc19pbml0aWFsaXplZCA9PSB0cnVlKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIFxHUEJNZXRhZGF0YVxHb29nbGVcUHJvdG9idWZcU291cmNlQ29udGV4dDo6aW5pdE9uY2UoKTsKICAgICAgICBcR1BCTWV0YWRhdGFcR29vZ2xlXFByb3RvYnVmXFR5cGU6OmluaXRPbmNlKCk7CiAgICAgICAgJHBvb2wtPmludGVybmFsQWRkR2VuZXJhdGVkRmlsZSgKICAgICAgICAgICAgJwrJBQoZZ29vZ2xlL3Byb3RvYnVmL2FwaS5wcm90bxIPZ29vZ2xlLnByb3RvYnVmGhpnb29nbGUvcHJvdG9idWYvdHlwZS5wcm90byKBAgoDQXBpEgwKBG5hbWUYASABKAkSKAoHbWV0aG9kcxgCIAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5NZXRob2QSKAoHb3B0aW9ucxgDIAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5PcHRpb24SDwoHdmVyc2lvbhgEIAEoCRI2Cg5zb3VyY2VfY29udGV4dBgFIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0EiYKBm1peGlucxgGIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5NaXhpbhJcJwoGc3ludGF4GAcgASgOMhcuZ29vZ2xlLnByb3RvYnVmLlN5bnRheCLVAQoGTWV0aG9kEgwKBG5hbWUYASABKAkSGAoQcmVxdWVzdF90eXBlX3VybBgCIAEoCRIZChFyZXF1ZXN0X3N0cmVhbWluZxgDIAEoCBIZChFyZXNwb25zZV90eXBlX3VybBgEIAEoCRIaChJyZXNwb25zZV9zdHJlYW1pbmcYBSABKAgSKAoHb3B0aW9ucxgGIAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5PcHRpb24SXCcKBnN5bnRheBgHIAEoDjIXLmdvb2dsZS5wcm90b2J1Zi5TeW50YXgiIwoFTWl4aW4SDAoEbmFtZRgBIAEoCRIMCgRyb290GAIgASgJQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFwaVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FwaXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzMnCiAgICAgICAgLCB0cnVlKTsKCiAgICAgICAgc3RhdGljOjokaXNfaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgfQp9Cgo=