CiAgICAgICBJbmRleCBvZiBEb2N1bWVudGF0aW9uIGZvciBQZW9wbGUgSW50ZXJlc3RlZCBpbiBXcml0aW5nIGFuZC9vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyB0aGUgTGludXggS2VybmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICBKdWFuLU1hcmlhbm8gZGUgR295ZW5lY2hlIDxqbXNleWFzQGRpdC51cG0uZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi8qCiAqIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IG1heSBiZSBmb3VuZCBhdDoKICogICBodHRwOi8vd3d3LmRpdC51cG0uZXMvfmptc2V5YXMvbGludXgva2VybmVsL2hhY2tlcnMtZG9jcy5odG1sCiAqLwoKICAgVGhlIG5lZWQgZm9yIGEgZG9jdW1lbnQgbGlrZSB0aGlzIG9uZSBiZWNhbWUgYXBwYXJlbnQgaW4gdGhlCiAgIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXMgdGhlIHNhbWUgcXVlc3Rpb25zLCBhc2tpbmcgZm9yIHBvaW50ZXJzCiAgIHRvIGluZm9ybWF0aW9uLCBhcHBlYXJlZCBhZ2FpbiBhbmQgYWdhaW4uCiAgIAogICBGb3J0dW5hdGVseSwgYXMgbW9yZSBhbmQgbW9yZSBwZW9wbGUgZ2V0IHRvIEdOVS9MaW51eCwgbW9yZSBhbmQgbW9yZQogICBnZXQgaW50ZXJlc3RlZCBpbiB0aGUgS2VybmVsLiBCdXQgcmVhZGluZyB0aGUgc291cmNlcyBpcyBub3QgYWx3YXlzCiAgIGVub3VnaC4gSXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kIHRoZSBjb2RlLCBidXQgbWlzcyB0aGUgY29uY2VwdHMsIHRoZQogICBwaGlsb3NvcGh5IGFuZCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCB0aGlzIGNvZGUuCiAgIAogICBVbmZvcnR1bmF0ZWx5LCBub3QgbWFueSBkb2N1bWVudHMgYXJlIGF2YWlsYWJsZSBmb3IgYmVnaW5uZXJzIHRvCiAgIHN0YXJ0LiBBbmQsIGV2ZW4gaWYgdGhleSBleGlzdCwgdGhlcmUgd2FzIG5vICJ3ZWxsLWtub3duIiBwbGFjZSB3aGljaAogICBrZXB0IHRyYWNrIG9mIHRoZW0uIFRoZXNlIGxpbmVzIHRyeSB0byBjb3ZlciB0aGlzIGxhY2suIEFsbCBkb2N1bWVudHMKICAgYXZhaWxhYmxlIG9uIGxpbmUga25vd24gYnkgdGhlIGF1dGhvciBhcmUgbGlzdGVkLCB3aGlsZSBzb21lIHJlZmVyZW5jZQogICBib29rcyBhcmUgYWxzbyBtZW50aW9uZWQuCiAgIAogICBQTEVBU0UsIGlmIHlvdSBrbm93IGFueSBwYXBlciBub3QgbGlzdGVkIGhlcmUgb3Igd3JpdGUgYSBuZXcgZG9jdW1lbnQsCiAgIHNlbmQgbWUgYW4gZS1tYWlsLCBhbmQgSSdsbCBpbmNsdWRlIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuIEFueQogICBjb3JyZWN0aW9ucywgaWRlYXMgb3IgY29tbWVudHMgYXJlIGFsc28gd2VsY29tZWQuCiAgIAogICBUaGUgcGFwZXJzIHRoYXQgZm9sbG93IGFyZSBsaXN0ZWQgaW4gbm8gcGFydGljdWxhciBvcmRlci4gQWxsIGFyZQogICBjYXRhbG9nZWQgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczogdGhlIGRvY3VtZW50J3MgIlRpdGxlIiwgdGhlCiAgICJBdXRob3IiL3MsIHRoZSAiVVJMIiB3aGVyZSB0aGV5IGNhbiBiZSBmb3VuZCwgc29tZSAiS2V5d29yZHMiIGhlbHBmdWwKICAgd2hlbiBzZWFyY2hpbmcgZm9yIHNwZWNpZmljIHRvcGljcywgYW5kIGEgYnJpZWYgIkRlc2NyaXB0aW9uIiBvZiB0aGUKICAgRG9jdW1lbnQuCiAgIAogICBFbmpveSEKICAgCiAgICAgT04tTElORSBET0NTOgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzLCBUaGlyZCBFZGl0aW9uIgogICAgICAgQXV0aG9yOiBKb25hdGhhbiBDb3JiZXQsIEFsZXNzYW5kcm8gUnViaW5pLCBHcmVnIEtyb2FoLUhhcnRtYW4KICAgICAgIFVSTDogaHR0cDovL2x3bi5uZXQvS2VybmVsL0xERDMvCiAgICAgICBEZXNjcmlwdGlvbjogQSA2MDAtcGFnZSBib29rIGNvdmVyaW5nIHRoZSAoMi42LjEwKSBkcml2ZXIKICAgICAgIHByb2dyYW1taW5nIEFQSSBhbmQga2VybmVsIGhhY2tpbmcgaW4gZ2VuZXJhbC4gIEF2YWlsYWJsZSB1bmRlciB0aGUKICAgICAgIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSAyLjAgbGljZW5zZS4KCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IERhdmlkIEEuIFJ1c2xpbmcuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL3Rsay90bGsuaHRtbAogICAgICAgS2V5d29yZHM6IGV2ZXJ5dGhpbmchLCBib29rLgogICAgICAgRGVzY3JpcHRpb246IE9uIGxpbmUsIDIwMCBwYWdlcyBib29rIGRlc2NyaWJpbmcgbW9zdCBhc3BlY3RzIG9mCiAgICAgICB0aGUgTGludXggS2VybmVsLiBQcm9iYWJseSwgdGhlIGZpcnN0IHJlZmVyZW5jZSBmb3IgYmVnaW5uZXJzLgogICAgICAgTG90cyBvZiBpbGx1c3RyYXRpb25zIGV4cGxhaW5pbmcgZGF0YSBzdHJ1Y3R1cmVzIHVzZSBhbmQKICAgICAgIHJlbGF0aW9uc2hpcHMgaW4gdGhlIHB1cmVzdCBSaWNoYXJkIFcuIFN0ZXZlbnMnIHN0eWxlLiBDb250ZW50czoKICAgICAgICIxLi1IYXJkd2FyZSBCYXNpY3MsIDIuLVNvZnR3YXJlIEJhc2ljcywgMy4tTWVtb3J5IE1hbmFnZW1lbnQsCiAgICAgICA0Li1Qcm9jZXNzZXMsIDUuLUludGVycHJvY2VzcyBDb21tdW5pY2F0aW9uIE1lY2hhbmlzbXMsIDYuLVBDSSwKICAgICAgIDcuLUludGVycnVwdHMgYW5kIEludGVycnVwdCBIYW5kbGluZywgOC4tRGV2aWNlIERyaXZlcnMsIDkuLVRoZQogICAgICAgRmlsZSBzeXN0ZW0sIDEwLi1OZXR3b3JrcywgMTEuLUtlcm5lbCBNZWNoYW5pc21zLCAxMi4tTW9kdWxlcywKICAgICAgIDEzLi1UaGUgTGludXggS2VybmVsIFNvdXJjZXMsIEEuLUxpbnV4IERhdGEgU3RydWN0dXJlcywgQi4tVGhlCiAgICAgICBBbHBoYSBBWFAgUHJvY2Vzc29yLCBDLi1Vc2VmdWwgV2ViIGFuZCBGVFAgU2l0ZXMsIEQuLVRoZSBHTlUKICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIEdsb3NzYXJ5Ii4gSW4gc2hvcnQ6IGEgbXVzdCBoYXZlLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwgSGFja2VycycgR3VpZGUiCiAgICAgICBBdXRob3I6IE1pY2hhZWwgSy5Kb2huc29uIGFuZCBvdGhlcnMuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL2toZy9IeXBlck5ld3MvZ2V0L2toZy5odG1sCiAgICAgICBLZXl3b3JkczogZXZlcnl0aGluZyEKICAgICAgIERlc2NyaXB0aW9uOiBObyBtb3JlIFBvc3RzY3JpcHQgYm9vay1saWtlIHZlcnNpb24uIE9ubHkgSFRNTCBub3cuCiAgICAgICBNYW55IHBlb3BsZSBoYXZlIGNvbnRyaWJ1dGVkLiBUaGUgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gd2ViCiAgICAgICBhdmFpbGFibGUgbWFpbGluZyBsaXN0cyBhcmNoaXZlcy4gWW91IGNhbiBmaW5kIHNvbWUgYXJ0aWNsZXMgYW5kCiAgICAgICB0aGVuIHNvbWUgbWFpbHMgYXNraW5nIHF1ZXN0aW9ucyBhYm91dCB0aGVtIGFuZC9vciBjb21wbGVtZW50aW5nCiAgICAgICBwcmV2aW91cyBjb250cmlidXRpb25zLiBBIGxpdHRsZSBiaXQgYW5hcmNoaWMgaW4gdGhpcyBhc3BlY3QsIGJ1dAogICAgICAgd2l0aCBzb21lIHZhbHVhYmxlIGluZm9ybWF0aW9uIGluIHNvbWUgY2FzZXMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQ29uY2VwdHVhbCBBcmNoaXRlY3R1cmUgb2YgdGhlIExpbnV4IEtlcm5lbCIKICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4uCiAgICAgICBVUkw6IGh0dHA6Ly9wbGcudXdhdGVybG9vLmNhL35pdGJvd21hbi9wYXBlcnMvQ1M3NDZHLWExLmh0bWwKICAgICAgIEtleXdvcmRzOiBjb25jZXB0dWFsIHNvZnR3YXJlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwKICAgICAgIHJldmVyc2UgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUuCiAgICAgICBEZXNjcmlwdGlvbjogQ29uY2VwdHVhbCBzb2Z0d2FyZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLiBWZXJ5IGRldGFpbGVkLiBHb29kCiAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQ29uY3JldGUgQXJjaGl0ZWN0dXJlIG9mIHRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IEl2YW4gVC4gQm93bWFuLCBTYWhlZW0gU2lkZGlxaSwgYW5kIE1leWVyIEMuIFRhbnVhbi4KICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9DUzc0NkctYTIuaHRtbAogICAgICAgS2V5d29yZHM6IGNvbmNyZXRlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwgcmV2ZXJzZQogICAgICAgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUsIGRlcGVuZGVuY2llcy4KICAgICAgIERlc2NyaXB0aW9uOiBDb25jcmV0ZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLiBWZXJ5IGRldGFpbGVkLiBHb29kCiAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuIFRoaXMgcGFwZXJzCiAgICAgICBmb2N1cyBvbiBsb3dlciBkZXRhaWxzIHRoYW4gaXRzIHByZWRlY2Vzc29yIChmaWxlcywgdmFyaWFibGVzLi4uKS4KICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBhcyBhIENhc2UgU3R1ZHk6IEl0cyBFeHRyYWN0ZWQgU29mdHdhcmUKICAgICAgIEFyY2hpdGVjdHVyZSIKICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4sIFJpY2hhcmQgQy4gSG9sdCBhbmQgTmVpbCBWLiBCcmV3c3Rlci4KICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9saW51eGNhc2UuaHRtbAogICAgICAgS2V5d29yZHM6IHNvZnR3YXJlIGFyY2hpdGVjdHVyZSwgYXJjaGl0ZWN0dXJlIHJlY292ZXJ5LAogICAgICAgcmVkb2N1bWVudGF0aW9uLgogICAgICAgRGVzY3JpcHRpb246IFBhcGVyIGFwcGVhcmVkIGF0IElDU0UnOTksIExvcyBBbmdlbGVzLCBNYXkgMTYtMjIsCiAgICAgICAxOTk5LiBBIG1peHR1cmUgb2YgdGhlIHByZXZpb3VzIHR3byBkb2N1bWVudHMgZnJvbSB0aGUgc2FtZQogICAgICAgYXV0aG9yLgogICAgICAgCiAgICAgKiBUaXRsZTogIk92ZXJ2aWV3IG9mIHRoZSBWaXJ0dWFsIEZpbGUgU3lzdGVtIgogICAgICAgQXV0aG9yOiBSaWNoYXJkIEdvb2NoLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC92ZnMudHh0CiAgICAgICBLZXl3b3JkczogVkZTLCBGaWxlIFN5c3RlbSwgbW91bnRpbmcgZmlsZXN5c3RlbXMsIG9wZW5pbmcgZmlsZXMsCiAgICAgICBkZW50cmllcywgZGNhY2hlLgogICAgICAgRGVzY3JpcHRpb246IEJyaWVmIGludHJvZHVjdGlvbiB0byB0aGUgTGludXggVmlydHVhbCBGaWxlIFN5c3RlbS4KICAgICAgIFdoYXQgaXMgaXQsIGhvdyBpdCB3b3Jrcywgb3BlcmF0aW9ucyB0YWtlbiB3aGVuIG9wZW5pbmcgYSBmaWxlIG9yCiAgICAgICBtb3VudGluZyBhIGZpbGUgc3lzdGVtIGFuZCBkZXNjcmlwdGlvbiBvZiBpbXBvcnRhbnQgZGF0YQogICAgICAgc3RydWN0dXJlcyBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIGVhY2ggb2YgdGhlaXIgZW50cmllcy4KICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgTGludXggUkFJRC0xLCA0LCA1IENvZGUiCiAgICAgICBBdXRob3I6IEluZ28gTW9sbmFyLCBHYWRpIE94bWFuIGFuZCBNaWd1ZWwgZGUgSWNhemEuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlNDQvMjM5MS5odG1sCiAgICAgICBLZXl3b3JkczogUkFJRCwgTUQgZHJpdmVyLgogICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0J3MKICAgICAgIGFic3RyYWN0OiAiQSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJBSUQtMSwKICAgICAgIFJBSUQtNCBhbmQgUkFJRC01IHBlcnNvbmFsaXRpZXMgb2YgdGhlIE1EIGRldmljZSBkcml2ZXIgaW4gdGhlCiAgICAgICBMaW51eCBrZXJuZWwsIHByb3ZpZGluZyB1c2VycyB3aXRoIGhpZ2ggcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmxlLAogICAgICAgc2Vjb25kYXJ5LXN0b3JhZ2UgY2FwYWJpbGl0eSB1c2luZyBzb2Z0d2FyZSIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiRHluYW1pYyBLZXJuZWxzOiBNb2R1bGFyaXplZCBEZXZpY2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlMjMvMTIxOS5odG1sCiAgICAgICBLZXl3b3JkczogZGV2aWNlIGRyaXZlciwgbW9kdWxlLCBsb2FkaW5nL3VubG9hZGluZyBtb2R1bGVzLAogICAgICAgYWxsb2NhdGluZyByZXNvdXJjZXMuCiAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXQncwogICAgICAgYWJzdHJhY3Q6ICJUaGlzIGlzIHRoZSBmaXJzdCBvZiBhIHNlcmllcyBvZiBmb3VyIGFydGljbGVzCiAgICAgICBjby1hdXRob3JlZCBieSBBbGVzc2FuZHJvIFJ1YmluaSBhbmQgR2VvcmcgWmV6Y2h3aXR6IHdoaWNoIHByZXNlbnQKICAgICAgIGEgcHJhY3RpY2FsIGFwcHJvYWNoIHRvIHdyaXRpbmcgTGludXggZGV2aWNlIGRyaXZlcnMgYXMga2VybmVsCiAgICAgICBsb2FkYWJsZSBtb2R1bGVzLiBUaGlzIGluc3RhbGxtZW50IHByZXNlbnRzIGFuIGludHJvZHVjdGlvbiB0byB0aGUKICAgICAgIHRvcGljLCBwcmVwYXJpbmcgdGhlIHJlYWRlciB0byB1bmRlcnN0YW5kIG5leHQgbW9udGgncwogICAgICAgaW5zdGFsbG1lbnQiLgogICAgICAgCiAgICAgKiBUaXRsZTogIkR5bmFtaWMgS2VybmVsczogRGlzY292ZXJ5IgogICAgICAgQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaS4KICAgICAgIFVSTDogaHR0cDovL3d3dzIubGludXhqb3VybmFsLmNvbS9sai1pc3N1ZXMvaXNzdWUyNC8xMjIwLmh0bWwKICAgICAgIEtleXdvcmRzOiBjaGFyYWN0ZXIgZHJpdmVyLCBpbml0X21vZHVsZSwgY2xlYW5fdXAgbW9kdWxlLAogICAgICAgYXV0b2RldGVjdGlvbiwgbWF5b3IgbnVtYmVyLCBtaW5vciBudW1iZXIsIGZpbGUgb3BlcmF0aW9ucywKICAgICAgIG9wZW4oKSwgY2xvc2UoKS4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIgYXJ0aWNsZS4gSGVyZSBpcyBpdCdzCiAgICAgICBhYnN0cmFjdDogIlRoaXMgYXJ0aWNsZSwgdGhlIHNlY29uZCBvZiBmb3VyLCBpbnRyb2R1Y2VzIHBhcnQgb2YKICAgICAgIHRoZSBhY3R1YWwgY29kZSB0byBjcmVhdGUgY3VzdG9tIG1vZHVsZSBpbXBsZW1lbnRpbmcgYSBjaGFyYWN0ZXIKICAgICAgIGRldmljZSBkcml2ZXIuIEl0IGRlc2NyaWJlcyB0aGUgY29kZSBmb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZAogICAgICAgY2xlYW51cCwgYXMgd2VsbCBhcyB0aGUgb3BlbigpIGFuZCBjbG9zZSgpIHN5c3RlbSBjYWxscyIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIERldmlsJ3MgaW4gdGhlIERldGFpbHMiCiAgICAgICBBdXRob3I6IEdlb3JnIHYuIFplenNjaHdpdHogYW5kIEFsZXNzYW5kcm8gUnViaW5pLgogICAgICAgVVJMOiBodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTI1LzEyMjEuaHRtbAogICAgICAgS2V5d29yZHM6IHJlYWQoKSwgd3JpdGUoKSwgc2VsZWN0KCksIGlvY3RsKCksIGJsb2NraW5nL25vbgogICAgICAgYmxvY2tpbmcgbW9kZSwgaW50ZXJydXB0IGhhbmRsZXIuCiAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXQncwogICAgICAgYWJzdHJhY3Q6ICJUaGlzIGFydGljbGUsIHRoZSB0aGlyZCBvZiBmb3VyIG9uIHdyaXRpbmcgY2hhcmFjdGVyCiAgICAgICBkZXZpY2UgZHJpdmVycywgaW50cm9kdWNlcyBjb25jZXB0cyBvZiByZWFkaW5nLCB3cml0aW5nLCBhbmQgdXNpbmcKICAgICAgIGlvY3RsLWNhbGxzIi4KICAgICAgIAogICAgICogVGl0bGU6ICJEaXNzZWN0aW5nIEludGVycnVwdHMgYW5kIEJyb3dzaW5nIERNQSIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgYW5kIEdlb3JnIHYuIFplenNjaHdpdHouCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlMjYvMTIyMi5odG1sCiAgICAgICBLZXl3b3JkczogaW50ZXJydXB0cywgaXJxcywgRE1BLCBib3R0b20gaGFsdmVzLCB0YXNrIHF1ZXVlcy4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIgYXJ0aWNsZS4gSGVyZSBpcyBpdCdzCiAgICAgICBhYnN0cmFjdDogIlRoaXMgaXMgdGhlIGZvdXJ0aCBpbiBhIHNlcmllcyBvZiBhcnRpY2xlcyBhYm91dAogICAgICAgd3JpdGluZyBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlcnMgYXMgbG9hZGFibGUga2VybmVsIG1vZHVsZXMuIFRoaXMKICAgICAgIG1vbnRoLCB3ZSBmdXJ0aGVyIGludmVzdGlnYXRlIHRoZSBmaWVsZCBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcuCiAgICAgICBUaG91Z2ggaXQgaXMgY29uY2VwdHVhbGx5IHNpbXBsZSwgcHJhY3RpY2FsIGxpbWl0YXRpb25zIGFuZAogICAgICAgY29uc3RyYWludHMgbWFrZSB0aGlzIGFuIGBgaW50ZXJlc3RpbmcnJyBwYXJ0IG9mIGRldmljZSBkcml2ZXIKICAgICAgIHdyaXRpbmcsIGFuZCBzZXZlcmFsIGRpZmZlcmVudCBmYWNpbGl0aWVzIGhhdmUgYmVlbiBwcm92aWRlZCBmb3IKICAgICAgIGRpZmZlcmVudCBzaXR1YXRpb25zLiBXZSBhbHNvIGludmVzdGlnYXRlIHRoZSBjb21wbGV4IHRvcGljIG9mCiAgICAgICBETUEiLgogICAgICAgCiAgICAgKiBUaXRsZTogIkRldmljZSBEcml2ZXJzIENvbmNsdWRlZCIKICAgICAgIEF1dGhvcjogR2Vvcmcgdi4gWmV6c2Nod2l0ei4KICAgICAgIFVSTDogaHR0cDovL3d3dzIubGludXhqb3VybmFsLmNvbS9sai1pc3N1ZXMvaXNzdWUyOC8xMjg3Lmh0bWwKICAgICAgIEtleXdvcmRzOiBhZGRyZXNzIHNwYWNlcywgcGFnZXMsIHBhZ2luYXRpb24sIHBhZ2UgbWFuYWdlbWVudCwKICAgICAgIGRlbWFuZCBsb2FkaW5nLCBzd2FwcGluZywgbWVtb3J5IHByb3RlY3Rpb24sIG1lbW9yeSBtYXBwaW5nLCBtbWFwLAogICAgICAgdmlydHVhbCBtZW1vcnkgYXJlYXMgKFZNQXMpLCB2cmVtYXAsIFBDSS4KICAgICAgIERlc2NyaXB0aW9uOiBGaW5hbGx5LCB0aGUgYWJvdmUgdHVybmVkIG91dCBpbnRvIGEgZml2ZSBhcnRpY2xlcwogICAgICAgc2VyaWVzLiBUaGlzIGxhdGVzdCBvbmUncyBpbnRyb2R1Y3Rpb24gcmVhZHM6ICJUaGlzIGlzIHRoZSBsYXN0IG9mCiAgICAgICBmaXZlIGFydGljbGVzIGFib3V0IGNoYXJhY3RlciBkZXZpY2UgZHJpdmVycy4gSW4gdGhpcyBmaW5hbAogICAgICAgc2VjdGlvbiwgR2VvcmcgZGVhbHMgd2l0aCBtZW1vcnkgbWFwcGluZyBkZXZpY2VzLCBiZWdpbm5pbmcgd2l0aAogICAgICAgYW4gb3ZlcmFsbCBkZXNjcmlwdGlvbiBvZiB0aGUgTGludXggbWVtb3J5IG1hbmFnZW1lbnQgY29uY2VwdHMiLgogICAgICAgCiAgICAgKiBUaXRsZTogIk5ldHdvcmsgQnVmZmVycyBBbmQgTWVtb3J5IE1hbmFnZW1lbnQiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTMwLzEzMTIuaHRtbAogICAgICAgS2V5d29yZHM6IHNrX2J1ZmZzLCBuZXR3b3JrIGRldmljZXMsIHByb3RvY29sL2xpbmsgbGF5ZXIKICAgICAgIHZhcmlhYmxlcywgbmV0d29yayBkZXZpY2VzIGZsYWdzLCB0cmFuc21pdCwgcmVjZWl2ZSwKICAgICAgIGNvbmZpZ3VyYXRpb24sIG11bHRpY2FzdC4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIuIEhlcmUgaXMgdGhlIGFic3RyYWN0OgogICAgICAgIldyaXRpbmcgYSBuZXR3b3JrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IGlzIGZ1bmRhbWVudGFsbHkKICAgICAgIHNpbXBsZS0tLW1vc3Qgb2YgdGhlIGNvbXBsZXhpdHkgKG90aGVyIHRoYW4gdGFsa2luZyB0byB0aGUKICAgICAgIGhhcmR3YXJlKSBpbnZvbHZlcyBtYW5hZ2luZyBuZXR3b3JrIHBhY2tldHMgaW4gbWVtb3J5Ii4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIExpbnV4IERldmljZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBNaWNoYWVsIEsuIEpvaG5zb24uCiAgICAgICBVUkw6IGh0dHA6Ly91c2Vycy5ldml0ZWNoLmZpL350ay9ydG9zL3dyaXRpbmdfbGludXhfZGV2aWNlX2QuaHRtbAogICAgICAgS2V5d29yZHM6IGZpbGVzLCBWRlMsIGZpbGUgb3BlcmF0aW9ucywga2VybmVsIGludGVyZmFjZSwgY2hhcmFjdGVyCiAgICAgICB2cyBibG9jayBkZXZpY2VzLCBJL08gYWNjZXNzLCBoYXJkd2FyZSBpbnRlcnJ1cHRzLCBETUEsIGFjY2VzcyB0bwogICAgICAgdXNlciBtZW1vcnksIG1lbW9yeSBhbGxvY2F0aW9uLCB0aW1lcnMuCiAgICAgICBEZXNjcmlwdGlvbjogSW50cm9kdWN0b3J5IDUwLW1pbnV0ZXMgKHNpYykgdHV0b3JpYWwgb24gd3JpdGluZwogICAgICAgZGV2aWNlIGRyaXZlcnMuIDEyIHBhZ2VzIHdyaXR0ZW4gYnkgdGhlIHNhbWUgYXV0aG9yIG9mIHRoZSAiS2VybmVsCiAgICAgICBIYWNrZXJzJyBHdWlkZSIgd2hpY2ggZ2l2ZSBhIHZlcnkgZ29vZCBvdmVydmlldyBvZiB0aGUgdG9waWMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIFZlbnVzIGtlcm5lbCBpbnRlcmZhY2UiCiAgICAgICBBdXRob3I6IFBldGVyIEouIEJyYWFtLgogICAgICAgVVJMOgogICAgICAgaHR0cDovL3d3dy5jb2RhLmNzLmNtdS5lZHUvZG9jL2h0bWwva2VybmVsLXZlbnVzLXByb3RvY29sLmh0bWwKICAgICAgIEtleXdvcmRzOiBjb2RhLCBmaWxlc3lzdGVtLCB2ZW51cywgY2FjaGUgbWFuYWdlci4KICAgICAgIERlc2NyaXB0aW9uOiAiVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbgogICAgICAgVmVudXMgYW5kIGtlcm5lbCBsZXZlbCBmaWxlIHN5c3RlbSBjb2RlIG5lZWRlZCBmb3IgdGhlIG9wZXJhdGlvbgogICAgICAgb2YgdGhlIENvZGEgZmlsZXN5c3RlbS4gVGhpcyB2ZXJzaW9uIGRvY3VtZW50IGlzIG1lYW50IHRvIGRlc2NyaWJlCiAgICAgICB0aGUgY3VycmVudCBpbnRlcmZhY2UgKHZlcnNpb24gMS4wKSBhcyB3ZWxsIGFzIGltcHJvdmVtZW50cyB3ZQogICAgICAgZW52aXNhZ2UiLgogICAgICAgCiAgICAgKiBUaXRsZTogIlByb2dyYW1taW5nIFBDSS1EZXZpY2VzIHVuZGVyIExpbnV4IgogICAgICAgQXV0aG9yOiBDbGF1cyBTY2hyb2V0ZXIuCiAgICAgICBVUkw6CiAgICAgICBmdHA6Ly9mdHAubGxwLmZ1LWJlcmxpbi5kZS9wdWIvbGludXgvTElOVVgtTEFCL3doaXRlcGFwZXJzL3BjaXAucHMKICAgICAgIC5negogICAgICAgS2V5d29yZHM6IFBDSSwgZGV2aWNlLCBidXNtYXN0ZXJpbmcuCiAgICAgICBEZXNjcmlwdGlvbjogNiBwYWdlcyB0dXRvcmlhbCBvbiBQQ0kgcHJvZ3JhbW1pbmcgdW5kZXIgTGludXguCiAgICAgICBHaXZlcyB0aGUgYmFzaWMgY29uY2VwdHMgb24gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgUENJIHN1YnN5c3RlbSwKICAgICAgIGFzIGxvbmcgYXMgYmFzaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdG8gcmVhZC93cml0ZSB0aGUgZGV2aWNlcwogICAgICAgYW5kIHBlcmZvcm0gYnVzbWFzdGVyaW5nLgogICAgICAgCiAgICAgKiBUaXRsZTogIldyaXRpbmcgQ2hhcmFjdGVyIERldmljZSBEcml2ZXIgZm9yIExpbnV4IgogICAgICAgQXV0aG9yOiBSLiBCYXJ1Y2ggYW5kIEMuIFNjaHJvZXRlci4KICAgICAgIFVSTDoKICAgICAgIGZ0cDovL2Z0cC5sbHAuZnUtYmVybGluLmRlL3B1Yi9saW51eC9MSU5VWC1MQUIvd2hpdGVwYXBlcnMvZHJpdmVycwogICAgICAgLnBzLmd6CiAgICAgICBLZXl3b3JkczogY2hhcmFjdGVyIGRldmljZSBkcml2ZXJzLCBJL08sIHNpZ25hbHMsIERNQSwgYWNjZXNzaW5nCiAgICAgICBwb3J0cyBpbiB1c2VyIHNwYWNlLCBrZXJuZWwgZW52aXJvbm1lbnQuCiAgICAgICBEZXNjcmlwdGlvbjogNjggcGFnZXMgcGFwZXIgb24gd3JpdGluZyBjaGFyYWN0ZXIgZHJpdmVycy4gQSBsaXR0bGUKICAgICAgIGJpdCBvbGQgKDEuOTkzLCAxLjk5NCkgYWx0aG91Z2ggc3RpbGwgdXNlZnVsLgogICAgICAgCiAgICAgKiBUaXRsZTogIkRlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY29uZCBFeHRlbmRlZAogICAgICAgRmlsZXN5c3RlbSIKICAgICAgIEF1dGhvcjogUulteSBDYXJkLCBUaGVvZG9yZSBUcydvLCBTdGVwaGVuIFR3ZWVkaWUuCiAgICAgICBVUkw6IGh0dHA6Ly93ZWIubWl0LmVkdS90eXRzby93d3cvbGludXgvZXh0MmludHJvLmh0bWwKICAgICAgIEtleXdvcmRzOiBleHQyLCBsaW51eCBmcyBoaXN0b3J5LCBpbm9kZSwgZGlyZWN0b3J5LCBsaW5rLCBkZXZpY2VzLAogICAgICAgVkZTLCBwaHlzaWNhbCBzdHJ1Y3R1cmUsIHBlcmZvcm1hbmNlLCBiZW5jaG1hcmtzLCBleHQyZnMgbGlicmFyeSwKICAgICAgIGV4dDJmcyB0b29scywgZTJmc2NrLgogICAgICAgRGVzY3JpcHRpb246IFBhcGVyIHdyaXR0ZW4gYnkgdGhyZWUgb2YgdGhlIHRvcCBleHQyIGhhY2tlcnMuCiAgICAgICBDb3ZlcnMgTGludXggZmlsZXN5c3RlbXMgaGlzdG9yeSwgZXh0MiBtb3RpdmF0aW9uLCBleHQyIGZlYXR1cmVzLAogICAgICAgZGVzaWduLCBwaHlzaWNhbCBzdHJ1Y3R1cmUgb24gZGlzaywgcGVyZm9ybWFuY2UsIGJlbmNobWFya3MsCiAgICAgICBlMmZzY2sncyBwYXNzZXMgZGVzY3JpcHRpb24uLi4gQSBtdXN0IHJlYWQhCiAgICAgICBOb3RlczogVGhpcyBwYXBlciB3YXMgZmlyc3QgcHVibGlzaGVkIGluIHRoZSBQcm9jZWVkaW5ncyBvZiB0aGUKICAgICAgIEZpcnN0IER1dGNoIEludGVybmF0aW9uYWwgU3ltcG9zaXVtIG9uIExpbnV4LCBJU0JOIDkwLTM2Ny0wMzg1LTkuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQW5hbHlzaXMgb2YgdGhlIEV4dDJmcyBzdHJ1Y3R1cmUiCiAgICAgICBBdXRob3I6IExvdWlzLURvbWluaXF1ZSBEdWJlYXUuCiAgICAgICBVUkw6IGh0dHA6Ly9zdGVwLnBvbHltdGwuY2EvfmxkZC9leHQyZnMvZXh0MmZzX3RvYy5odG1sCiAgICAgICBLZXl3b3JkczogZXh0MiwgZmlsZXN5c3RlbSwgZXh0MmZzLgogICAgICAgRGVzY3JpcHRpb246IERlc2NyaXB0aW9uIG9mIGV4dDIncyBibG9ja3MsIGRpcmVjdG9yaWVzLCBpbm9kZXMsCiAgICAgICBiaXRtYXBzLCBpbnZhcmlhbnRzLi4uCiAgICAgICAKICAgICAqIFRpdGxlOiAiSm91cm5hbGluZyB0aGUgTGludXggZXh0MmZzIEZpbGVzeXN0ZW0iCiAgICAgICBBdXRob3I6IFN0ZXBoZW4gQy4gVHdlZWRpZS4KICAgICAgIFVSTDoKICAgICAgIGZ0cDovL2Z0cC51ay5saW51eC5vcmcvcHViL2xpbnV4L3NjdC9mcy9qZnMvam91cm5hbC1kZXNpZ24ucHMuZ3oKICAgICAgIEtleXdvcmRzOiBleHQzLCBqb3VybmFsaW5nLgogICAgICAgRGVzY3JpcHRpb246IEV4Y2VsbGVudCA4LXBhZ2VzIHBhcGVyIGV4cGxhaW5pbmcgdGhlIGpvdXJuYWxpbmcKICAgICAgIGNhcGFiaWxpdGllcyBhZGRlZCB0byBleHQyIGJ5IHRoZSBhdXRob3IsIHNob3dpbmcgZGlmZmVyZW50CiAgICAgICBwcm9ibGVtcyBmYWNlZCBhbmQgdGhlIGFsdGVybmF0aXZlcyBjaG9zZW4uCiAgICAgICAKICAgICAqIFRpdGxlOiAiS2VybmVsIEFQSSBjaGFuZ2VzIGZyb20gMi4wIHRvIDIuMiIKICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvcG9ydGluZy10by0yLjIuaHRtbAogICAgICAgS2V5d29yZHM6IDIuMiwgY2hhbmdlcy4KICAgICAgIERlc2NyaXB0aW9uOiBLZXJuZWwgZnVuY3Rpb25zL3N0cnVjdHVyZXMvdmFyaWFibGVzIHdoaWNoIGNoYW5nZWQKICAgICAgIGZyb20gMi4wLnggdG8gMi4yLnguCiAgICAgICAKICAgICAqIFRpdGxlOiAiS2VybmVsIEFQSSBjaGFuZ2VzIGZyb20gMi4yIHRvIDIuNCIKICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvcG9ydGluZy10by0yLjQuaHRtbAogICAgICAgS2V5d29yZHM6IDIuNCwgY2hhbmdlcy4KICAgICAgIERlc2NyaXB0aW9uOiBLZXJuZWwgZnVuY3Rpb25zL3N0cnVjdHVyZXMvdmFyaWFibGVzIHdoaWNoIGNoYW5nZWQKICAgICAgIGZyb20gMi4yLnggdG8gMi40LnguCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIE1vZHVsZSBQcm9ncmFtbWluZyBHdWlkZSIKICAgICAgIEF1dGhvcjogT3JpIFBvbWVyYW50ei4KICAgICAgIFVSTDogaHR0cDovL3RsZHAub3JnL0xEUC9sa21wZy8yLjYvaHRtbC9pbmRleC5odG1sCiAgICAgICBLZXl3b3JkczogbW9kdWxlcywgR1BMIGJvb2ssIC9wcm9jLCBpb2N0bHMsIHN5c3RlbSBjYWxscywKICAgICAgIGludGVycnVwdCBoYW5kbGVycyAuCiAgICAgICBEZXNjcmlwdGlvbjogVmVyeSBuaWNlIDkyIHBhZ2VzIEdQTCBib29rIG9uIHRoZSB0b3BpYyBvZiBtb2R1bGVzCiAgICAgICBwcm9ncmFtbWluZy4gTG90cyBvZiBleGFtcGxlcy4KICAgICAgIAogICAgICogVGl0bGU6ICJEZXZpY2UgRmlsZSBTeXN0ZW0gKGRldmZzKSBPdmVydmlldyIKICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5hdG5mLmNzaXJvLmF1L3Blb3BsZS9yZ29vY2gvbGludXgvZG9jcy9kZXZmcy5odG1sCiAgICAgICBLZXl3b3JkczogZmlsZXN5c3RlbSwgL2RldiwgZGV2ZnMsIGR5bmFtaWMgZGV2aWNlcywgbWFqb3IvbWlub3IKICAgICAgIGFsbG9jYXRpb24sIGRldmljZSBtYW5hZ2VtZW50LgogICAgICAgRGVzY3JpcHRpb246IERvY3VtZW50IGRlc2NyaWJpbmcgUmljaGFyZCBHb29jaCdzIGNvbnRyb3ZlcnNpYWwKICAgICAgIGRldmZzLCB3aGljaCBhbGxvd3MgZm9yIGR5bmFtaWMgZGV2aWNlcywgb25seSBzaG93cyBwcmVzZW50CiAgICAgICBkZXZpY2VzIGluIC9kZXYsIGdldHMgcmlkIG9mIG1ham9yL21pbm9yIG51bWJlcnMgYWxsb2NhdGlvbgogICAgICAgcHJvYmxlbXMsIGFuZCBhbGxvd3MgZm9yIGh1bmRyZWRzIG9mIGlkZW50aWNhbCBkZXZpY2VzICh3aGljaCBzb21lCiAgICAgICBVU0Igc3lzdGVtcyBtaWdodCBkZW1hbmQgc29vbikuCiAgICAgICAKICAgICAqIFRpdGxlOiAiSS9PIEV2ZW50IEhhbmRsaW5nIFVuZGVyIExpbnV4IgogICAgICAgQXV0aG9yOiBSaWNoYXJkIEdvb2NoLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC9kb2NzL2lvLWV2ZW50cy5odG1sCiAgICAgICBLZXl3b3JkczogSU8sIEkvTywgc2VsZWN0KDIpLCBwb2xsKDIpLCBGRHMsIGFpb19yZWFkKDIpLCByZWFkaW5lc3MKICAgICAgIGV2ZW50IHF1ZXVlcy4KICAgICAgIERlc2NyaXB0aW9uOiBGcm9tIHRoZSBJbnRyb2R1Y3Rpb246ICJJL08gRXZlbnQgaGFuZGxpbmcgaXMgYWJvdXQKICAgICAgIGhvdyB5b3VyIE9wZXJhdGluZyBTeXN0ZW0gYWxsb3dzIHlvdSB0byBtYW5hZ2UgYSBsYXJnZSBudW1iZXIgb2YKICAgICAgIG9wZW4gZmlsZXMgKGZpbGUgZGVzY3JpcHRvcnMgaW4gVU5JWC9QT1NJWCwgb3IgRkRzKSBpbiB5b3VyCiAgICAgICBhcHBsaWNhdGlvbi4gWW91IHdhbnQgdGhlIE9TIHRvIG5vdGlmeSB5b3Ugd2hlbiBGRHMgYmVjb21lIGFjdGl2ZQogICAgICAgKGhhdmUgZGF0YSByZWFkeSB0byBiZSByZWFkIG9yIGFyZSByZWFkeSBmb3Igd3JpdGluZykuIElkZWFsbHkgeW91CiAgICAgICB3YW50IGEgbWVjaGFuaXNtIHRoYXQgaXMgc2NhbGFibGUuIFRoaXMgbWVhbnMgYSBsYXJnZSBudW1iZXIgb2YKICAgICAgIGluYWN0aXZlIEZEcyBjb3N0IHZlcnkgbGl0dGxlIGluIG1lbW9yeSBhbmQgQ1BVIHRpbWUgdG8gbWFuYWdlIi4KICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgS2VybmVsIEhhY2tpbmcgSE9XVE8iCiAgICAgICBBdXRob3I6IFZhcmlvdXMgVGFsZW50ZWQgUGVvcGxlLCBhbmQgUnVzdHkuCiAgICAgICBMb2NhdGlvbjogaW4ga2VybmVsIHRyZWUsIERvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtaGFja2luZy8KICAgICAgIChtdXN0IGJlIGJ1aWx0IGFzICJtYWtlIHtodG1sZG9jcyB8IHBzZG9jcyB8IHBkZmRvY3N9KQogICAgICAgS2V5d29yZHM6IEhPV1RPLCBrZXJuZWwgY29udGV4dHMsIGRlYWRsb2NrLCBsb2NraW5nLCBtb2R1bGVzLAogICAgICAgc3ltYm9scywgcmV0dXJuIGNvbnZlbnRpb25zLgogICAgICAgRGVzY3JpcHRpb246IEZyb20gdGhlIEludHJvZHVjdGlvbjogIlBsZWFzZSB1bmRlcnN0YW5kIHRoYXQgSQogICAgICAgbmV2ZXIgd2FudGVkIHRvIHdyaXRlIHRoaXMgZG9jdW1lbnQsIGJlaW5nIGdyb3NzbHkgdW5kZXJxdWFsaWZpZWQsCiAgICAgICBidXQgSSBhbHdheXMgd2FudGVkIHRvIHJlYWQgaXQsIGFuZCB0aGlzIHdhcyB0aGUgb25seSB3YXkuIEkKICAgICAgIHNpbXBseSBleHBsYWluIHNvbWUgYmVzdCBwcmFjdGljZXMsIGFuZCBnaXZlIHJlYWRpbmcgZW50cnktcG9pbnRzCiAgICAgICBpbnRvIHRoZSBrZXJuZWwgc291cmNlcy4gSSBhdm9pZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzOiB0aGF0J3MKICAgICAgIHdoYXQgdGhlIGNvZGUgaXMgZm9yLCBhbmQgSSBpZ25vcmUgd2hvbGUgdHJhY3RzIG9mIHVzZWZ1bAogICAgICAgcm91dGluZXMuIFRoaXMgZG9jdW1lbnQgYXNzdW1lcyBmYW1pbGlhcml0eSB3aXRoIEMsIGFuZCBhbgogICAgICAgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBrZXJuZWwgaXMsIGFuZCBob3cgaXQgaXMgdXNlZC4gSXQgd2FzCiAgICAgICBvcmlnaW5hbGx5IHdyaXR0ZW4gZm9yIHRoZSAyLjMga2VybmVscywgYnV0IG5lYXJseSBhbGwgb2YgaXQKICAgICAgIGFwcGxpZXMgdG8gMi4yIHRvbzsgMi4wIGlzIHNsaWdodGx5IGRpZmZlcmVudCIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiV3JpdGluZyBhbiBBTFNBIERyaXZlciIKICAgICAgIEF1dGhvcjogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgogICAgICAgVVJMOiBodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvfml3YWkvd3JpdGluZy1hbi1hbHNhLWRyaXZlci9pbmRleC5odG1sCiAgICAgICBLZXl3b3JkczogQUxTQSwgc291bmQsIHNvdW5kY2FyZCwgZHJpdmVyLCBsb3dsZXZlbCwgaGFyZHdhcmUuCiAgICAgICBEZXNjcmlwdGlvbjogQWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlIGZvciBkZXZlbG9wZXJzLAogICAgICAgYm90aCBhdCBrZXJuZWwgYW5kIHVzZXItbGV2ZWwgc2lkZXMuIEFMU0EgaXMgdGhlIExpbnV4IGtlcm5lbAogICAgICAgc291bmQgYXJjaGl0ZWN0dXJlIGluIHRoZSAyLjYga2VybmVsIHZlcnNpb24uCiAgICAgICAKICAgICAqIFRpdGxlOiAiUHJvZ3JhbW1pbmcgR3VpZGUgZm9yIExpbnV4IFVTQiBEZXZpY2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogRGV0bGVmIEZsaWVnbC4KICAgICAgIFVSTDogaHR0cDovL3VzYi5pbi50dW0uZGUvdXNiZG9jLwogICAgICAgS2V5d29yZHM6IFVTQiwgdW5pdmVyc2FsIHNlcmlhbCBidXMuCiAgICAgICBEZXNjcmlwdGlvbjogQSBtdXN0LXJlYWQuIEZyb20gdGhlIFByZWZhY2U6ICJUaGlzIGRvY3VtZW50IHNob3VsZAogICAgICAgZ2l2ZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgVVNCCiAgICAgICBzdWJzeXN0ZW0gYW5kIGl0cyBBUEkgZm9yIFVTQiBkZXZpY2UgZHJpdmVycy4gVGhlIGZpcnN0IHNlY3Rpb24KICAgICAgIHdpbGwgZGVhbCB3aXRoIHRoZSBiYXNpY3Mgb2YgVVNCIGRldmljZXMuIFlvdSB3aWxsIGxlYXJuIGFib3V0CiAgICAgICBkaWZmZXJlbnQgdHlwZXMgb2YgZGV2aWNlcyBhbmQgdGhlaXIgcHJvcGVydGllcy4gR29pbmcgaW50byBkZXRhaWwKICAgICAgIHlvdSB3aWxsIHNlZSBob3cgVVNCIGRldmljZXMgY29tbXVuaWNhdGUgb24gdGhlIGJ1cy4gVGhlIHNlY29uZAogICAgICAgc2VjdGlvbiBnaXZlcyBhbiBvdmVydmlldyBvZiB0aGUgTGludXggVVNCIHN1YnN5c3RlbSBbMl0gYW5kIHRoZQogICAgICAgZGV2aWNlIGRyaXZlciBmcmFtZXdvcmsuIFRoZW4gdGhlIEFQSSBhbmQgaXRzIGRhdGEgc3RydWN0dXJlcyB3aWxsCiAgICAgICBiZSBleHBsYWluZWQgc3RlcCBieSBzdGVwLiBUaGUgbGFzdCBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQKICAgICAgIGNvbnRhaW5zIGEgcmVmZXJlbmNlIG9mIGFsbCBBUEkgY2FsbHMgYW5kIHRoZWlyIHJldHVybiBjb2RlcyIuCiAgICAgICBOb3RlczogQmV3YXJlOiB0aGUgbWFpbiBwYWdlIHN0YXRlczogIlRoaXMgZG9jdW1lbnQgbWF5IG5vdCBiZQogICAgICAgcHVibGlzaGVkLCBwcmludGVkIG9yIHVzZWQgaW4gZXhjZXJwdHMgd2l0aG91dCBleHBsaWNpdCBwZXJtaXNzaW9uCiAgICAgICBvZiB0aGUgYXV0aG9yIi4gRm9ydHVuYXRlbHksIGl0IG1heSBzdGlsbCBiZSByZWFkLi4uCiAgICAgICAKICAgICAqIFRpdGxlOiAiVG91ciBPZiB0aGUgTGludXggS2VybmVsIFNvdXJjZSIKICAgICAgIEF1dGhvcjogVmlqbyBDaGVyaWFuLgogICAgICAgVVJMOiBodHRwOi8vd3d3Lmdlb2NpdGllcy5jb20vdmlqb2MvdG9sa3MvdG9sa3MuaHRtbAogICAgICAgS2V5d29yZHM6IC4KICAgICAgIERlc2NyaXB0aW9uOiBBIGNsYXNzaWMgb2YgdGhpcyBwYWdlISBXYXMgbG9zdCBmb3IgYSB3aGlsZSBhbmQgaXMKICAgICAgIGJhY2sgYWdhaW4uIFRoYW5rcyBWaWpvISBUT0xLUzogdGhlIG5hbWUgc2F5cyBpdCBhbGwuIEEgdG91ciBvZgogICAgICAgdGhlIHNvdXJjZXMsIGRlc2NyaWJpbmcgZGlyZWN0b3JpZXMsIGZpbGVzLCB2YXJpYWJsZXMsIGRhdGEKICAgICAgIHN0cnVjdHVyZXMuLi4gSXQgY292ZXJzIGdlbmVyYWwgc3R1ZmYsIGRldmljZSBkcml2ZXJzLAogICAgICAgZmlsZXN5c3RlbXMsIElQQyBhbmQgTmV0d29ya2luZyBDb2RlLgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBNYWlsaW5nIExpc3QgR2xvc3NhcnkiCiAgICAgICBBdXRob3I6IHZhcmlvdXMKICAgICAgIFVSTDogaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnL2dsb3NzYXJ5LwogICAgICAgS2V5d29yZHM6IGdsb3NzYXJ5LCB0ZXJtcywgbGludXgta2VybmVsLgogICAgICAgRGVzY3JpcHRpb246IEZyb20gdGhlIGludHJvZHVjdGlvbjogIlRoaXMgZ2xvc3NhcnkgaXMgaW50ZW5kZWQgYXMKICAgICAgIGEgYnJpZWYgZGVzY3JpcHRpb24gb2Ygc29tZSBvZiB0aGUgYWNyb255bXMgYW5kIHRlcm1zIHlvdSBtYXkgaGVhcgogICAgICAgZHVyaW5nIGRpc2N1c3Npb24gb2YgdGhlIExpbnV4IGtlcm5lbCIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIExvY2tpbmcgSE9XVE8iCiAgICAgICBBdXRob3I6IFZhcmlvdXMgVGFsZW50ZWQgUGVvcGxlLCBhbmQgUnVzdHkuCiAgICAgICBMb2NhdGlvbjogaW4ga2VybmVsIHRyZWUsIERvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtbG9ja2luZy8KICAgICAgIChtdXN0IGJlIGJ1aWx0IGFzICJtYWtlIHtodG1sZG9jcyB8IHBzZG9jcyB8IHBkZmRvY3N9KQogICAgICAgS2V5d29yZHM6IGxvY2tzLCBsb2NraW5nLCBzcGlubG9jaywgc2VtYXBob3JlLCBhdG9taWMsIHJhY2UKICAgICAgIGNvbmRpdGlvbiwgYm90dG9tIGhhbHZlcywgdGFza2xldHMsIHNvZnRpcnFzLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbDogZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUKICAgICAgIGxvY2tpbmcgc3lzdGVtIGluIHRoZSBMaW51eCBLZXJuZWwgZWl0aGVyIGluIHVuaXByb2Nlc3NvciBvciBTTVAKICAgICAgIHN5c3RlbXMuCiAgICAgICBOb3RlczogIkl0IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gZm9yIHRoZSBsYXRlciAoPjIuMy40NykgMi4zCiAgICAgICBrZXJuZWxzLCBidXQgbW9zdCBvZiBpdCBhcHBsaWVzIHRvIDIuMiB0b287IDIuMCBpcyBzbGlnaHRseQogICAgICAgZGlmZmVyZW50Ii4gRnJlZWx5IHJlZGlzdHJpYnV0YWJsZSB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiB0aGUgR05VCiAgICAgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgogICAgICAgCiAgICAgKiBUaXRsZTogIlBvcnRpbmcgTGludXggMi4wIERyaXZlcnMgVG8gTGludXggMi4yOiBDaGFuZ2VzIGFuZCBOZXcKICAgICAgIEZlYXR1cmVzICIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTA1L2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IHBvcnRzLCBwb3J0aW5nLgogICAgICAgRGVzY3JpcHRpb246IEFydGljbGUgZnJvbSBMaW51eCBNYWdhemluZSBvbiBwb3J0aW5nIGZyb20gMi4wIHRvCiAgICAgICAyLjIga2VybmVscy4KICAgICAgIAogICAgICogVGl0bGU6ICJQb3J0aW5nIERldmljZSBEcml2ZXJzIFRvIExpbnV4IDIuMjogcGFydCBJSSIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTA2L2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IHBvcnRzLCBwb3J0aW5nLgogICAgICAgRGVzY3JpcHRpb246IFNlY29uZCBwYXJ0IG9uIHBvcnRpbmcgZnJvbSAyLjAgdG8gMi4yIGtlcm5lbHMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiSG93IFRvIE1ha2UgU3VyZSBZb3VyIERyaXZlciBXaWxsIFdvcmsgT24gVGhlIFBvd2VyCiAgICAgICBNYWNpbnRvc2giCiAgICAgICBBdXRob3I6IFBhdWwgTWFja2VycmFzLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0wNy9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBNYWMsIFBvd2VyIE1hY2ludG9zaCwgcG9ydGluZywgZHJpdmVycywgY29tcGF0aWJpbGl0eS4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQW4gSW50cm9kdWN0aW9uIHRvIFNDU0kgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTA4L2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IFNDU0ksIGRldmljZSwgZHJpdmVyLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJBZHZhbmNlZCBTQ1NJIERyaXZlcnMgQW5kIE90aGVyIFRhbGVzIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMDkvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogU0NTSSwgZGV2aWNlLCBkcml2ZXIsIGFkdmFuY2VkLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIExpbnV4IE1vdXNlIERyaXZlcnMiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0xMC9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBtb3VzZSwgZHJpdmVyLCBncG0uCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIk1vcmUgb24gTW91c2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTExL2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IG1vdXNlLCBkcml2ZXIsIGdwbSwgcmFjZXMsIGFzeW5jaHJvbm91cyBJL08uCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHN0aWxsIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIldyaXRpbmcgVmlkZW80bGludXggUmFkaW8gRHJpdmVyIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMTIvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogdmlkZW80bGludXgsIGRyaXZlciwgcmFkaW8sIHJhZGlvIGRldmljZXMuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIlZpZGVvNGxpbnV4IERyaXZlcnMsIFBhcnQgMTogVmlkZW8tQ2FwdHVyZSBEZXZpY2UiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMjAwMC0wMS9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiB2aWRlbzRsaW51eCwgZHJpdmVyLCB2aWRlbyBjYXB0dXJlLCBjYXB0dXJlIGRldmljZXMsCiAgICAgICBjYW1lcmEgZHJpdmVyLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJWaWRlbzRsaW51eCBEcml2ZXJzLCBQYXJ0IDI6IFZpZGVvLWNhcHR1cmUgRGV2aWNlcyIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8yMDAwLTAyL2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IHZpZGVvNGxpbnV4LCBkcml2ZXIsIHZpZGVvIGNhcHR1cmUsIGNhcHR1cmUgZGV2aWNlcywKICAgICAgIGNhbWVyYSBkcml2ZXIsIGNvbnRyb2wsIHF1ZXJ5IGNhcGFiaWxpdGllcywgY2FwYWJpbGl0eSwgZmFjaWxpdHkuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIlBDSSBNYW5hZ2VtZW50IGluIExpbnV4IDIuMiIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8yMDAwLTAzL2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IFBDSSwgYnVzLCBidXMtbWFzdGVyaW5nLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCAyLjQgS2VybmVsIEludGVybmFscyIKICAgICAgIEF1dGhvcjogVGlncmFuIEFpdmF6aWFuIGFuZCBDaHJpc3RvcGggSGVsbHdpZy4KICAgICAgIFVSTDogaHR0cDovL3d3dy5tb3Nlcy51a2xpbnV4Lm5ldC9wYXRjaGVzL2xraS5odG1sCiAgICAgICBLZXl3b3JkczogTGludXgsIGtlcm5lbCwgYm9vdGluZywgU01CIGJvb3QsIFZGUywgcGFnZSBjYWNoZS4KICAgICAgIERlc2NyaXB0aW9uOiBBIGxpdHRsZSBib29rIHVzZWQgZm9yIGEgc2hvcnQgdHJhaW5pbmcgY291cnNlLgogICAgICAgQ292ZXJzIGJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2UsIGJvb3RpbmcgKGluY2x1ZGluZyBTTVAgYm9vdHVwKSwKICAgICAgIHByb2Nlc3MgbWFuYWdlbWVudCwgVkZTIGFuZCBtb3JlLgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IElQIE5ldHdvcmtpbmcuIEEgR3VpZGUgdG8gdGhlIEltcGxlbWVudGF0aW9uIGFuZAogICAgICAgTW9kaWZpY2F0aW9uIG9mIHRoZSBMaW51eCBQcm90b2NvbCBTdGFjay4iCiAgICAgICBBdXRob3I6IEdsZW5uIEhlcnJpbi4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZy9kb2N1bWVudHMvaXBuZXR3b3JraW5nL2xpbnV4aXBuZXR3b3JraW5nLgogICAgICAgaHRtbAogICAgICAgS2V5d29yZHM6IG5ldHdvcmssIG5ldHdvcmtpbmcsIHByb3RvY29sLCBJUCwgVURQLCBUQ1AsIGNvbm5lY3Rpb24sCiAgICAgICBzb2NrZXQsIHJlY2VpdmluZywgdHJhbnNtaXR0aW5nLCBmb3J3YXJkaW5nLCByb3V0aW5nLCBwYWNrZXRzLAogICAgICAgbW9kdWxlcywgL3Byb2MsIHNrX2J1ZmYsIEZJQiwgdGFncy4KICAgICAgIERlc2NyaXB0aW9uOiBFeGNlbGxlbnQgcGFwZXIgZGV2b3RlZCB0byB0aGUgTGludXggSVAgTmV0d29ya2luZywKICAgICAgIGV4cGxhaW5pbmcgYW55dGhpbmcgZnJvbSB0aGUga2VybmVsJ3MgdG8gdGhlIHVzZXIgc3BhY2UKICAgICAgIGNvbmZpZ3VyYXRpb24gdG9vbHMnIGNvZGUuIFZlcnkgZ29vZCB0byBnZXQgYSBnZW5lcmFsIG92ZXJ2aWV3IG9mCiAgICAgICB0aGUga2VybmVsIG5ldHdvcmtpbmcgaW1wbGVtZW50YXRpb24gYW5kIHVuZGVyc3RhbmQgYWxsIHN0ZXBzCiAgICAgICBwYWNrZXRzIGZvbGxvdyBmcm9tIHRoZSB0aW1lIHRoZXkgYXJlIHJlY2VpdmVkIGF0IHRoZSBuZXR3b3JrCiAgICAgICBkZXZpY2UgdGlsbCB0aGV5IGFyZSBkZWxpdmVyZWQgdG8gYXBwbGljYXRpb25zLiBUaGUgc3R1ZGllZCBrZXJuZWwKICAgICAgIGNvZGUgaXMgZnJvbSAyLjIuMTQgdmVyc2lvbi4gUHJvdmlkZXMgY29kZSBmb3IgYSB3b3JraW5nIHBhY2tldAogICAgICAgZHJvcHBlciBleGFtcGxlLgogICAgICAgCiAgICAgKiBUaXRsZTogIkdldCB0aG9zZSBib2FyZHMgdGFsa2luZyB1bmRlciBMaW51eC4iCiAgICAgICBBdXRob3I6IEFsZXggSXZjaGVua28uCiAgICAgICBVUkw6IGh0dHA6Ly93d3cuZWRuLmNvbS9hcnRpY2xlL0NBNDY5NjguaHRtbAogICAgICAgS2V5d29yZHM6IGRhdGEtYWNxdWlzaXRpb24gYm9hcmRzLCBkcml2ZXJzLCBtb2R1bGVzLCBpbnRlcnJ1cHRzLAogICAgICAgbWVtb3J5IGFsbG9jYXRpb24uCiAgICAgICBEZXNjcmlwdGlvbjogQXJ0aWNsZSB3cml0dGVuIGZvciBwZW9wbGUgd2lzaGluZyB0byBtYWtlIHRoZWlyIGRhdGEKICAgICAgIGFjcXVpc2l0aW9uIGJvYXJkcyB3b3JrIG9uIHRoZWlyIEdOVS9MaW51eCBtYWNoaW5lcy4gR2l2ZXMgYSBiYXNpYwogICAgICAgb3ZlcnZpZXcgb24gd3JpdGluZyBkcml2ZXJzLCBmcm9tIHRoZSBuYW1pbmcgb2YgZnVuY3Rpb25zIHRvCiAgICAgICBpbnRlcnJ1cHQgaGFuZGxpbmcuCiAgICAgICBOb3RlczogVHdvLXBhcnRzIGFydGljbGUuIFBhcnQgSUkgaXMgYXQKICAgICAgIFVSTDogaHR0cDovL3d3dy5lZG4uY29tL2FydGljbGUvQ0E0Njk5OC5odG1sCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggUENNQ0lBIFByb2dyYW1tZXIncyBHdWlkZSIKICAgICAgIEF1dGhvcjogRGF2aWQgSGluZHMuCiAgICAgICBVUkw6IGh0dHA6Ly9wY21jaWEtY3Muc291cmNlZm9yZ2UubmV0L2Z0cC9kb2MvUENNQ0lBLVBST0cuaHRtbAogICAgICAgS2V5d29yZHM6IFBDTUNJQS4KICAgICAgIERlc2NyaXB0aW9uOiAiVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHdyaXRlIGtlcm5lbCBkZXZpY2UKICAgICAgIGRyaXZlcnMgZm9yIHRoZSBMaW51eCBQQ01DSUEgQ2FyZCBTZXJ2aWNlcyBpbnRlcmZhY2UuIEl0IGFsc28KICAgICAgIGRlc2NyaWJlcyBob3cgdG8gd3JpdGUgdXNlci1tb2RlIHV0aWxpdGllcyBmb3IgY29tbXVuaWNhdGluZyB3aXRoCiAgICAgICBDYXJkIFNlcnZpY2VzLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwgTkZTRCBJbXBsZW1lbnRhdGlvbiIKICAgICAgIEF1dGhvcjogTmVpbCBCcm93bi4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuY3NlLnVuc3cuZWR1LmF1L35uZWlsYi9vc3MvbGludXgtY29tbWVudGFyeS9uZnNkLmh0bWwKICAgICAgIEtleXdvcmRzOiBrbmZzZCwgbmZzZCwgTkZTLCBSUEMsIGxvY2tkLCBtb3VudGQsIHN0YXRkLgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIE5vdGVzOiBDb3ZlcnMga25mc2QncyB2ZXJzaW9uIDEuNC43IChwYXRjaCBhZ2FpbnN0IDIuMi43IGtlcm5lbCkuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQSBMaW51eCB2bSBSRUFETUUiCiAgICAgICBBdXRob3I6IEthbm9qIFNhcmNhci4KICAgICAgIFVSTDogaHR0cDovL3JlYWxpdHkuc2dpLmNvbS9rYW5val9lbmdyL3ZtMjI5Lmh0bWwKICAgICAgIEtleXdvcmRzOiB2aXJ0dWFsIG1lbW9yeSwgbW0sIHBnZCwgdm1hLCBwYWdlLCBwYWdlIGZsYWdzLCBwYWdlCiAgICAgICBjYWNoZSwgc3dhcCBjYWNoZSwga3N3YXBkLgogICAgICAgRGVzY3JpcHRpb246IFRlbGVncmFwaGljLCBzaG9ydCBkZXNjcmlwdGlvbnMgYW5kIGRlZmluaXRpb25zCiAgICAgICByZWxhdGluZyB0aGUgTGludXggdmlydHVhbCBtZW1vcnkgaW1wbGVtZW50YXRpb24uCiAgICAgICAKICAgICAqIFRpdGxlOiAiKG5lYXJseSkgQ29tcGxldGUgTGludXggTG9hZGFibGUgS2VybmVsIE1vZHVsZXMuIFRoZQogICAgICAgZGVmaW5pdGl2ZSBndWlkZSBmb3IgaGFja2VycywgdmlydXMgY29kZXJzIGFuZCBzeXN0ZW0KICAgICAgIGFkbWluaXN0cmF0b3JzLiIKICAgICAgIEF1dGhvcjogcHJhZ21hdGljL1RIQy4KICAgICAgIFVSTDogaHR0cDovL3BhY2tldHN0b3Jtc2VjdXJpdHkub3JnL2RvY3MvaGFjay9MS01fSEFDS0lORy5odG1sCiAgICAgICBLZXl3b3Jkczogc3lzY2FsbHMsIGludGVyY2VwdCwgaGlkZSwgYWJ1c2UsIHN5bWJvbCB0YWJsZS4KICAgICAgIERlc2NyaXB0aW9uOiBJbnRlcmVzdGluZyBwYXBlciBvbiBob3cgdG8gYWJ1c2UgdGhlIExpbnV4IGtlcm5lbCBpbgogICAgICAgb3JkZXIgdG8gaW50ZXJjZXB0IGFuZCBtb2RpZnkgc3lzY2FsbHMsIG1ha2UKICAgICAgIGZpbGVzL2RpcmVjdG9yaWVzL3Byb2Nlc3NlcyBpbnZpc2libGUsIGJlY29tZSByb290LCBoaWphY2sgdHR5cywKICAgICAgIHdyaXRlIGtlcm5lbCBtb2R1bGVzIGJhc2VkIHZpcnVzLi4uIGFuZCBzb2x1dGlvbnMgZm9yIGFkbWlucyB0bwogICAgICAgYXZvaWQgYWxsIHRob3NlIGFidXNlcy4KICAgICAgIE5vdGVzOiBGb3IgMi4wLngga2VybmVscy4gR2l2ZXMgZ3VpZGFuY2VzIHRvIHBvcnQgaXQgdG8gMi4yLngKICAgICAgIGtlcm5lbHMuCiAgICAgICAKICAgICBCT09LUzogKE5vdCBvbi1saW5lKQogICAKICAgICAqIFRpdGxlOiAiTGludXggRGV2aWNlIERyaXZlcnMiCiAgICAgICBBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pLgogICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMuCiAgICAgICBEYXRlOiAxOTk4LgogICAgICAgUGFnZXM6IDQzOS4KICAgICAgIElTQk46IDEtNTY1OTItMjkyLTEKICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBEZXZpY2UgRHJpdmVycywgMm5kIEVkaXRpb24iCiAgICAgICBBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIGFuZCBKb25hdGhhbiBDb3JiZXQuCiAgICAgICBQdWJsaXNoZXI6IE8nUmVpbGx5ICYgQXNzb2NpYXRlcy4KICAgICAgIERhdGU6IDIwMDEuCiAgICAgICBQYWdlczogNTg2LgogICAgICAgSVNCTjogMC01OTYwMC0wMDgtMQogICAgICAgTm90ZXM6IEZ1cnRoZXIgaW5mb3JtYXRpb24gaW4KICAgICAgIGh0dHA6Ly93d3cub3JlaWxseS5jb20vY2F0YWxvZy9saW51eGRyaXZlMi8KCiAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzLCAzbmQgRWRpdGlvbiIKICAgICAgIEF1dGhvcnM6IEpvbmF0aGFuIENvcmJldCwgQWxlc3NhbmRybyBSdWJpbmksIGFuZCBHcmVnIEtyb2FoLUhhcnRtYW4KICAgICAgIFB1Ymxpc2hlcjogTydSZWlsbHkgJiBBc3NvY2lhdGVzLgogICAgICAgRGF0ZTogMjAwNS4KICAgICAgIFBhZ2VzOiA2MzYuCiAgICAgICBJU0JOOiAwLTU5Ni0wMDU5MC0zCiAgICAgICBOb3RlczogRnVydGhlciBpbmZvcm1hdGlvbiBpbgogICAgICAgaHR0cDovL3d3dy5vcmVpbGx5LmNvbS9jYXRhbG9nL2xpbnV4ZHJpdmUzLwogICAgICAgUERGIGZvcm1hdCwgVVJMOiBodHRwOi8vbHduLm5ldC9LZXJuZWwvTEREMy8KCiAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBJbnRlcm5hbHMiCiAgICAgICBBdXRob3I6IE1pY2hhZWwgQmVjay4KICAgICAgIFB1Ymxpc2hlcjogQWRkaXNvbi1XZXNsZXkuCiAgICAgICBEYXRlOiAxOTk3LgogICAgICAgSVNCTjogMC0yMDEtMzMxNDMtOCAoc2Vjb25kIGVkaXRpb24pCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIERlc2lnbiBvZiB0aGUgVU5JWCBPcGVyYXRpbmcgU3lzdGVtIgogICAgICAgQXV0aG9yOiBNYXVyaWNlIEouIEJhY2guCiAgICAgICBQdWJsaXNoZXI6IFByZW50aWNlIEhhbGwuCiAgICAgICBEYXRlOiAxOTg2LgogICAgICAgUGFnZXM6IDQ3MS4KICAgICAgIElTQk46IDAtMTMtMjAxNzU3LTEKICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgNC4zIEJTRCBVTklYCiAgICAgICBPcGVyYXRpbmcgU3lzdGVtIgogICAgICAgQXV0aG9yOiBTYW11ZWwgSi4gTGVmZmxlciwgTWFyc2hhbGwgS2lyayBNY0t1c2ljaywgTWljaGFlbCBKLgogICAgICAgS2FyZWxzLCBKb2huIFMuIFF1YXJ0ZXJtYW4uCiAgICAgICBQdWJsaXNoZXI6IEFkZGlzb24tV2VzbGV5LgogICAgICAgRGF0ZTogMTk4OSAocmVwcmludGVkIHdpdGggY29ycmVjdGlvbnMgb24gT2N0b2JlciwgMTk5MCkuCiAgICAgICBJU0JOOiAwLTIwMS0wNjE5Ni0xCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIERlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgdGhlIDQuNCBCU0QgVU5JWAogICAgICAgT3BlcmF0aW5nIFN5c3RlbSIKICAgICAgIEF1dGhvcjogTWFyc2hhbGwgS2lyayBNY0t1c2ljaywgS2VpdGggQm9zdGljLCBNaWNoYWVsIEouIEthcmVscywKICAgICAgIEpvaG4gUy4gUXVhcnRlcm1hbi4KICAgICAgIFB1Ymxpc2hlcjogQWRkaXNvbi1XZXNsZXkuCiAgICAgICBEYXRlOiAxOTk2LgogICAgICAgSVNCTjogMC0yMDEtNTQ5NzktNAogICAgICAgCiAgICAgKiBUaXRsZTogIlByb2dyYW1tYXRpb24gTGludXggMi4wIEFQSSBzeXN0ZW1lIGV0IGZvbmN0aW9ubmVtZW50IGR1CiAgICAgICBub3lhdSIKICAgICAgIEF1dGhvcjogUmVteSBDYXJkLCBFcmljIER1bWFzLCBGcmFuY2sgTWV2ZWwuCiAgICAgICBQdWJsaXNoZXI6IEV5cm9sbGVzLgogICAgICAgRGF0ZTogMTk5Ny4KICAgICAgIFBhZ2VzOiA1MjAuCiAgICAgICBJU0JOOiAyLTIxMi0wODkzMi01CiAgICAgICBOb3RlczogRnJlbmNoLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwgQm9vayIKICAgICAgIEF1dGhvcjogUmVteSBDYXJkLCBFcmljIER1bWFzLCBGcmFuY2sgTWV2ZWwuCiAgICAgICBQdWJsaXNoZXI6IEpvaG4gV2lsZXkgJiBTb25zLgogICAgICAgRGF0ZTogMTk5OC4KICAgICAgIElTQk46IDAtNDcxLTk4MTQxLTkKICAgICAgIE5vdGVzOiBFbmdsaXNoIHRyYW5zbGF0aW9uLgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IDIuMCIKICAgICAgIEF1dGhvcjogUmVteSBDYXJkLCBFcmljIER1bWFzLCBGcmFuY2sgTWV2ZWwuCiAgICAgICBQdWJsaXNoZXI6IEdlc3Rp824gMjAwMC4KICAgICAgIERhdGU6IDE5OTcuCiAgICAgICBQYWdlczogNTAxLgogICAgICAgSVNCTjogOC00ODAtODgyMDgtNQogICAgICAgTm90ZXM6IFNwYW5pc2ggdHJhbnNsYXRpb24uCiAgICAgICAKICAgICAqIFRpdGxlOiAiVW5peCBpbnRlcm5hbHMgLS0gdGhlIG5ldyBmcm9udGllcnMiCiAgICAgICBBdXRob3I6IFVyZXNoIFZhaGFsaWEuCiAgICAgICBQdWJsaXNoZXI6IFByZW50aWNlIEhhbGwuCiAgICAgICBEYXRlOiAxOTk2LgogICAgICAgUGFnZXM6IDYwMC4KICAgICAgIElTQk46IDAtMTMtMTAxOTA4LTIKICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBDb3JlIEtlcm5lbCBDb21tZW50YXJ5LiBHdWlkZSB0byBJbnNpZGVyJ3MgS25vd2xlZGdlCiAgICAgICBvbiB0aGUgQ29yZSBLZXJuZWwgb2YgdGhlIExpbnV4IENvZGUiCiAgICAgICBBdXRob3I6IFNjb3R0IE1heHdlbGwuCiAgICAgICBQdWJsaXNoZXI6IENvcmlvbGlzLgogICAgICAgRGF0ZTogMTk5OS4KICAgICAgIFBhZ2VzOiA1OTIuCiAgICAgICBJU0JOOiAxLTU3NjEwLTQ2OS05CiAgICAgICBOb3RlczogQ0QtUk9NIGluY2x1ZGVkLiBMaW5lIGJ5IGxpbmUgY29tbWVudGFyeSBvZiB0aGUga2VybmVsCiAgICAgICBjb2RlLgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IElQIFN0YWNrcyBDb21tZW50YXJ5IgogICAgICAgQXV0aG9yOiBTdGVwaGVuIFNhdGNoZWxsIGFuZCBIQkogQ2xpZmZvcmQuCiAgICAgICBQdWJsaXNoZXI6IENvcmlvbGlzLgogICAgICAgRGF0ZTogMjAwMC4KICAgICAgIFBhZ2VzOiA/Pz8uCiAgICAgICBJU0JOOiAxLTU3NjEwLTQ3MC0yCiAgICAgICBOb3RlczogTGluZSBieSBsaW5lIHNvdXJjZSBjb2RlIGNvbW1lbnRhcnkgYm9vay4KICAgICAgIAogICAgICogVGl0bGU6ICJQcm9ncmFtbWluZyBmb3IgdGhlIHJlYWwgd29ybGQgLSBQT1NJWC40IgogICAgICAgQXV0aG9yOiBCaWxsIE8uIEdhbGxtZWlzdGVyLgogICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMsIEluYy4uCiAgICAgICBEYXRlOiAxOTk1LgogICAgICAgUGFnZXM6ID8/Py4KICAgICAgIElTQk46IEktNTY1OTItMDc0LTAKICAgICAgIE5vdGVzOiBUaG91Z2ggbm90IGJlaW5nIGRpcmVjdGx5IGFib3V0IExpbnV4LCBMaW51eCBhaW1zIHRvIGJlCiAgICAgICBQT1NJWC4gR29vZCByZWZlcmVuY2UuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVW5kZXJzdGFuZGluZyB0aGUgTGludXggS2VybmVsIgogICAgICAgQXV0aG9yOiBEYW5pZWwgUC4gQm92ZXQgYW5kIE1hcmNvIENlc2F0aS4KICAgICAgIFB1Ymxpc2hlcjogTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLgogICAgICAgRGF0ZTogMjAwMC4KICAgICAgIFBhZ2VzOiA3MDIuCiAgICAgICBJU0JOOiAwLTU5Ni0wMDAwMi0yCiAgICAgICBOb3RlczogRnVydGhlciBpbmZvcm1hdGlvbiBpbgogICAgICAgaHR0cDovL3d3dy5vcmVpbGx5LmNvbS9jYXRhbG9nL2xpbnV4a2VybmVsLwogICAgICAgCiAgICAgTUlTQ0VMTEFORU9VUzoKICAgCiAgICAgKiBOYW1lOiBsaW51eC9Eb2N1bWVudGF0aW9uCiAgICAgICBBdXRob3I6IE1hbnkuCiAgICAgICBVUkw6IEp1c3QgbG9vayBpbnNpZGUgeW91ciBrZXJuZWwgc291cmNlcy4KICAgICAgIEtleXdvcmRzOiBhbnl0aGluZywgRG9jQm9vay4KICAgICAgIERlc2NyaXB0aW9uOiBEb2N1bWVudGF0aW9uIHRoYXQgY29tZXMgd2l0aCB0aGUga2VybmVsIHNvdXJjZXMsCiAgICAgICBpbnNpZGUgdGhlIERvY3VtZW50YXRpb24gZGlyZWN0b3J5LiBTb21lIHBhZ2VzIGZyb20gdGhpcyBkb2N1bWVudAogICAgICAgKGluY2x1ZGluZyB0aGlzIGRvY3VtZW50IGl0c2VsZikgaGF2ZSBiZWVuIG1vdmVkIHRoZXJlLCBhbmQgbWlnaHQKICAgICAgIGJlIG1vcmUgdXAgdG8gZGF0ZSB0aGFuIHRoZSB3ZWIgdmVyc2lvbi4KICAgICAgIAogICAgICogTmFtZTogIkxpbnV4IFNvdXJjZSBEcml2ZXIiCiAgICAgICBVUkw6IGh0dHA6Ly9sc2QubGludXguY3oKICAgICAgIEtleXdvcmRzOiBCcm93c2luZyBzb3VyY2UgY29kZS4KICAgICAgIERlc2NyaXB0aW9uOiAiTGludXggU291cmNlIERyaXZlciAoTFNEKSBpcyBhbiBhcHBsaWNhdGlvbiwgd2hpY2gKICAgICAgIGNhbiBtYWtlIGJyb3dzaW5nIHNvdXJjZSBjb2RlcyBvZiBMaW51eCBrZXJuZWwgZWFzaWVyIHRoYW4geW91IGNhbgogICAgICAgaW1hZ2luZS4gWW91IGNhbiBzZWxlY3QgYmV0d2VlbiBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBrZXJuZWwgKGUuZy4KICAgICAgIDAuMDEsIDEuMC4wLCAyLjAuMzMsIDIuMC4zNHByZTEzLCAyLjAuMCwgMi4xLjEwMSBldGMuKS4gV2l0aCBMU0QKICAgICAgIHlvdSBjYW4gc2VhcmNoIExpbnV4IGtlcm5lbCAoZnVsbHRleHQsIG1hY3JvcywgdHlwZXMsIGZ1bmN0aW9ucwogICAgICAgYW5kIHZhcmlhYmxlcykgYW5kIExTRCBjYW4gZ2VuZXJhdGUgcGF0Y2hlcyBmb3IgeW91IG9uIHRoZSBmbHkKICAgICAgIChmaWxlcywgZGlyZWN0b3JpZXMgb3Iga2VybmVsKSIuCiAgICAgICAKICAgICAqIE5hbWU6ICJMaW51eCBLZXJuZWwgU291cmNlIFJlZmVyZW5jZSIKICAgICAgIEF1dGhvcjogVGhvbWFzIEdyYWljaGVuLgogICAgICAgVVJMOiBodHRwOi8vaW5ub21pbmF0ZS5vcmcvfmdyYWljaGVuL3Byb2plY3RzL2xrc3IvCiAgICAgICBLZXl3b3JkczogQ1ZTLCB3ZWIsIGN2c3dlYiwgYnJvd3Npbmcgc291cmNlIGNvZGUuCiAgICAgICBEZXNjcmlwdGlvbjogV2ViIGludGVyZmFjZSB0byBhIENWUyBzZXJ2ZXIgd2l0aCB0aGUga2VybmVsCiAgICAgICBzb3VyY2VzLiAiSGVyZSB5b3UgY2FuIGhhdmUgYSBsb29rIGF0IGFueSBmaWxlIG9mIHRoZSBMaW51eCBrZXJuZWwKICAgICAgIHNvdXJjZXMgb2YgYW55IHZlcnNpb24gc3RhcnRpbmcgZnJvbSAxLjAgdXAgdG8gdGhlIChkYWlseSB1cGRhdGVkKQogICAgICAgY3VycmVudCB2ZXJzaW9uIGF2YWlsYWJsZS4gQWxzbyB5b3UgY2FuIGNoZWNrIHRoZSBkaWZmZXJlbmNlcwogICAgICAgYmV0d2VlbiB0d28gdmVyc2lvbnMgb2YgYSBmaWxlIi4KICAgICAgIAogICAgICogTmFtZTogIkNyb3NzLVJlZmVyZW5jaW5nIExpbnV4IgogICAgICAgVVJMOiBodHRwOi8vbHhyLmxpbnV4Lm5vL3NvdXJjZS8KICAgICAgIEtleXdvcmRzOiBCcm93c2luZyBzb3VyY2UgY29kZS4KICAgICAgIERlc2NyaXB0aW9uOiBBbm90aGVyIHdlYi1iYXNlZCBMaW51eCBrZXJuZWwgc291cmNlIGNvZGUgYnJvd3Nlci4KICAgICAgIExvdHMgb2YgY3Jvc3MgcmVmZXJlbmNlcyB0byB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4gWW91IGNhbiBzZWUKICAgICAgIHdoZXJlIHRoZXkgYXJlIGRlZmluZWQgYW5kIHdoZXJlIHRoZXkgYXJlIHVzZWQuCiAgICAgICAKICAgICAqIE5hbWU6ICJMaW51eCBXZWVrbHkgTmV3cyIKICAgICAgIFVSTDogaHR0cDovL2x3bi5uZXQKICAgICAgIEtleXdvcmRzOiBsYXRlc3Qga2VybmVsIG5ld3MuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLiBUaGVyZSdzIGEgZml4ZWQga2VybmVsIHNlY3Rpb24KICAgICAgIHN1bW1hcml6aW5nIGRldmVsb3BlcnMnIHdvcmssIGJ1ZyBmaXhlcywgbmV3IGZlYXR1cmVzIGFuZCB2ZXJzaW9ucwogICAgICAgcHJvZHVjZWQgZHVyaW5nIHRoZSB3ZWVrLiBQdWJsaXNoZWQgZXZlcnkgVGh1cnNkYXkuCiAgICAgICAKICAgICAqIE5hbWU6ICJLZXJuZWwgVHJhZmZpYyIKICAgICAgIFVSTDogaHR0cDovL3d3dy5rZXJuZWx0cmFmZmljLm9yZy9rZXJuZWwtdHJhZmZpYy8KICAgICAgIEtleXdvcmRzOiBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0LCB3ZWVrbHkga2VybmVsIG5ld3MuCiAgICAgICBEZXNjcmlwdGlvbjogV2Vla2x5IG5ld3NsZXR0ZXIgY292ZXJpbmcgdGhlIG1vc3QgcmVsZXZhbnQKICAgICAgIGRpc2N1c3Npb25zIG9mIHRoZSBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0LgogICAgICAgCiAgICAgKiBOYW1lOiAiQ3VUVGlORy5lREdlLkxpTnVYIgogICAgICAgVVJMOiBodHRwOi8vZWRnZS5rZXJuZWxub3Rlcy5vcmcKICAgICAgIEtleXdvcmRzOiBjaGFuZ2VsaXN0LgogICAgICAgRGVzY3JpcHRpb246IFNpdGUgd2hpY2ggcHJvdmlkZXMgdGhlIGNoYW5nZWxpc3QgZm9yIGV2ZXJ5IGtlcm5lbAogICAgICAgcmVsZWFzZS4gV2hhdCdzIG5ldywgd2hhdCdzIGJldHRlciwgd2hhdCdzIGNoYW5nZWQuIE15cmRyYWFsIHJlYWRzCiAgICAgICB0aGUgcGF0Y2hlcyBhbmQgZGVzY3JpYmVzIHRoZW0uIFBvaW50ZXJzIHRvIHRoZSBwYXRjaGVzIGFyZSB0aGVyZSwKICAgICAgIHRvby4KICAgICAgIAogICAgICogTmFtZTogIk5ldyBsaW51eC1rZXJuZWwgTWFpbGluZyBMaXN0IEZBUSIKICAgICAgIFVSTDogaHR0cDovL3d3dy50dXgub3JnL2xrbWwvCiAgICAgICBLZXl3b3JkczogbGludXgta2VybmVsIG1haWxpbmcgbGlzdCBGQVEuCiAgICAgICBEZXNjcmlwdGlvbjogbGludXgta2VybmVsIGlzIGEgbWFpbGluZyBsaXN0IGZvciBkZXZlbG9wZXJzIHRvCiAgICAgICBjb21tdW5pY2F0ZS4gVGhpcyBGQVEgYnVpbGRzIG9uIHRoZSBwcmV2aW91cyBsaW51eC1rZXJuZWwgbWFpbGluZwogICAgICAgbGlzdCBGQVEgbWFpbnRhaW5lZCBieSBGcm9od2FsdCBFZ2VyZXIsIHdobyBubyBsb25nZXIgbWFpbnRhaW5zCiAgICAgICBpdC4gUmVhZCBpdCB0byBzZWUgaG93IHRvIGpvaW4gdGhlIG1haWxpbmcgbGlzdC4gRG96ZW5zIG9mCiAgICAgICBpbnRlcmVzdGluZyBxdWVzdGlvbnMgcmVnYXJkaW5nIHRoZSBsaXN0LCBMaW51eCwgZGV2ZWxvcGVycyAod2hvCiAgICAgICBpcyAuLi4/KSwgdGVybXMgKHdoYXQgaXMuLi4/KSBhcmUgYW5zd2VyZWQgaGVyZSB0b28uIEp1c3QgcmVhZCBpdC4KICAgICAgIAogICAgICogTmFtZTogIkxpbnV4IFZpcnR1YWwgRmlsZSBTeXN0ZW0iCiAgICAgICBBdXRob3I6IFBldGVyIEouIEJyYWFtLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmNvZGEuY3MuY211LmVkdS9kb2MvdGFsa3MvbGludXh2ZnMvCiAgICAgICBLZXl3b3Jkczogc2xpZGVzLCBWRlMsIGlub2RlLCBzdXBlcmJsb2NrLCBkZW50cnksIGRjYWNoZS4KICAgICAgIERlc2NyaXB0aW9uOiBTZXQgb2Ygc2xpZGVzLCBwcmVzdW1hYmx5IGZyb20gYSBwcmVzZW50YXRpb24gb24gdGhlCiAgICAgICBMaW51eCBWRlMgbGF5ZXIuIENvdmVycyB2ZXJzaW9uIDIuMS54LCB3aXRoIGRlbnRyaWVzIGFuZCB0aGUKICAgICAgIGRjYWNoZS4KICAgICAgIAogICAgICogTmFtZTogIkdhcnkncyBFbmN5Y2xvcGVkaWEgLSBUaGUgTGludXggS2VybmVsIgogICAgICAgQXV0aG9yOiBHYXJ5IChJIHN1cHBvc2UuLi4pLgogICAgICAgVVJMOiBodHRwOi8vbWVtYmVycy5hYS5uZXQvfnN3ZWFyL3BlZGlhL2tlcm5lbC5odG1sCiAgICAgICBLZXl3b3JkczogbGlua3MsIG5vdCBmb3VuZCBoZXJlPy4KICAgICAgIERlc2NyaXB0aW9uOiBHYXJ5J3MgRW5jeWNsb3BlZGlhIGV4aXN0cyB0byBhbGxvdyB0aGUgcmFwaWQgZmluZGluZwogICAgICAgb2YgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgaW5mb3JtYXRpb24gb2YgaW50ZXJlc3QgdG8gR05VL0xpbnV4CiAgICAgICB1c2Vycy4gSXQgaGFzIGFib3V0IDQwMDAgbGlua3MgdG8gZXh0ZXJuYWwgcGFnZXMgaW4gMTUwIG1ham9yCiAgICAgICBjYXRlZ29yaWVzLiBUaGlzIGxpbmsgaXMgZm9yIGtlcm5lbC1zcGVjaWZpYyBsaW5rcywgZG9jdW1lbnRzLAogICAgICAgc2l0ZXMuLi4gTG9vayB0aGVyZSBpZiB5b3UgY291bGQgbm90IGZpbmQgaGVyZSB3aGF0IHlvdSB3ZXJlCiAgICAgICBsb29raW5nIGZvci4KICAgICAgIAogICAgICogTmFtZTogIlRoZSBob21lIHBhZ2Ugb2YgTGludXgtTU0iCiAgICAgICBBdXRob3I6IFRoZSBMaW51eC1NTSB0ZWFtLgogICAgICAgVVJMOiBodHRwOi8vbGludXgtbW0ub3JnLwogICAgICAgS2V5d29yZHM6IG1lbW9yeSBtYW5hZ2VtZW50LCBMaW51eC1NTSwgbW0gcGF0Y2hlcywgVE9ETywgZG9jcywKICAgICAgIG1haWxpbmcgbGlzdC4KICAgICAgIERlc2NyaXB0aW9uOiBTaXRlIGRldm90ZWQgdG8gTGludXggTWVtb3J5IE1hbmFnZW1lbnQgZGV2ZWxvcG1lbnQuCiAgICAgICBNZW1vcnkgcmVsYXRlZCBwYXRjaGVzLCBIT1dUT3MsIGxpbmtzLCBtbSBkZXZlbG9wZXJzLi4uIERvbid0IG1pc3MKICAgICAgIGl0IGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBtZW1vcnkgbWFuYWdlbWVudCBkZXZlbG9wbWVudCEKICAgICAgIAogICAgICogTmFtZTogIktlcm5lbCBOZXdiaWVzIElSQyBDaGFubmVsIgogICAgICAgVVJMOiBodHRwOi8vd3d3Lmtlcm5lbG5ld2JpZXMub3JnCiAgICAgICBLZXl3b3JkczogSVJDLCBuZXdiaWVzLCBjaGFubmVsLCBhc2tpbmcgZG91YnRzLgogICAgICAgRGVzY3JpcHRpb246ICNrZXJuZWxuZXdiaWVzIG9uIGlyYy5vcGVucHJvamVjdHMubmV0LiBGcm9tIHRoZSB3ZWIKICAgICAgIHBhZ2U6ICIja2VybmVsbmV3YmllcyBpcyBhbiBJUkMgbmV0d29yayBkZWRpY2F0ZWQgdG8gdGhlICduZXdiaWUnCiAgICAgICBrZXJuZWwgaGFja2VyLiBUaGUgYXVkaWVuY2UgbW9zdGx5IGNvbnNpc3RzIG9mIHBlb3BsZSB3aG8gYXJlCiAgICAgICBsZWFybmluZyBhYm91dCB0aGUga2VybmVsLCB3b3JraW5nIG9uIGtlcm5lbCBwcm9qZWN0cyBvcgogICAgICAgcHJvZmVzc2lvbmFsIGtlcm5lbCBoYWNrZXJzIHRoYXQgd2FudCB0byBoZWxwIGxlc3Mgc2Vhc29uZWQga2VybmVsCiAgICAgICBwZW9wbGUuIFsuLi5dICNrZXJuZWxuZXdiaWVzIGlzIG9uIHRoZSBPcGVuIFByb2plY3RzIElSQyBOZXR3b3JrLAogICAgICAgdHJ5IGlyYy5vcGVucHJvamVjdHMubmV0IG9yIGlyYy48Y291bnRyeT4ub3BlbnByb2plY3RzLm5ldCBhcyB5b3VyCiAgICAgICBzZXJ2ZXIgYW5kIHRoZW4gL2pvaW4gI2tlcm5lbG5ld2JpZXMiLiBJdCBhbHNvIGhvc3RzIGFydGljbGVzLAogICAgICAgZG9jdW1lbnRzLCBGQVFzLi4uCiAgICAgICAKICAgICAqIE5hbWU6ICJsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0IGFyY2hpdmVzIGFuZCBzZWFyY2ggZW5naW5lcyIKICAgICAgIFVSTDogaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwKICAgICAgIFVSTDogaHR0cDovL3d3dy51d3NnLmluZGlhbmEuZWR1L2h5cGVybWFpbC9saW51eC9rZXJuZWwvaW5kZXguaHRtbAogICAgICAgVVJMOiBodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LWtlcm5lbAogICAgICAgVVJMOiBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvbWxpc3QubGludXgua2VybmVsCiAgICAgICBVUkw6IGh0dHA6Ly93d3cuY3MuaGVsc2lua2kuZmkvbGludXgvbGludXgta2VybmVsLwogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpYi51YWEuYWxhc2thLmVkdS9saW51eC1rZXJuZWwvCiAgICAgICBLZXl3b3JkczogbGludXgta2VybmVsLCBhcmNoaXZlcywgc2VhcmNoLgogICAgICAgRGVzY3JpcHRpb246IFNvbWUgb2YgdGhlIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXJjaGl2ZXJzLiBJZgogICAgICAgeW91IGhhdmUgYSBiZXR0ZXIvYW5vdGhlciBvbmUsIHBsZWFzZSBsZXQgbWUga25vdy4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAKICAgRG9jdW1lbnQgbGFzdCB1cGRhdGVkIG9uIFNhdCAyMDA1LU5PVi0xOQo=