IyBQb2xpc2ggdHJhbnNsYXRpb24gZm9yIGxpYmljb252LgojIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgbGliaWNvbnYgcGFja2FnZS4KIyBBcmthZGl1c3ogTGlwaWVjIDxhbGlwaWVjQGVsa2EucHcuZWR1LnBsPiwgMjAwMy4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogbGliaWNvbnYgMS45LjFcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWctZ251LWxpYmljb252QGdudS5vcmdcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA1LTA3LTA3IDE0OjU0KzAyMDBcbiIKIlBPLVJldmlzaW9uLURhdGU6IDIwMDMtMTAtMTMgMjI6NTYrMDEwMFxuIgoiTGFzdC1UcmFuc2xhdG9yOiBBcmthZGl1c3ogTGlwaWVjIDxBLkxpcGllY0BlbGthLnB3LmVkdS5wbD5cbiIKIkxhbmd1YWdlLVRlYW06IFBvbGlzaCA8dHJhbnNsYXRpb24tdGVhbS1wbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTJcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKCiM6IHNyYy9pY29udi5jOjU2Cm1zZ2lkICJVc2FnZTogaWNvbnYgWy1jXSBbLXNdIFstZiBmcm9tY29kZV0gWy10IHRvY29kZV0gW2ZpbGUgLi4uXSIKbXNnc3RyICJVv3ljaWU6IGljb252IFstY10gWy1zXSBbZiB6X2tvZHVdIFstdCBkb19rb2R1XSBbcGxpayAuLi5dIgoKIzogc3JjL2ljb252LmM6NTgKbXNnaWQgIm9yOiAgICBpY29udiAtbCIKbXNnc3RyICJsdWI6ICAgIGljb252IC1sIgoKIzogc3JjL2ljb252LmM6NjgKIywgYy1mb3JtYXQKbXNnaWQgIiIKIlRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PXG4iCiJ3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS5cbiIKbXNnc3RyICIiCiJUbyBqZXN0IG9wcm9ncmFtb3dhbmllIHdvbG5vZG9zdOpwbmU7IHphanJ6eWogZG8gvHLzZGWzIGFieSB1enlza2HmIHdhcnVua2lcbiIKImxpY2VuY2ppLiBOYSBvcHJvZ3JhbW93YW5pZSB0byBuaWUgamVzdCB1ZHppZWxhbmEgr0FETkEgR1dBUkFOQ0pBOyBuYXdldFxuIgoiZ3dhcmFuY2phIFLKS09KTUkgbHViIFBSWllEQVROT6ZDSSBETyBPS1JFpkxPTkVHTyBDRUxVLlxuIgoKIzogc3JjL2ljb252LmM6NzEKIywgYy1mb3JtYXQKbXNnaWQgIldyaXR0ZW4gYnkgJXMuXG4iCm1zZ3N0ciAiTmFwaXNhbmUgcHJ6ZXogJXMuXG4iCgojOiBzcmMvaWNvbnYuYzoxMzEgc3JjL2ljb252LmM6MTcxIHNyYy9pY29udi5jOjIzMgojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgImljb252OiAlczoldToldTogaW5jb21wbGV0ZSBjaGFyYWN0ZXIgb3Igc2hpZnQgc2VxdWVuY2VcbiIKbXNnc3RyICJpY29udjogJXM6IG5pZWRva2/xY3pvbnkgem5hayBsdWIgc2Vrd2VuY2phIHNoaWZ0XG4iCgojOiBzcmMvaWNvbnYuYzoxNjEgc3JjL2ljb252LmM6MjIzCiMsIGZ1enp5LCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6ICVzOiV1OiV1OiBjYW5ub3QgY29udmVydFxuIgptc2dzdHIgImljb252OiAlczogbmllIG1vv25hIHNrb253ZXJ0b3dh5lxuIgoKIzogc3JjL2ljb252LmM6MTkxIHNyYy9pY29udi5jOjI0MQojLCBmdXp6eSwgYy1mb3JtYXQKbXNnaWQgImljb252OiAlczoldToldTogIgptc2dzdHIgImljb252OiAlczogIgoKIzogc3JjL2ljb252LmM6MjUzCiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogJXM6IEkvTyBlcnJvclxuIgptc2dzdHIgImljb252OiAlczogYrOxZCB3ZWouL3d5ai5cbiIKCiM6IHNyYy9pY29udi5jOjM1MQojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNvbnZlcnNpb24gZnJvbSAlcyB1bnN1cHBvcnRlZFxuIgptc2dzdHIgImljb252OiBrb253ZXJzamEgeiBrb2R1ICVzIGplc3Qgbmllb2Jzs3VnaXdhbmFcbiIKCiM6IHNyYy9pY29udi5jOjM1MwojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IGNvbnZlcnNpb24gdG8gJXMgdW5zdXBwb3J0ZWRcbiIKbXNnc3RyICJpY29udjoga29ud2Vyc2phIGRvIGtvZHUgJXMgamVzdCBuaWVvYnOzdWdpd2FuYVxuIgoKIzogc3JjL2ljb252LmM6MzU1CiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogY29udmVyc2lvbiBmcm9tICVzIHRvICVzIHVuc3VwcG9ydGVkXG4iCm1zZ3N0ciAiaWNvbnY6IGtvbndlcnNqYSB6IGtvZHUgJXMgZG8ga29kdSAlcyBqZXN0IG5pZW9ic7N1Z2l3YW5hXG4iCgojOiBzcmMvaWNvbnYuYzozNTYKIywgYy1mb3JtYXQKbXNnaWQgImljb252OiB0cnkgJyVzIC1sJyB0byBnZXQgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5nc1xuIgptc2dzdHIgIiIKCiM6IHNyYy9pY29udi5jOjM3MAptc2dpZCAiKHN0ZGluKSIKbXNnc3RyICIoc3RkaW4pIgoKIzogc3JjL2ljb252LmM6Mzc4CiMsIGMtZm9ybWF0Cm1zZ2lkICJpY29udjogJXM6ICIKbXNnc3RyICJpY29udjogJXM6ICIKCiM6IHNyYy9pY29udi5jOjM5MQojLCBjLWZvcm1hdAptc2dpZCAiaWNvbnY6IEkvTyBlcnJvclxuIgptc2dzdHIgImljb252OiBis7FkIHdlai4vd3lqLlxuIgoKI34gbXNnaWQgIiIKI34gIlVzYWdlOiBpY29udiBbLS1iaW5hcnldIFstY10gWy1zXSBbLWYgZnJvbWNvZGVdIFstdCB0b2NvZGVdIFtmaWxlIC4uLl0iCiN+IG1zZ3N0ciAiIgojfiAiVb95Y2llOiBpY29udiBbLS1iaW5hcnldIFstY10gWy1zXSBbLWYgel9rb2R1XSBbLXQgZG9fa29kdV0gW3BsaWsgLi4uXSIK