ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQwMWRjYQotLS0gL2Rldi9udWxsCisrKyBiL01ha2VmaWxlCkBAIC0wLDAgKzEsMTE0IEBACisjCisjICAgIENvcHlyaWdodCAoYykgMjAxMC0yMDExIE5lc3QsIEluYy4KKyMgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgICAgVGhpcyBkb2N1bWVudCBpcyB0aGUgcHJvcGVydHkgb2YgTmVzdC4gSXQgaXMgY29uc2lkZXJlZAorIyAgICBjb25maWRlbnRpYWwgYW5kIHByb3ByaWV0YXJ5IGluZm9ybWF0aW9uLgorIworIyAgICBUaGlzIGRvY3VtZW50IG1heSBub3QgYmUgcmVwcm9kdWNlZCBvciB0cmFuc21pdHRlZCBpbiBhbnkgZm9ybSwKKyMgICAgaW4gd2hvbGUgb3IgaW4gcGFydCwgd2l0aG91dCB0aGUgZXhwcmVzcyB3cml0dGVuIHBlcm1pc3Npb24gb2YKKyMgICAgTmVzdC4KKyMKKyMgICAgRGVzY3JpcHRpb246CisjICAgICAgVGhpcyBmaWxlIGlzIHRoZSBtYWtlIGZpbGUgZm9yIHRoZSB1c2J1dGlscywgYSBzZXQgb2YgdXRpbGl0aWVzCisjICAgICAgZm9yIGxpc3RpbmcgYW5kIGlkZW50aWZ5aW5nIFVTQiBkZXZpY2VzLgorIworCitCdWlsZENvbmZpZ1NwZWNpYWxpemVkCTo9IE5vCitCdWlsZFByb2R1Y3RTcGVjaWFsaXplZAk6PSBObworCitpbmNsdWRlIHByZS5tYWsKKworUGFja2FnZU5hbWUJCTo9IHVzYnV0aWxzCisKK1BhY2thZ2VFeHRlbnNpb24JOj0gdGFyLmd6CitQYWNrYWdlU2VwYXJhdG9yCTo9IC0KKworUGFja2FnZVBhdGNoQXJncwk6PSAtcDEKKworUGFja2FnZUFyY2hpdmUJCTo9ICQoUGFja2FnZU5hbWUpLiQoUGFja2FnZUV4dGVuc2lvbikKK1BhY2thZ2VTb3VyY2VEaXIJOj0gJChQYWNrYWdlTmFtZSkkKFBhY2thZ2VTZXBhcmF0b3IpJChQYWNrYWdlVmVyc2lvbikKKworUGFja2FnZUJ1aWxkTWFrZWZpbGUJPSAkKGNhbGwgR2VuZXJhdGVCdWlsZFBhdGhzLE1ha2VmaWxlKQorCitDbGVhblBhdGhzCQkrPSAkKFBhY2thZ2VMaWNlbnNlRmlsZSkKKworTGliVVNCRGlyCQk6PSBzdy90cHMvbGlidXNiCitMaWJVU0JJbmNQYXRoCQk9ICQoY2FsbCBHZW5lcmF0ZVJlc3VsdFBhdGhzLCQoTGliVVNCRGlyKSx1c3IvaW5jbHVkZS9saWJ1c2ItMS4wKQorTGliVVNCTGliUGF0aAkJPSAkKGNhbGwgR2VuZXJhdGVSZXN1bHRQYXRocywkKExpYlVTQkRpciksdXNyL2xpYikKKworTGliVVNCQ29tcGF0RGlyCQk6PSBzdy90cHMvbGlidXNiLWNvbXBhdAorTGliVVNCQ29tcGF0SW5jUGF0aAk9ICQoY2FsbCBHZW5lcmF0ZVJlc3VsdFBhdGhzLCQoTGliVVNCQ29tcGF0RGlyKSx1c3IvaW5jbHVkZSkKK0xpYlVTQkNvbXBhdExpYlBhdGgJPSAkKGNhbGwgR2VuZXJhdGVSZXN1bHRQYXRocywkKExpYlVTQkNvbXBhdERpciksdXNyL2xpYikKKworYWxsOiAkKFBhY2thZ2VEZWZhdWx0R29hbCkKKworIyBHZW5lcmF0ZSB0aGUgcGFja2FnZSBsaWNlbnNlIGNvbnRlbnRzLgorCiskKFBhY2thZ2VTb3VyY2VEaXIpL0NPUFlJTkc6IHNvdXJjZQorCiskKFBhY2thZ2VMaWNlbnNlRmlsZSk6ICQoUGFja2FnZVNvdXJjZURpcikvQ09QWUlORworCSQoY29weS1yZXN1bHQpCisKKyMgRXh0cmFjdCB0aGUgc291cmNlIGZyb20gdGhlIGFyY2hpdmUgYW5kIGFwcGx5IHBhdGNoZXMsIGlmIGFueS4KKworJChQYWNrYWdlU291cmNlRGlyKTogJChQYWNrYWdlQXJjaGl2ZSkgJChQYWNrYWdlUGF0Y2hQYXRocykKKwkkKGV4cGFuZC1hbmQtcGF0Y2gtcGFja2FnZSkKKworIyBQcmVwYXJlIHRoZSBzb3VyY2VzLgorCisuUEhPTlk6IHNvdXJjZQorc291cmNlOiB8ICQoUGFja2FnZVNvdXJjZURpcikKKworIyBQYXRjaCB0aGUgc291cmNlcywgaWYgbmVjZXNzYXJ5LgorCisuUEhPTlk6IHBhdGNoCitwYXRjaDogc291cmNlCisKKyMgR2VuZXJhdGUgdGhlIHBhY2thZ2UgYnVpbGQgbWFrZWZpbGUuCisKKyQoUGFja2FnZUJ1aWxkTWFrZWZpbGUpOiB8ICQoUGFja2FnZVNvdXJjZURpcikgJChCdWlsZERpcmVjdG9yeSkgJChSZXN1bHREaXJlY3RvcnkpCisJJChWZXJib3NlKWNkICQoQnVpbGREaXJlY3RvcnkpICYmIFwKKwkkKENVUkRJUikvJChQYWNrYWdlU291cmNlRGlyKS9jb25maWd1cmUgXAorCUNDPSIkKENDKSIgQVI9JChBUikgUkFOTElCPSQoUkFOTElCKSBTVFJJUD0kKFNUUklQKSBcCisJTElCVVNCX0NGTEFHUz0iLUkkKExpYlVTQkNvbXBhdEluY1BhdGgpIiBcCisJTElCVVNCX0xJQlM9Ii1MJChMaWJVU0JDb21wYXRMaWJQYXRoKSAtbHVzYiBcCisJLUwkKExpYlVTQkxpYlBhdGgpIC1sdXNiLTEuMCIgXAorCUNQUEZMQUdTPSItSSQoTGliVVNCQ29tcGF0SW5jUGF0aCkiIFwKKwlJTlNUQUxMPSIkKElOU1RBTEwpICQoSU5TVEFMTEZMQUdTKSIgXAorCS0tYnVpbGQ9JChIb3N0VHVwbGUpIFwKKwktLWhvc3Q9JChUYXJnZXRUdXBsZSkgXAorCS0tZGlzYWJsZS16bGliIFwKKwktLXByZWZpeD0vdXNyIFwKKwktLXN5c2NvbmZkaXI9L2V0YyBcCisJLS1sb2NhbHN0YXRlZGlyPS92YXIKKworIyBDb25maWd1cmUgdGhlIHNvdXJjZSBmb3IgYnVpbGRpbmcuCisKKy5QSE9OWTogY29uZmlndXJlCitjb25maWd1cmU6IHNvdXJjZSAkKFBhY2thZ2VCdWlsZE1ha2VmaWxlKQorCisjIEJ1aWxkIHRoZSBzb3VyY2UuCisjCisjIFdlIGhhdmUgdG8gdW5zZXQgTUFLRUZMQUdTIHNpbmNlIHRoZXkgY29uZnVzZSB0aGUgcGFja2FnZSBidWlsZCBvdGhlcndpc2UuCisKKy5QSE9OWTogYnVpbGQKK2J1aWxkOiBjb25maWd1cmUKKwkkKFZlcmJvc2UpdW5zZXQgTUFLRUZMQUdTICYmIFwKKwkkKE1BS0UpICQoSk9CU0ZMQUcpIC1DICQoQnVpbGREaXJlY3RvcnkpIGFsbAorCisjIFN0YWdlIHRoZSBidWlsZCB0byBhIHRlbXBvcmFyeSBpbnN0YWxsYXRpb24gYXJlYS4KKyMKKyMgV2UgaGF2ZSB0byB1bnNldCBNQUtFRkxBR1Mgc2luY2UgdGhleSBjb25mdXNlIHRoZSBwYWNrYWdlIGJ1aWxkIG90aGVyd2lzZS4KKworLlBIT05ZOiBzdGFnZQorc3RhZ2U6IGJ1aWxkIHwgJChSZXN1bHREaXJlY3RvcnkpCisJJChWZXJib3NlKXVuc2V0IE1BS0VGTEFHUyAmJiBcCisJJChNQUtFKSAkKEpPQlNGTEFHKSAtQyAkKEJ1aWxkRGlyZWN0b3J5KSBERVNURElSPSQoUmVzdWx0RGlyZWN0b3J5KSBpbnN0YWxsCisKK2NsZWFuOgorCSQoVmVyYm9zZSkkKFJNKSAkKFJNRkxBR1MpIC1yICQoUGFja2FnZVNvdXJjZURpcikKKwkkKFZlcmJvc2UpJChSTSkgJChSTUZMQUdTKSAtciAkKEJ1aWxkRGlyZWN0b3J5KQorCSQoVmVyYm9zZSkkKFJNKSAkKFJNRkxBR1MpIC1yICQoUmVzdWx0RGlyZWN0b3J5KQorCitpbmNsdWRlIHBvc3QubWFrCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L0FVVEhPUlMgYi91c2J1dGlscy0wLjg2L0FVVEhPUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE2MGUyNAotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvQVVUSE9SUwpAQCAtMCwwICsxLDQgQEAKK1Rob21hcyBTYWlsZXIsIDx0LnNhaWxlckBhbHVtbmkuZXRoei5jaD4KK0pvaGFubmVzIEVyZGZlbHQKK0RhdmlkIEJyb3duZWxsCitBdXJlbGllbiBKYXJubwpkaWZmIC0tZ2l0IGEvdXNidXRpbHMtMC44Ni9DT1BZSU5HIGIvdXNidXRpbHMtMC44Ni9DT1BZSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MGMzMWEKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L0NPUFlJTkcKQEAgLTAsMCArMSwzNDAgQEAKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisJCSAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisgQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKwkJCSAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCitzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcworR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KK3VzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKK3RoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bworeW91ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQorZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorCisgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAoreW91IGhhdmUuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUKK3NvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKK3JpZ2h0cy4KKworICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCisoMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAorZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KKworICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgordGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUKK3NvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KK3RoYXQgYW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24gdGhlIG9yaWdpbmFsCithdXRob3JzJyByZXB1dGF0aW9ucy4KKworICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQorcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQorcHJvZ3JhbSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55CitwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCittb2RpZmljYXRpb24gZm9sbG93LgorDAorCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgorCisgIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCit1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCityZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKK21lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Cit0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAorZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KK3RoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgorCitBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAorY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgorcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQoraXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCitXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKworICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKK3NvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQorY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQorY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQorbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OworYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCit5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgorCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCisKKyAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKKyAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAorICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKKyAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCisgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgorICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQorICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQorICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKKyAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcworICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CisgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgorICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQorDAorVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CitkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQord2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgorU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQorICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucworICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKKyAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKKyAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCisgICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKKyAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCisgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1RoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCitjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQorYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCitjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCitzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKK2FueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5Citmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKK2l0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKworSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZworYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCitkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisMCisgIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQorZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCit2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCitIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKK3BhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KKworICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCitkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKK3RoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCit0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgorcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgorWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KK3RoaXMgTGljZW5zZS4KKworICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CitpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAorY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkKK2FsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgordGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bworcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKworSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCithbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCithcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgorY2lyY3Vtc3RhbmNlcy4KKworSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQorcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKK2ludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisMCisgIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKK21heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwordGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZworY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCit0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKworICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucworb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCitiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCitFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCitzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQorbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKK3RoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uCisKKyAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQorcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgordG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKK21ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCitvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCitvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KKworCQkJICAgIE5PIFdBUlJBTlRZCisKKyAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCitGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KK09USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKK1BST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECitPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUworVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQorUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCitSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCitSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLAorSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCitPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECitUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCitQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KKworCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworDAorCSAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKKworICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Citwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CitmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KKworICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAordG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQorY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisKK0Fsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLgorCitJZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFjdGl2ZSwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlzCit3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgorCisgICAgR25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0IChDKSB5ZWFyICBuYW1lIG9mIGF1dGhvcgorICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KKyAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkKK2JlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQorbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4KKworWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKK3NjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmCituZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CisKKyAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQorICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KKworICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5ODkKKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKKworVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvCitwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQorY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCitsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvdXNidXRpbHMtMC44Ni9DaGFuZ2VMb2cgYi91c2J1dGlscy0wLjg2L0NoYW5nZUxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWM5MTgzCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9DaGFuZ2VMb2cKQEAgLTAsMCArMSwyMjcgQEAKKzIwMDkgR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KKwkqIHN3aXRjaGVkIG92ZXIgdG8gZ2l0LCBsb29rIGF0IHRoZSBjaGFuZ2Vsb2cgdGhlcmUKKwkgIGluc3RlYWQgb2YgaGVyZS4KKworMjAwNy0xMi0wMyBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmguaW46IGF1dG9yZWNvbmYKKwkqIHVzYi5pZHM6IHVwZGF0ZSB0byBjdXJyZW50IHZlcnNpb24KKwkqIGxzdXNiLmM6IGZpeCBtaW5vciBsYXlvdXQgZ2xpdGNoCisKKzIwMDctMTEtMTQgSm9lIFBldGVyc29uIDxsYXZham9lQGdlbnRvby5vcmc+CisJKiBjb25maWd1cmUuaW4sIGxzdXNiLmM6IHVzZSBBQ19DX0JJR0VORElBTgorCisyMDA3LTExLTA1IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogY29uZmlndXJlLCBjb25maWcuaC5pbjogYXV0b3JlY29uZgorCSogdXNiLmlkczogdXBkYXRlIHRvIGN1cnJlbnQgdmVyc2lvbgorCisyMDA3LTExLTA1IEpvZSBQZXRlcnNvbiA8bGF2YWpvZUBnZW50b28ub3JnPgorCSogY29uZmlndXJlLmluLCBsc3VzYi5jOiB1c2UgYXV0b3Rvb2xzIGluc3RlYWQgb2YgaGFyZC1jb2RlZAorCSAgY2hlY2sgZm9yIF9fRnJlZUJTRF9fLgorCisyMDA3LTEwLTMxIEpvZSBQZXRlcnNvbiA8bGF2YWpvZUBnZW50b28ub3JnPgorCSogbHN1c2IuYzogY29tcGlsZSBvbiBGcmVlQlNECisKKzIwMDctMTAtMjkgUm9iaW4gSC4gSm9obnNvbiA8cm9iYmF0MkBnZW50b28ub3JnPgorCSogdXBkYXRlLXVzYmlkcy5zaDogYWRkICItcSIgKHF1aWV0KSBvcHRpb24gZm9yIGNyb24gam9iczsKKwkgIHNraXAgZmlsZXN5c3RlbXMgdGhhdCBhcmUgcmVhZG9ubHkKKworMjAwNy0xMC0yMyBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIHVzYi5pZHM6IHVwZGF0ZSB0byBjdXJyZW50IHZlcnNpb24gKHdpdGggbmV3IG1haW50YWluZXIpCisJKiBsc3VzYi5jOiBTdG9wIGhpZGluZyB1bnJlY29nbml6ZWQvbWlzcGxhY2VkIGNsYXNzIHNwZWNpZmljCisJICBkZXNjcmlwdG9ycy4gIERvbid0IHJlcXVpcmUgY29tcHJlc3NlZCBmb3JtYXQgZm9yIHVzYi5pZHMKKwkgIGZpbGVzOyB3aGVuIGFuIHVuY29tcHJlc3NlZCBvbmUgaXMgdGhlcmUgKHByb2JhYmx5IGluc3RhbGxlZAorCSAgYnkgaGFuZCksIHByZWZlciBpdC4KKwkqIE1ha2VmaWxlLmFtOiByZW1vdmUgYnJva2VuIHVuaW5zdGFsbCBjb2RlLCAyLjQtb25seSB1c2Jtb2R1bGVzCisJKiBjb25maWd1cmUuaW4sIGxzdXNiLjg6IHZlcnNpb24gMC43Mzsgc3ludGF4IGZpeCBmb3IgZGlzYmxlLXpsaWIKKwkgIGhlbHBzdHJpbmcKKwkqIE1ha2VmaWxlLmluLCBjb25maWd1cmU6IGF1dG9yZWNvbmYKKworMjAwNy0wOC0yOCBCcmFuZG9uIFBoaWxpcHMgPGJyYW5kb25AaWZ1cC5vcmc+CisJKiBsc3VzYi5jOiBGaXggdGhlIG9mZnNldHMgZm9yIHRoZSB2aWRlbyBjbGFzcyBkZXNjcmlwdG9ycy4KKworMjAwNy0wNy0xNyBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IHVzZSBjb3JyZWN0IGVuZHBvaW50IG1heHBhY2tldCBtYXNrCisKKzIwMDYtMTItMTAgQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PiAKKwkqIGxzdXNiLmMsIG5hbWVzLmMsIE1ha2VmaWxlLmFtLCBjb25maWd1cmUuaW46IGd6aXBwZWQgdXNiLmlkcworCSogY29uZmlndXJlLCBvdGhlciBhdXRvY29uZiBzdHVmZjogcmVnZW5lcmF0ZSAKKworMjAwNi0xMi0xMCBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IGJ1Z2ZpeCBHVUlEIHByaW50aW5nOyBieXRlb3JkZXIgbWF0Y2hlcyByZmMgNDEyMiAKKwkqIHVzYi5pZHM6IHVwZGF0ZSB0byBjdXJyZW50IHZlcnNpb24KKworMjAwNi0wNS0wMyBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IGhhbmRsZSBhbm90aGVyIGNkYyBkZXNjcmlwdG9yIHR5cGU7IGVuZGlhbm5lc3MgZml4CisJICBmb3IgY29uZmlnIGRlc2NyaXB0b3IgbGVuZ3RoIGFuZCBlbmRwb2ludCBtYXhwYWNrZXQKKwkqIHVzYi5pZHM6IHVwZGF0ZSB0byBjdXJyZW50IHZlcnNpb24KKworMjAwNi0wMi0yOCBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGNvbmZpZ3VyZS5pbiwgbHN1c2IuODogdmVyc2lvbiAwLjcyCisJKiBjb25maWd1cmUsIG90aGVyIGF1dG9jb25mIHN0dWZmOiByZWdlbmVyYXRlIAorCisyMDA2LTAyLTE4IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogdXNidXRpbHMuc3BlYzogbWlub3IgY29ycmVjdGlvbnM7IHdlIHN0aWxsIGRvbid0IHVzZSB0aGlzIHRob3VnaC4KKwkqIHVzYm1vZHVsZXMuYywgdXNibW9kdWxlcy44OiBvYnNvbGV0ZSwgZG9uJ3QgYnVpbGQgb3IgZGlzdHJpYnV0ZQorCSAgaXQgYW55IG1vcmUuICBBbnkgMi40IGJhc2VkIHN5c3RlbXMgc2hvdWxkIHVzZSBvbGQgdXNidXRpbHMuCisKKzIwMDYtMDItMTMgQmpvcm4gQXVndXN0c3NvbiA8YXVndXN0QGNoYWxtZXJzLnNlPgorCSogbHN1c2IuYzogKEhJRCkgcHJldHR5cHJpbnRpbmcgb2YgVW5pdCBhbmQgVW5pdCBFeHBvbmVudCBHbG9iYWwgaXRlbXMKKworMjAwNi0wMi0xMyBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IHdoaXRlc3BhY2UgZml4ZXMKKworMjAwNi0wMi0wNiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QHNreW5ldC5iZT4KKwkqIGxzdXNiLmM6IHVwZGF0ZSB2aWRlbyBzdXBwb3J0LCBzaG93IGNhbWVyYSBpbmZvCisKKzIwMDYtMDItMDYgVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej4KKwkqIHVzYi5pZHM6IHVwZGF0ZWQgCisKKzIwMDYtMDItMDEgRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisJKiBsc3VzYi5jOiBhbGxvdyBsb25nZXIgdmFyaWFibGUgbGVuZ3RoIGJpdGZpZWxkcyBpbiBodWIgZGVzY3JpcHRvcnM7CisJICBpZ25vcmUgYWxsIGNsZWFybHktYnJva2VuIGh1YiBkZXNjcmlwdG9ycworCisyMDA2LTAxLTE3ICBOSUlCRSBZdXRha2EgIDxnbmlpYmVAZnNpai5vcmc+CisJKiBsc3VzYi5jIChkdW1wX2h1Yik6IEZvcm1hdCBzdHJpbmcgZml4LgorCSAgKGRvX2h1Yik6IEFsbG9jYXRlIGVub3VnaCBzcGFjZSBmb3IgdGhlIGh1YiBkZXNjcmlwdG9yLgorCSAgQ2hlY2sgcmV0dXJuIHZhbHVlIGluIGRpZmZlcmVudCB3YXkuCisKKzIwMDUtMTEtMDMgRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisJKiBsc3VzYi5jOiBiZXR0ZXIgZGlhZ25vc3RpY3M6IGZvciBpbnZhbGlkIENEQyBkZXNjcmlwdG9ycyBvZiBhCisJICB0eXBlIHdlIGtub3csIHNob3cgdGhhdCB0eXBlIHdpdGggdGhlIG1lc3NhZ2UuCisKKzIwMDUtMTAtMjEgTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBza3luZXQuYmU+CisJKiBsc3VzYi5jOiBhZGQgVmlkZW8gQ2xhc3Mgc3VwcG9ydCwgc3RhbmRhcmQgR1VJRCBwcmludGluZworCSogbmFtZXMuYzogc3VwcG9ydCB2aWRlbyB0ZXJtaW5hbCB0YWdzCisJKiB1c2IuaWRzOiB1cGRhdGVkIHdpdGggdmlkZW8gdGVybWluYWwgdGFncworCisyMDA1LTEwLTA4IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogbHN1c2IuYzogZHVtcCBpbnRlcmZhY2UgYXNzb2NpYXRpb25zCisKKzIwMDUtMDktMjYgRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisJKiBsc3VzYi5jOiBkdW1wIGRldmljZSBzdGF0dXM7IHN0YXJ0IGR1bXBpbmcgd2lyZWxlc3MgaW5mby4gIGRvbid0CisJICB5ZXQgZHVtcCBzZWN1cml0eSwgQk9TLCAiZW5kcG9pbnQgY29tcGFuaW9uIiwgb3Igb3RoZXIgbmV3CisJICBkZXNjcmlwdG9ycy4gIChTZWN1cml0eSBjYW4gd29yayB3aXRob3V0IHdpcmVsZXMgc3VwcG9ydC4uLikKKwkqIHVzYi5pZHM6IHVwZGF0ZSB0byBjdXJyZW50IHZlcnNpb24KKworMjAwNS0wNi0xOSBBdXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+IAorCSogbHN1c2IuYzogY29ycmVjdCBkdW1wIG9mIENDSUQgc3VwcG9ydGVkIHZvbHRhZ2VzCisKKzIwMDUtMDUtMTQgRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisJTGFiZWwgYXMgdmVyc2lvbiAwLjcxCisJKiB1c2IuaWRzOiB1cGRhdGUgdG8gY3VycmVudCB2ZXJzaW9uCisKKzIwMDUtMDUtMTMgVG9ieSBFcm5zdCA8dGVlQHNnaS5jb20+CisJKiBsc3VzYi5jOiAvcHJvYy9idXMvdXNiL0JCQi9EREQgbnVtYmVycyBhcmUgZGVjaW1hbCBub3Qgb2N0YWwKKwkqIGxzdXNiLjg6IGRpdHRvCisKKzIwMDUtMDQtMjkgT2xhZiBIZXJpbmcgPG9saEBzdXNlLmRlPgorCSogbHN1c2IuYzogZml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MKKworMjAwNS0wNC0xNCBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IGFkZCBzb21lIG1vcmUgQ0RDIFdIQ00gZHVtcGluZywgbWF0Y2hpbmcgYSBTb255IDNHIHBob25lCisKKzIwMDUtMDMtMjggQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PiAKKwkqIGxzdXNiLmM6IGRpc2FsbG93IGRlY2ltYWwgcHJvZHVjdCBhbmQgdmVuZG9yIGNvZGVzIChoZXggb25seSkKKworMjAwNS0wMy0wNSBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IGFkZCBiYXNpYyBDREMgTURMTSBkdW1waW5nLCB0byBjb3BlIHdpdGggbmV3IENEQworCSAgY29uZm9ybWFuY2UgbGllcyBmcm9tIGEgWmF1cnVzIEMtODYwCisKKzIwMDUtMDItMTEgVGhpZXJyeSBWaWduYXVkIDx0dmlnbmF1ZEBtYW5kcmFrZXNvZnQuY29tPgorCSogdXNibW9kdWxlcy44OiBmaXggLS1kZXZpY2UgL3Byb2MvdXNiL3VzYi9CQkIvREREIHR5cG8KKworMjAwNS0wMi0wMiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGNvbmZpZ3VyZS5pbjogZml4IHR5cG8sIHJlY29tbWVuZCBsaWJ1c2IgMC4xLjggbm90IDEuOAorCisyMDA1LTAxLTMwIERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCUZpeCBzb21lIG1vcmUgd2FybmluZ3MgcmVwb3J0ZWQgYnkgQXVyZWxpYW4sIGFuZCBjb25maWd1cmUKKwlnY2MgZm9yICItVyAtV3VudXNlZCIgdG8gZGlzY291cmFnZSBtb3JlIGZyb20gYXBwZWFyaW5nLgorCisyMDA1LTAxLTI3IEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4gCisJRml4ICJjb25maWd1cmUgLS1lbmFibGUtdXNibW9kdWxlcyIgZ2xpdGNoLCBhbmQgcmVtb3ZlCisJc29tZSB3YXJuaW5ncyByZXBvcnRlZCBieSBHQ0MgNC4wIChhbmQgImdjYyAtV2FsbCAtVyIpLgorCisyMDA1LTAxLTIyIERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogbHN1c2IuYzogIGZvciBodWJzLCBkdW1wIHBvcnQgc3RhdHVzLgorCSogQVVUSE9SUywgTkVXUywgUkVBRE1FLCBsc3VzYi44OiAgdXBkYXRlL2NvcnJlY3QKKwkqIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuYW06IGJ1bXBlZCB2ZXJzaW9uLCB1c2UgbW9yZSBjdXJyZW50CisJICBhdXRvdG9vbHMsIGRpc2FibGUgdXNibW9kdWxlcyBieSBkZWZhdWx0LgorCisyMDA1LTAxLTA1IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogbHN1c2IuYzogIGhhbmRsZSBtb3JlIGRlc2NyaXB0b3JzOyBtaXNwbGFjZWQgY29tbSBkZXNjcmlwdG9ycworCSAgZ2V0IGludGVycHJldGVkOyBzb21lIG1pbm9yIGZpeGVzLgorCSogdXNiLmlkczogdXBkYXRlIHRvIGN1cnJlbnQgdmVyc2lvbgorCisyMDA0LTEyLTExIERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogdXBkYXRlLXVzYmlkcy5zaDogIGFkZCwgYmFzZWQgb24gdXBkYXRlLXBjaWlkcy5zaAorCisyMDA0LTEwLTIwIERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogbHN1c2IuYzogbWlub3IgZm9ybWF0dGluZyB1cGRhdGVzOyBhZGQgYSB3YXJuaW5nIHdoZW4gdGhvc2UgSElECisJICBkZXNjcmlwdG9ycyBhcmVuJ3QgYXZhaWxhYmxlLgorCisyMDA0LTEwLTIwIEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4gCisJKiBsc3VzYi5jOiBidWdmaXhlcyBmb3IgcmVhZGluZyBISUQgZGVzY3JpcHRvcnMKKworMjAwNC0xMC0xNSBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkqIGxzdXNiLmM6IFVTQiAyLjAgdXBkYXRlcyBmb3IgZHVhbC1zcGVlZCBhbmQgT1RHIGRldmljZXMsIGh1YnMuCisJICBEaXNwbGF5IGFsbCBkZXNjcmlwdG9ycyBpbiB0aGUgcmlnaHQgc2VxdWVuY2UsIGFuZCBkdW1wIG9uZXMKKwkgIHdlIGRvbid0ICh5ZXQpIHJlY29nbml6ZS4gIE1pbm9yIGNsZWFudXBzLgorCSogdXNiLmlkczogdXBkYXRlIHRvIGN1cnJlbnQgdmVyc2lvbgorCisyMDA0LTAyLTIwIFRob21hcyBTYWlsZXIgIDxzYWlsZXJAZWxkcmljaC5lZS5ldGh6LmNoPgorCU1vdmUgdG8gQ1ZTIGF0IGxpbnV4LXVzYi5zZi5uZXQKKwlMYWJlbCBhcyB2ZXJzaW9uIDAuMTIuCisKKzIwMDMtMTItMDYgQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PiAKKwlVcGRhdGUgRGViaWFuIHdpdGggbGlidXNiIGJhc2VkIHZlcnNpb24uCisKKzIwMDMtMDgtMzEgRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisJKiBsc3VzYi5jOiAoYWdhaW5zdCAwLjExKSByZWNvZ25pemUgQ0RDIGRlc2NyaXB0b3JzLCBVU0IgMi4wIHVwZGF0ZXMsCisJICBzdHJpbmcgaGFuZGxpbmcgdXBkYXRlcywgCisKKzIwMDMtPz8tPz8gIEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4gCisJQ29udmVydCB0byBsYXRlc3QgbGlidXNiLCBzdXBwb3J0aW5nIEJTRCBhbmQgRGFyd2luLgorCisyMDAyLTA4LTAyIFBlZHJvIExvcGV6LUNhYmFuaWxsYXMgPHBsY2xAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCSogbHN1c2IuYzogKGFnYWluc3QgMC4xMCkgcmVjb2duaXplIFVTQiBNSURJIGNsYXNzIHNwZWNpZmljIGRlc2NyaXB0b3JzLgorCisyMDAwLTExLTA2ICBUaG9tYXMgU2FpbGVyICA8c2FpbGVyQGVsZHJpY2guZWUuZXRoei5jaD4KKworCSogbmFtZXMuYywgbHN1c2IuYzogRml4dXAgb2YgR3VudGhlciBNYXllcidzIHBhdGNoOyBkbyBub3QgZXhwb3J0CisJaW50ZXJuYWwgc3RvcmFnZSBhcmNoIG91dCBvZiBuYW1lcy5oOyBmb3JtYXR0aW5nIGJlYXV0aWZpY2F0aW9uOworCWZpeGVkIHNldmVyYWwgbWVtb3J5IGxlYWtzIGFuZCBzY3JpYmJsZXMKKworMjAwMC0xMS0wNSAgR3VudGhlciBNYXllciA8R3VudGhlci5NYXllckB0LW9ubGluZS5kZT4KKwkqIGxzdXNiLmM6IEh1YiBEZXNjcmlwdG9yIGRlY29kZQorCSogdXNiLnN0ZDogTmV3CisJKiBsc3VzYi5jOiBISUQgUmVwb3J0IERlc2NyaXB0b3IgZGVjb2RlCisJKiBsc3VzYi5jOiBTdHJpbmcgRGVzY3JpcHRvcnMgdy8gTEFOR0lELCBhc3N1bWUgVW5pY29kZS1BU0NJSSBmb3IgdGhlIG1vbWVudAorCisyMDAwLTExLTAzICBBZGFtIEouIFJpY2h0ZXIgIDxhZGFtQHlnZ2RyYXNpbC5jb20+CisKKwkqIGxzdXNiLmM6IFJldHJ5IHVzYl9jb250cm9sLgorCisxOTk5LTEyLTAzICBUaG9tYXMgU2FpbGVyICA8c2FpbGVyQHNwYWNlYmFsbHMuZWUuZXRoei5jaD4KKworCSogbHN1c2IuYzogYm9ndXMgZXJyb3IgY2hlY2tzIGZvciBvcGVuIGNhbGxzLCByZXBvcnRlZCBieSBNYXR0aGV3IERhcm0KKworMTk5OS0wOS0xNyAgVGhvbWFzIFNhaWxlciAgPHNhaWxlckBpZmUuZWUuZXRoei5jaD4KKworCSogY29uZmlndXJlLmluOiBidW1wZWQgdmVyc2lvbiBudW1iZXIuCisKKwkqIHVzYnV0aWxzLnNwZWM6IGxpa2V3aXNlLgorCisJKiBuYW1lcy5jOiBhZGRlZCBwYXJzaW5nIHJvdXRpbmVzIGZvciB0ZXJtaW5hbCB0eXBlcyB0byBiZSBsaXN0ZWQgaW4gdXNiLmlkcworCisJKiBuYW1lcy5oOiBsaWtld2lzZS4KKworCSogbHN1c2IuYyAoZHVtcF9hdWRpb2NvbnRyb2xfaW50ZXJmYWNlKTogbGlrZXdpc2UuCisKKzE5OTktMDktMTYgIFRob21hcyBTYWlsZXIgIDxzYWlsZXJAaWZlLmVlLmV0aHouY2g+CisKKwkqIGxzdXNiLmMgKGR1bXBfYXVkaW9jb250cm9sX2ludGVyZmFjZSk6IGZpeGVkIGEgY291cGxlIG9mIGZvcmdvdHRlbiBwcmludGYgYXJndW1lbnRzCisKKzE5OTktMDktMTMgIFRob21hcyBTYWlsZXIgIDxzYWlsZXJAaWZlLmVlLmV0aHouY2g+CisKKwkqIENyZWF0ZWQgcGFja2FnZQorCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L0lOU1RBTEwgYi91c2J1dGlscy0wLjg2L0lOU1RBTEwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQyYTE3YQotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvSU5TVEFMTApAQCAtMCwwICsxLDE4MiBAQAorQmFzaWMgSW5zdGFsbGF0aW9uCis9PT09PT09PT09PT09PT09PT0KKworICAgVGhlc2UgYXJlIGdlbmVyaWMgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucy4KKworICAgVGhlIGBjb25maWd1cmUnIHNoZWxsIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBjb3JyZWN0IHZhbHVlcyBmb3IKK3ZhcmlvdXMgc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24uICBJdCB1c2VzCit0aG9zZSB2YWx1ZXMgdG8gY3JlYXRlIGEgYE1ha2VmaWxlJyBpbiBlYWNoIGRpcmVjdG9yeSBvZiB0aGUgcGFja2FnZS4KK0l0IG1heSBhbHNvIGNyZWF0ZSBvbmUgb3IgbW9yZSBgLmgnIGZpbGVzIGNvbnRhaW5pbmcgc3lzdGVtLWRlcGVuZGVudAorZGVmaW5pdGlvbnMuICBGaW5hbGx5LCBpdCBjcmVhdGVzIGEgc2hlbGwgc2NyaXB0IGBjb25maWcuc3RhdHVzJyB0aGF0Cit5b3UgY2FuIHJ1biBpbiB0aGUgZnV0dXJlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGEgZmlsZQorYGNvbmZpZy5jYWNoZScgdGhhdCBzYXZlcyB0aGUgcmVzdWx0cyBvZiBpdHMgdGVzdHMgdG8gc3BlZWQgdXAKK3JlY29uZmlndXJpbmcsIGFuZCBhIGZpbGUgYGNvbmZpZy5sb2cnIGNvbnRhaW5pbmcgY29tcGlsZXIgb3V0cHV0CisodXNlZnVsIG1haW5seSBmb3IgZGVidWdnaW5nIGBjb25maWd1cmUnKS4KKworICAgSWYgeW91IG5lZWQgdG8gZG8gdW51c3VhbCB0aGluZ3MgdG8gY29tcGlsZSB0aGUgcGFja2FnZSwgcGxlYXNlIHRyeQordG8gZmlndXJlIG91dCBob3cgYGNvbmZpZ3VyZScgY291bGQgY2hlY2sgd2hldGhlciB0byBkbyB0aGVtLCBhbmQgbWFpbAorZGlmZnMgb3IgaW5zdHJ1Y3Rpb25zIHRvIHRoZSBhZGRyZXNzIGdpdmVuIGluIHRoZSBgUkVBRE1FJyBzbyB0aGV5IGNhbgorYmUgY29uc2lkZXJlZCBmb3IgdGhlIG5leHQgcmVsZWFzZS4gIElmIGF0IHNvbWUgcG9pbnQgYGNvbmZpZy5jYWNoZScKK2NvbnRhaW5zIHJlc3VsdHMgeW91IGRvbid0IHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4KKworICAgVGhlIGZpbGUgYGNvbmZpZ3VyZS5pbicgaXMgdXNlZCB0byBjcmVhdGUgYGNvbmZpZ3VyZScgYnkgYSBwcm9ncmFtCitjYWxsZWQgYGF1dG9jb25mJy4gIFlvdSBvbmx5IG5lZWQgYGNvbmZpZ3VyZS5pbicgaWYgeW91IHdhbnQgdG8gY2hhbmdlCitpdCBvciByZWdlbmVyYXRlIGBjb25maWd1cmUnIHVzaW5nIGEgbmV3ZXIgdmVyc2lvbiBvZiBgYXV0b2NvbmYnLgorCitUaGUgc2ltcGxlc3Qgd2F5IHRvIGNvbXBpbGUgdGhpcyBwYWNrYWdlIGlzOgorCisgIDEuIGBjZCcgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBwYWNrYWdlJ3Mgc291cmNlIGNvZGUgYW5kIHR5cGUKKyAgICAgYC4vY29uZmlndXJlJyB0byBjb25maWd1cmUgdGhlIHBhY2thZ2UgZm9yIHlvdXIgc3lzdGVtLiAgSWYgeW91J3JlCisgICAgIHVzaW5nIGBjc2gnIG9uIGFuIG9sZCB2ZXJzaW9uIG9mIFN5c3RlbSBWLCB5b3UgbWlnaHQgbmVlZCB0byB0eXBlCisgICAgIGBzaCAuL2NvbmZpZ3VyZScgaW5zdGVhZCB0byBwcmV2ZW50IGBjc2gnIGZyb20gdHJ5aW5nIHRvIGV4ZWN1dGUKKyAgICAgYGNvbmZpZ3VyZScgaXRzZWxmLgorCisgICAgIFJ1bm5pbmcgYGNvbmZpZ3VyZScgdGFrZXMgYXdoaWxlLiAgV2hpbGUgcnVubmluZywgaXQgcHJpbnRzIHNvbWUKKyAgICAgbWVzc2FnZXMgdGVsbGluZyB3aGljaCBmZWF0dXJlcyBpdCBpcyBjaGVja2luZyBmb3IuCisKKyAgMi4gVHlwZSBgbWFrZScgdG8gY29tcGlsZSB0aGUgcGFja2FnZS4KKworICAzLiBPcHRpb25hbGx5LCB0eXBlIGBtYWtlIGNoZWNrJyB0byBydW4gYW55IHNlbGYtdGVzdHMgdGhhdCBjb21lIHdpdGgKKyAgICAgdGhlIHBhY2thZ2UuCisKKyAgNC4gVHlwZSBgbWFrZSBpbnN0YWxsJyB0byBpbnN0YWxsIHRoZSBwcm9ncmFtcyBhbmQgYW55IGRhdGEgZmlsZXMgYW5kCisgICAgIGRvY3VtZW50YXRpb24uCisKKyAgNS4gWW91IGNhbiByZW1vdmUgdGhlIHByb2dyYW0gYmluYXJpZXMgYW5kIG9iamVjdCBmaWxlcyBmcm9tIHRoZQorICAgICBzb3VyY2UgY29kZSBkaXJlY3RvcnkgYnkgdHlwaW5nIGBtYWtlIGNsZWFuJy4gIFRvIGFsc28gcmVtb3ZlIHRoZQorICAgICBmaWxlcyB0aGF0IGBjb25maWd1cmUnIGNyZWF0ZWQgKHNvIHlvdSBjYW4gY29tcGlsZSB0aGUgcGFja2FnZSBmb3IKKyAgICAgYSBkaWZmZXJlbnQga2luZCBvZiBjb21wdXRlciksIHR5cGUgYG1ha2UgZGlzdGNsZWFuJy4gIFRoZXJlIGlzCisgICAgIGFsc28gYSBgbWFrZSBtYWludGFpbmVyLWNsZWFuJyB0YXJnZXQsIGJ1dCB0aGF0IGlzIGludGVuZGVkIG1haW5seQorICAgICBmb3IgdGhlIHBhY2thZ2UncyBkZXZlbG9wZXJzLiAgSWYgeW91IHVzZSBpdCwgeW91IG1heSBoYXZlIHRvIGdldAorICAgICBhbGwgc29ydHMgb2Ygb3RoZXIgcHJvZ3JhbXMgaW4gb3JkZXIgdG8gcmVnZW5lcmF0ZSBmaWxlcyB0aGF0IGNhbWUKKyAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitDb21waWxlcnMgYW5kIE9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PQorCisgICBTb21lIHN5c3RlbXMgcmVxdWlyZSB1bnVzdWFsIG9wdGlvbnMgZm9yIGNvbXBpbGF0aW9uIG9yIGxpbmtpbmcgdGhhdAordGhlIGBjb25maWd1cmUnIHNjcmlwdCBkb2VzIG5vdCBrbm93IGFib3V0LiAgWW91IGNhbiBnaXZlIGBjb25maWd1cmUnCitpbml0aWFsIHZhbHVlcyBmb3IgdmFyaWFibGVzIGJ5IHNldHRpbmcgdGhlbSBpbiB0aGUgZW52aXJvbm1lbnQuICBVc2luZworYSBCb3VybmUtY29tcGF0aWJsZSBzaGVsbCwgeW91IGNhbiBkbyB0aGF0IG9uIHRoZSBjb21tYW5kIGxpbmUgbGlrZQordGhpczoKKyAgICAgQ0M9Yzg5IENGTEFHUz0tTzIgTElCUz0tbHBvc2l4IC4vY29uZmlndXJlCisKK09yIG9uIHN5c3RlbXMgdGhhdCBoYXZlIHRoZSBgZW52JyBwcm9ncmFtLCB5b3UgY2FuIGRvIGl0IGxpa2UgdGhpczoKKyAgICAgZW52IENQUEZMQUdTPS1JL3Vzci9sb2NhbC9pbmNsdWRlIExERkxBR1M9LXMgLi9jb25maWd1cmUKKworQ29tcGlsaW5nIEZvciBNdWx0aXBsZSBBcmNoaXRlY3R1cmVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgWW91IGNhbiBjb21waWxlIHRoZSBwYWNrYWdlIGZvciBtb3JlIHRoYW4gb25lIGtpbmQgb2YgY29tcHV0ZXIgYXQgdGhlCitzYW1lIHRpbWUsIGJ5IHBsYWNpbmcgdGhlIG9iamVjdCBmaWxlcyBmb3IgZWFjaCBhcmNoaXRlY3R1cmUgaW4gdGhlaXIKK293biBkaXJlY3RvcnkuICBUbyBkbyB0aGlzLCB5b3UgbXVzdCB1c2UgYSB2ZXJzaW9uIG9mIGBtYWtlJyB0aGF0CitzdXBwb3J0cyB0aGUgYFZQQVRIJyB2YXJpYWJsZSwgc3VjaCBhcyBHTlUgYG1ha2UnLiAgYGNkJyB0byB0aGUKK2RpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0aGUgb2JqZWN0IGZpbGVzIGFuZCBleGVjdXRhYmxlcyB0byBnbyBhbmQgcnVuCit0aGUgYGNvbmZpZ3VyZScgc2NyaXB0LiAgYGNvbmZpZ3VyZScgYXV0b21hdGljYWxseSBjaGVja3MgZm9yIHRoZQorc291cmNlIGNvZGUgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IGBjb25maWd1cmUnIGlzIGluIGFuZCBpbiBgLi4nLgorCisgICBJZiB5b3UgaGF2ZSB0byB1c2UgYSBgbWFrZScgdGhhdCBkb2VzIG5vdCBzdXBwb3J0cyB0aGUgYFZQQVRIJwordmFyaWFibGUsIHlvdSBoYXZlIHRvIGNvbXBpbGUgdGhlIHBhY2thZ2UgZm9yIG9uZSBhcmNoaXRlY3R1cmUgYXQgYSB0aW1lCitpbiB0aGUgc291cmNlIGNvZGUgZGlyZWN0b3J5LiAgQWZ0ZXIgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBwYWNrYWdlIGZvcgorb25lIGFyY2hpdGVjdHVyZSwgdXNlIGBtYWtlIGRpc3RjbGVhbicgYmVmb3JlIHJlY29uZmlndXJpbmcgZm9yIGFub3RoZXIKK2FyY2hpdGVjdHVyZS4KKworSW5zdGFsbGF0aW9uIE5hbWVzCis9PT09PT09PT09PT09PT09PT0KKworICAgQnkgZGVmYXVsdCwgYG1ha2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIHRoZSBwYWNrYWdlJ3MgZmlsZXMgaW4KK2AvdXNyL2xvY2FsL2JpbicsIGAvdXNyL2xvY2FsL21hbicsIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeSBhbgoraW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIGAvdXNyL2xvY2FsJyBieSBnaXZpbmcgYGNvbmZpZ3VyZScgdGhlCitvcHRpb24gYC0tcHJlZml4PVBBVEgnLgorCisgICBZb3UgY2FuIHNwZWNpZnkgc2VwYXJhdGUgaW5zdGFsbGF0aW9uIHByZWZpeGVzIGZvcgorYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZpbGVzIGFuZCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMuICBJZiB5b3UKK2dpdmUgYGNvbmZpZ3VyZScgdGhlIG9wdGlvbiBgLS1leGVjLXByZWZpeD1QQVRIJywgdGhlIHBhY2thZ2Ugd2lsbCB1c2UKK1BBVEggYXMgdGhlIHByZWZpeCBmb3IgaW5zdGFsbGluZyBwcm9ncmFtcyBhbmQgbGlicmFyaWVzLgorRG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZGF0YSBmaWxlcyB3aWxsIHN0aWxsIHVzZSB0aGUgcmVndWxhciBwcmVmaXguCisKKyAgIEluIGFkZGl0aW9uLCBpZiB5b3UgdXNlIGFuIHVudXN1YWwgZGlyZWN0b3J5IGxheW91dCB5b3UgY2FuIGdpdmUKK29wdGlvbnMgbGlrZSBgLS1iaW5kaXI9UEFUSCcgdG8gc3BlY2lmeSBkaWZmZXJlbnQgdmFsdWVzIGZvciBwYXJ0aWN1bGFyCitraW5kcyBvZiBmaWxlcy4gIFJ1biBgY29uZmlndXJlIC0taGVscCcgZm9yIGEgbGlzdCBvZiB0aGUgZGlyZWN0b3JpZXMKK3lvdSBjYW4gc2V0IGFuZCB3aGF0IGtpbmRzIG9mIGZpbGVzIGdvIGluIHRoZW0uCisKKyAgIElmIHRoZSBwYWNrYWdlIHN1cHBvcnRzIGl0LCB5b3UgY2FuIGNhdXNlIHByb2dyYW1zIHRvIGJlIGluc3RhbGxlZAord2l0aCBhbiBleHRyYSBwcmVmaXggb3Igc3VmZml4IG9uIHRoZWlyIG5hbWVzIGJ5IGdpdmluZyBgY29uZmlndXJlJyB0aGUKK29wdGlvbiBgLS1wcm9ncmFtLXByZWZpeD1QUkVGSVgnIG9yIGAtLXByb2dyYW0tc3VmZml4PVNVRkZJWCcuCisKK09wdGlvbmFsIEZlYXR1cmVzCis9PT09PT09PT09PT09PT09PQorCisgICBTb21lIHBhY2thZ2VzIHBheSBhdHRlbnRpb24gdG8gYC0tZW5hYmxlLUZFQVRVUkUnIG9wdGlvbnMgdG8KK2Bjb25maWd1cmUnLCB3aGVyZSBGRUFUVVJFIGluZGljYXRlcyBhbiBvcHRpb25hbCBwYXJ0IG9mIHRoZSBwYWNrYWdlLgorVGhleSBtYXkgYWxzbyBwYXkgYXR0ZW50aW9uIHRvIGAtLXdpdGgtUEFDS0FHRScgb3B0aW9ucywgd2hlcmUgUEFDS0FHRQoraXMgc29tZXRoaW5nIGxpa2UgYGdudS1hcycgb3IgYHgnIChmb3IgdGhlIFggV2luZG93IFN5c3RlbSkuICBUaGUKK2BSRUFETUUnIHNob3VsZCBtZW50aW9uIGFueSBgLS1lbmFibGUtJyBhbmQgYC0td2l0aC0nIG9wdGlvbnMgdGhhdCB0aGUKK3BhY2thZ2UgcmVjb2duaXplcy4KKworICAgRm9yIHBhY2thZ2VzIHRoYXQgdXNlIHRoZSBYIFdpbmRvdyBTeXN0ZW0sIGBjb25maWd1cmUnIGNhbiB1c3VhbGx5CitmaW5kIHRoZSBYIGluY2x1ZGUgYW5kIGxpYnJhcnkgZmlsZXMgYXV0b21hdGljYWxseSwgYnV0IGlmIGl0IGRvZXNuJ3QsCit5b3UgY2FuIHVzZSB0aGUgYGNvbmZpZ3VyZScgb3B0aW9ucyBgLS14LWluY2x1ZGVzPURJUicgYW5kCitgLS14LWxpYnJhcmllcz1ESVInIHRvIHNwZWNpZnkgdGhlaXIgbG9jYXRpb25zLgorCitTcGVjaWZ5aW5nIHRoZSBTeXN0ZW0gVHlwZQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgVGhlcmUgbWF5IGJlIHNvbWUgZmVhdHVyZXMgYGNvbmZpZ3VyZScgY2FuIG5vdCBmaWd1cmUgb3V0CithdXRvbWF0aWNhbGx5LCBidXQgbmVlZHMgdG8gZGV0ZXJtaW5lIGJ5IHRoZSB0eXBlIG9mIGhvc3QgdGhlIHBhY2thZ2UKK3dpbGwgcnVuIG9uLiAgVXN1YWxseSBgY29uZmlndXJlJyBjYW4gZmlndXJlIHRoYXQgb3V0LCBidXQgaWYgaXQgcHJpbnRzCithIG1lc3NhZ2Ugc2F5aW5nIGl0IGNhbiBub3QgZ3Vlc3MgdGhlIGhvc3QgdHlwZSwgZ2l2ZSBpdCB0aGUKK2AtLWhvc3Q9VFlQRScgb3B0aW9uLiAgVFlQRSBjYW4gZWl0aGVyIGJlIGEgc2hvcnQgbmFtZSBmb3IgdGhlIHN5c3RlbQordHlwZSwgc3VjaCBhcyBgc3VuNCcsIG9yIGEgY2Fub25pY2FsIG5hbWUgd2l0aCB0aHJlZSBmaWVsZHM6CisgICAgIENQVS1DT01QQU5ZLVNZU1RFTQorCitTZWUgdGhlIGZpbGUgYGNvbmZpZy5zdWInIGZvciB0aGUgcG9zc2libGUgdmFsdWVzIG9mIGVhY2ggZmllbGQuICBJZgorYGNvbmZpZy5zdWInIGlzbid0IGluY2x1ZGVkIGluIHRoaXMgcGFja2FnZSwgdGhlbiB0aGlzIHBhY2thZ2UgZG9lc24ndAorbmVlZCB0byBrbm93IHRoZSBob3N0IHR5cGUuCisKKyAgIElmIHlvdSBhcmUgYnVpbGRpbmcgY29tcGlsZXIgdG9vbHMgZm9yIGNyb3NzLWNvbXBpbGluZywgeW91IGNhbiBhbHNvCit1c2UgdGhlIGAtLXRhcmdldD1UWVBFJyBvcHRpb24gdG8gc2VsZWN0IHRoZSB0eXBlIG9mIHN5c3RlbSB0aGV5IHdpbGwKK3Byb2R1Y2UgY29kZSBmb3IgYW5kIHRoZSBgLS1idWlsZD1UWVBFJyBvcHRpb24gdG8gc2VsZWN0IHRoZSB0eXBlIG9mCitzeXN0ZW0gb24gd2hpY2ggeW91IGFyZSBjb21waWxpbmcgdGhlIHBhY2thZ2UuCisKK1NoYXJpbmcgRGVmYXVsdHMKKz09PT09PT09PT09PT09PT0KKworICAgSWYgeW91IHdhbnQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBgY29uZmlndXJlJyBzY3JpcHRzIHRvIHNoYXJlLAoreW91IGNhbiBjcmVhdGUgYSBzaXRlIHNoZWxsIHNjcmlwdCBjYWxsZWQgYGNvbmZpZy5zaXRlJyB0aGF0IGdpdmVzCitkZWZhdWx0IHZhbHVlcyBmb3IgdmFyaWFibGVzIGxpa2UgYENDJywgYGNhY2hlX2ZpbGUnLCBhbmQgYHByZWZpeCcuCitgY29uZmlndXJlJyBsb29rcyBmb3IgYFBSRUZJWC9zaGFyZS9jb25maWcuc2l0ZScgaWYgaXQgZXhpc3RzLCB0aGVuCitgUFJFRklYL2V0Yy9jb25maWcuc2l0ZScgaWYgaXQgZXhpc3RzLiAgT3IsIHlvdSBjYW4gc2V0IHRoZQorYENPTkZJR19TSVRFJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIHNpdGUgc2NyaXB0LgorQSB3YXJuaW5nOiBub3QgYWxsIGBjb25maWd1cmUnIHNjcmlwdHMgbG9vayBmb3IgYSBzaXRlIHNjcmlwdC4KKworT3BlcmF0aW9uIENvbnRyb2xzCis9PT09PT09PT09PT09PT09PT0KKworICAgYGNvbmZpZ3VyZScgcmVjb2duaXplcyB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29udHJvbCBob3cgaXQKK29wZXJhdGVzLgorCitgLS1jYWNoZS1maWxlPUZJTEUnCisgICAgIFVzZSBhbmQgc2F2ZSB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdHMgaW4gRklMRSBpbnN0ZWFkIG9mCisgICAgIGAuL2NvbmZpZy5jYWNoZScuICBTZXQgRklMRSB0byBgL2Rldi9udWxsJyB0byBkaXNhYmxlIGNhY2hpbmcsIGZvcgorICAgICBkZWJ1Z2dpbmcgYGNvbmZpZ3VyZScuCisKK2AtLWhlbHAnCisgICAgIFByaW50IGEgc3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB0byBgY29uZmlndXJlJywgYW5kIGV4aXQuCisKK2AtLXF1aWV0JworYC0tc2lsZW50JworYC1xJworICAgICBEbyBub3QgcHJpbnQgbWVzc2FnZXMgc2F5aW5nIHdoaWNoIGNoZWNrcyBhcmUgYmVpbmcgbWFkZS4gIFRvCisgICAgIHN1cHByZXNzIGFsbCBub3JtYWwgb3V0cHV0LCByZWRpcmVjdCBpdCB0byBgL2Rldi9udWxsJyAoYW55IGVycm9yCisgICAgIG1lc3NhZ2VzIHdpbGwgc3RpbGwgYmUgc2hvd24pLgorCitgLS1zcmNkaXI9RElSJworICAgICBMb29rIGZvciB0aGUgcGFja2FnZSdzIHNvdXJjZSBjb2RlIGluIGRpcmVjdG9yeSBESVIuICBVc3VhbGx5CisgICAgIGBjb25maWd1cmUnIGNhbiBkZXRlcm1pbmUgdGhhdCBkaXJlY3RvcnkgYXV0b21hdGljYWxseS4KKworYC0tdmVyc2lvbicKKyAgICAgUHJpbnQgdGhlIHZlcnNpb24gb2YgQXV0b2NvbmYgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYGNvbmZpZ3VyZScKKyAgICAgc2NyaXB0LCBhbmQgZXhpdC4KKworYGNvbmZpZ3VyZScgYWxzbyBhY2NlcHRzIHNvbWUgb3RoZXIsIG5vdCB3aWRlbHkgdXNlZnVsLCBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvdXNidXRpbHMtMC44Ni9NYWtlZmlsZS5hbSBiL3VzYnV0aWxzLTAuODYvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NlMTZiNQotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSw3MyBAQAorQU1fTERGTEFHUyA9IFwKKwktV2wsLS1hcy1uZWVkZWQKKworZGF0YV9EQVRBID0gXAorCXVzYi5pZHMKK2lmIEhBVkVfWkxJQgorZGF0YV9EQVRBICs9IHVzYi5pZHMuZ3oKK2VuZGlmCisKK3NiaW5fUFJPR1JBTVMgPSBcCisJbHN1c2IKKworc2Jpbl9TQ1JJUFRTID0gXAorCXVwZGF0ZS11c2JpZHMuc2gKKworYmluX1NDUklQVFMgPSBcCisJdXNiLWRldmljZXMKKworbHN1c2JfU09VUkNFUyA9IFwKKwlsc3VzYi5jIFwKKwlsc3VzYi10LmMgXAorCWxpc3QuaCBcCisJbmFtZXMuYyBuYW1lcy5oIFwKKwlkZXZ0cmVlLmMgZGV2dHJlZS5oIFwKKwl1c2JtaXNjLmMgdXNibWlzYy5oCisKK2xzdXNiX0NQUEZMQUdTID0gXAorCSQoQU1fQ1BQRkxBR1MpIFwKKwktRERBVEFESVI9XCIkKGRhdGFkaXIpXCIKKworbHN1c2JfTERBREQgPSBcCisJJChMSUJVU0JfTElCUykKKworbWFuX01BTlMgPSBcCisJbHN1c2IuOAlcCisJdXNiLWRldmljZXMuMQorCitFWFRSQV9ESVNUID0gXAorCXVzYi5pZHMgXAorCXVwZGF0ZS11c2JpZHMuc2guaW4gXAorCWxzdXNiLjguaW4gXAorCXVzYi1kZXZpY2VzLjEuaW4gXAorCXVzYi1kZXZpY2VzIFwKKwl1c2J1dGlscy5wYy5pbgorCit1c2IuaWRzLmd6OiAkKHNyY2RpcikvdXNiLmlkcworCWd6aXAgLWMgLTkgJDwgPiAkQAorCit1cGRhdGUtdXNiaWRzLnNoOiAkKHNyY2RpcikvdXBkYXRlLXVzYmlkcy5zaC5pbgorCXNlZCAnc3xAdXNiaWRzQHwkKGRhdGFkaXIpL3VzYi5pZHN8ZycgJDwgPiRACisJY2htb2QgNzU1ICRACisKK2xzdXNiLjg6ICQoc3JjZGlyKS9sc3VzYi44LmluCisJc2VkICdzfFZFUlNJT058JChWRVJTSU9OKXxnO3N8QHVzYmlkc0B8JChkYXRhZGlyKS91c2IuaWRzfGcnICQ8ID4kQAorCit1c2ItZGV2aWNlcy4xOiAkKHNyY2RpcikvdXNiLWRldmljZXMuMS5pbgorCXNlZCAnc3xWRVJTSU9OfCQoVkVSU0lPTil8ZycgJDwgPiRACisKK3BrZ2NvbmZpZ2RpciA9ICQoZGF0YWRpcikvcGtnY29uZmlnCitwa2djb25maWdfREFUQSA9IHVzYnV0aWxzLnBjCisKK3VzYnV0aWxzLnBjOiAkKHNyY2RpcikvdXNidXRpbHMucGMuaW4KKwlzZWQgJ3N8QHVzYmlkc0B8JChkYXRhZGlyKS91c2IuaWRzfGc7c3xAVkVSU0lPTltAXXwkKFZFUlNJT04pfGcnICQ8ID4kQAorCitESVNUQ0xFQU5GSUxFUyA9IFwKKwl1c2IuaWRzLmd6IFwKKwlsc3VzYi44IFwKKwl1c2ItZGV2aWNlcy4xIFwKKwl1cGRhdGUtdXNiaWRzLnNoIFwKKwl1c2J1dGlscy5wYworCitkaXN0Y2xlYW4tbG9jYWw6CisJcm0gLXJmIGF1dG9tNHRlLmNhY2hlCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L01ha2VmaWxlLmluIGIvdXNidXRpbHMtMC44Ni9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTNhMzYzCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDg5OSBAQAorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMC4yIGZyb20gTWFrZWZpbGUuYW0uCisjIEBjb25maWd1cmVfaW5wdXRACisKKyMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKyMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuCisKK0BTRVRfTUFLRUAKKworCisKK1ZQQVRIID0gQHNyY2RpckAKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnbGliZGlyID0gJChsaWJkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACithbV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNkCitpbnN0YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NAoraW5zdGFsbF9zaF9QUk9HUkFNID0gJChpbnN0YWxsX3NoKSAtYworaW5zdGFsbF9zaF9TQ1JJUFQgPSAkKGluc3RhbGxfc2gpIC1jCitJTlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQordHJhbnNmb3JtID0gJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKQorTk9STUFMX0lOU1RBTEwgPSA6CitQUkVfSU5TVEFMTCA9IDoKK1BPU1RfSU5TVEFMTCA9IDoKK05PUk1BTF9VTklOU1RBTEwgPSA6CitQUkVfVU5JTlNUQUxMID0gOgorUE9TVF9VTklOU1RBTEwgPSA6CitASEFWRV9aTElCX1RSVUVAYW1fX2FwcGVuZF8xID0gdXNiLmlkcy5negorc2Jpbl9QUk9HUkFNUyA9IGxzdXNiJChFWEVFWFQpCitzdWJkaXIgPSAuCitESVNUX0NPTU1PTiA9IFJFQURNRSAkKGFtX19jb25maWd1cmVfZGVwcykgJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKKwkkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL2NvbmZpZy5oLmluIFwKKwkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBBVVRIT1JTIENPUFlJTkcgQ2hhbmdlTG9nIElOU1RBTEwgTkVXUyBcCisJZGVwY29tcCBpbnN0YWxsLXNoIG1pc3NpbmcKK0FDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKK2FtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKKwkkKEFDTE9DQUxfTTQpCithbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUyA9IGNvbmZpZy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXAorIGNvbmZpZ3VyZS5saW5lbm8gY29uZmlnLnN0YXR1cy5saW5lbm8KK21raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCitDT05GSUdfSEVBREVSID0gY29uZmlnLmgKK0NPTkZJR19DTEVBTl9GSUxFUyA9CithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoc2JpbmRpcikiICIkKERFU1RESVIpJChiaW5kaXIpIiBcCisJIiQoREVTVERJUikkKHNiaW5kaXIpIiAiJChERVNURElSKSQobWFuMWRpcikiIFwKKwkiJChERVNURElSKSQobWFuOGRpcikiICIkKERFU1RESVIpJChkYXRhZGlyKSIgXAorCSIkKERFU1RESVIpJChwa2djb25maWdkaXIpIgorc2JpblBST0dSQU1TX0lOU1RBTEwgPSAkKElOU1RBTExfUFJPR1JBTSkKK1BST0dSQU1TID0gJChzYmluX1BST0dSQU1TKQorYW1fbHN1c2JfT0JKRUNUUyA9IGxzdXNiLWxzdXNiLiQoT0JKRVhUKSBsc3VzYi1sc3VzYi10LiQoT0JKRVhUKSBcCisJbHN1c2ItbmFtZXMuJChPQkpFWFQpIGxzdXNiLWRldnRyZWUuJChPQkpFWFQpIFwKKwlsc3VzYi11c2JtaXNjLiQoT0JKRVhUKQorbHN1c2JfT0JKRUNUUyA9ICQoYW1fbHN1c2JfT0JKRUNUUykKK2FtX19ERVBFTkRFTkNJRVNfMSA9Citsc3VzYl9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2JpblNDUklQVF9JTlNUQUxMID0gJChJTlNUQUxMX1NDUklQVCkKK3NiaW5TQ1JJUFRfSU5TVEFMTCA9ICQoSU5TVEFMTF9TQ1JJUFQpCitTQ1JJUFRTID0gJChiaW5fU0NSSVBUUykgJChzYmluX1NDUklQVFMpCitERUZBVUxUX0lOQ0xVREVTID0gLUkuQGFtX19pc3JjQAorZGVwY29tcCA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvZGVwY29tcAorYW1fX2RlcGZpbGVzX21heWJlID0gZGVwZmlsZXMKK0NPTVBJTEUgPSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgXAorCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKK0NDTEQgPSAkKENDKQorTElOSyA9ICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK1NPVVJDRVMgPSAkKGxzdXNiX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxzdXNiX1NPVVJDRVMpCittYW4xZGlyID0gJChtYW5kaXIpL21hbjEKK21hbjhkaXIgPSAkKG1hbmRpcikvbWFuOAorTlJPRkYgPSBucm9mZgorTUFOUyA9ICQobWFuX01BTlMpCithbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKK2FtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCisgICAgJChzcmNkaXIpLyopIGY9YGVjaG8gIiQkcCIgfCBzZWQgInN8XiQkc3JjZGlyc3RyaXAvfHwiYDs7IFwKKyAgICAqKSBmPSQkcDs7IFwKKyAgZXNhYzsKK2FtX19zdHJpcF9kaXIgPSBgZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7CitkYXRhREFUQV9JTlNUQUxMID0gJChJTlNUQUxMX0RBVEEpCitwa2djb25maWdEQVRBX0lOU1RBTEwgPSAkKElOU1RBTExfREFUQSkKK0RBVEEgPSAkKGRhdGFfREFUQSkgJChwa2djb25maWdfREFUQSkKK0VUQUdTID0gZXRhZ3MKK0NUQUdTID0gY3RhZ3MKK0RJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCitkaXN0ZGlyID0gJChQQUNLQUdFKS0kKFZFUlNJT04pCit0b3BfZGlzdGRpciA9ICQoZGlzdGRpcikKK2FtX19yZW1vdmVfZGlzdGRpciA9IFwKKyAgeyB0ZXN0ICEgLWQgJChkaXN0ZGlyKSBcCisgICAgfHwgeyBmaW5kICQoZGlzdGRpcikgLXR5cGUgZCAhIC1wZXJtIC0yMDAgLWV4ZWMgY2htb2QgdSt3IHt9ICc7JyBcCisgICAgICAgICAmJiBybSAtZnIgJChkaXN0ZGlyKTsgfTsgfQorRElTVF9BUkNISVZFUyA9ICQoZGlzdGRpcikudGFyLmd6ICQoZGlzdGRpcikudGFyLmJ6MgorR1pJUF9FTlYgPSAtLWJlc3QKK2Rpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMgPSBmaW5kIC4gLXR5cGUgZiAtcHJpbnQKK2Rpc3RjbGVhbmNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAorQUNMT0NBTCA9IEBBQ0xPQ0FMQAorQU1UQVIgPSBAQU1UQVJACitBVVRPQ09ORiA9IEBBVVRPQ09ORkAKK0FVVE9IRUFERVIgPSBAQVVUT0hFQURFUkAKK0FVVE9NQUtFID0gQEFVVE9NQUtFQAorQVdLID0gQEFXS0AKK0NDID0gQENDQAorQ0NERVBNT0RFID0gQENDREVQTU9ERUAKK0NGTEFHUyA9IEBDRkxBR1NACitDUFAgPSBAQ1BQQAorQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAorREVGUyA9IEBERUZTQAorREVQRElSID0gQERFUERJUkAKK0VDSE9fQyA9IEBFQ0hPX0NACitFQ0hPX04gPSBARUNIT19OQAorRUNIT19UID0gQEVDSE9fVEAKK0VHUkVQID0gQEVHUkVQQAorRVhFRVhUID0gQEVYRUVYVEAKK0dSRVAgPSBAR1JFUEAKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5TVEFMTF9TVFJJUF9QUk9HUkFNQAorTERGTEFHUyA9IEBMREZMQUdTQAorTElCT0JKUyA9IEBMSUJPQkpTQAorTElCUyA9IEBMSUJTQAorTElCVVNCX0NGTEFHUyA9IEBMSUJVU0JfQ0ZMQUdTQAorTElCVVNCX0xJQlMgPSBATElCVVNCX0xJQlNACitMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTUFLRUlORk8gPSBATUFLRUlORk9ACitNS0RJUl9QID0gQE1LRElSX1BACitPQkpFWFQgPSBAT0JKRVhUQAorUEFDS0FHRSA9IEBQQUNLQUdFQAorUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACitQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAorUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACitQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKK1BBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAorUEtHX0NPTkZJRyA9IEBQS0dfQ09ORklHQAorU0VUX01BS0UgPSBAU0VUX01BS0VACitTSEVMTCA9IEBTSEVMTEAKK1NUUklQID0gQFNUUklQQAorVkVSU0lPTiA9IEBWRVJTSU9OQAorYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKK2Fic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKK2Fic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKK2Fic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACithbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKK2FtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACithbV9fcXVvdGUgPSBAYW1fX3F1b3RlQAorYW1fX3RhciA9IEBhbV9fdGFyQAorYW1fX3VudGFyID0gQGFtX191bnRhckAKK2JpbmRpciA9IEBiaW5kaXJACitidWlsZF9hbGlhcyA9IEBidWlsZF9hbGlhc0AKK2J1aWxkZGlyID0gQGJ1aWxkZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitkb2NkaXIgPSBAZG9jZGlyQAorZHZpZGlyID0gQGR2aWRpckAKK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAoraG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAoraHRtbGRpciA9IEBodG1sZGlyQAoraW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAoraW5mb2RpciA9IEBpbmZvZGlyQAoraW5zdGFsbF9zaCA9IEBpbnN0YWxsX3NoQAorbGliZGlyID0gQGxpYmRpckAKK2xpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACittYW5kaXIgPSBAbWFuZGlyQAorbWtkaXJfcCA9IEBta2Rpcl9wQAorb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQAorcGRmZGlyID0gQHBkZmRpckAKK3ByZWZpeCA9IEBwcmVmaXhACitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACitwc2RpciA9IEBwc2RpckAKK3NiaW5kaXIgPSBAc2JpbmRpckAKK3NoYXJlZHN0YXRlZGlyID0gQHNoYXJlZHN0YXRlZGlyQAorc3JjZGlyID0gQHNyY2RpckAKK3N5c2NvbmZkaXIgPSBAc3lzY29uZmRpckAKK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACit0b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACit0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorQU1fTERGTEFHUyA9IFwKKwktV2wsLS1hcy1uZWVkZWQKKworZGF0YV9EQVRBID0gdXNiLmlkcyAkKGFtX19hcHBlbmRfMSkKK3NiaW5fU0NSSVBUUyA9IFwKKwl1cGRhdGUtdXNiaWRzLnNoCisKK2Jpbl9TQ1JJUFRTID0gXAorCXVzYi1kZXZpY2VzCisKK2xzdXNiX1NPVVJDRVMgPSBcCisJbHN1c2IuYyBcCisJbHN1c2ItdC5jIFwKKwlsaXN0LmggXAorCW5hbWVzLmMgbmFtZXMuaCBcCisJZGV2dHJlZS5jIGRldnRyZWUuaCBcCisJdXNibWlzYy5jIHVzYm1pc2MuaAorCitsc3VzYl9DUFBGTEFHUyA9IFwKKwkkKEFNX0NQUEZMQUdTKSBcCisJLUREQVRBRElSPVwiJChkYXRhZGlyKVwiCisKK2xzdXNiX0xEQUREID0gXAorCSQoTElCVVNCX0xJQlMpCisKK21hbl9NQU5TID0gXAorCWxzdXNiLjgJXAorCXVzYi1kZXZpY2VzLjEKKworRVhUUkFfRElTVCA9IFwKKwl1c2IuaWRzIFwKKwl1cGRhdGUtdXNiaWRzLnNoLmluIFwKKwlsc3VzYi44LmluIFwKKwl1c2ItZGV2aWNlcy4xLmluIFwKKwl1c2ItZGV2aWNlcyBcCisJdXNidXRpbHMucGMuaW4KKworcGtnY29uZmlnZGlyID0gJChkYXRhZGlyKS9wa2djb25maWcKK3BrZ2NvbmZpZ19EQVRBID0gdXNidXRpbHMucGMKK0RJU1RDTEVBTkZJTEVTID0gXAorCXVzYi5pZHMuZ3ogXAorCWxzdXNiLjggXAorCXVzYi1kZXZpY2VzLjEgXAorCXVwZGF0ZS11c2JpZHMuc2ggXAorCXVzYnV0aWxzLnBjCisKK2FsbDogY29uZmlnLmgKKwkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbGwtYW0KKworLlNVRkZJWEVTOgorLlNVRkZJWEVTOiAuYyAubyAub2JqCithbS0tcmVmcmVzaDoKKwlAOgorJChzcmNkaXIpL01ha2VmaWxlLmluOiAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKKwlAZm9yIGRlcCBpbiAkPzsgZG8gXAorCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCisJICAgICokJGRlcCopIFwKKwkgICAgICBlY2hvICcgY2QgJChzcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZm9yZWlnbiAnOyBcCisJICAgICAgY2QgJChzcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZm9yZWlnbiAgXAorCQkmJiBleGl0IDA7IFwKKwkgICAgICBleGl0IDE7OyBcCisJICBlc2FjOyBcCisJZG9uZTsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZm9yZWlnbiAgTWFrZWZpbGUnOyBcCisJY2QgJCh0b3Bfc3JjZGlyKSAmJiBcCisJICAkKEFVVE9NQUtFKSAtLWZvcmVpZ24gIE1ha2VmaWxlCisuUFJFQ0lPVVM6IE1ha2VmaWxlCitNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQGNhc2UgJyQ/JyBpbiBcCisJICAqY29uZmlnLnN0YXR1cyopIFwKKwkgICAgZWNobyAnICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyc7IFwKKwkgICAgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzOzsgXAorCSAgKikgXAorCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCisJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpOzsgXAorCWVzYWM7CisKKyQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzOiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSAkKENPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTKQorCSQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKKworJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6ICAkKGFtX19jb25maWd1cmVfZGVwcykKKwljZCAkKHNyY2RpcikgJiYgJChBVVRPQ09ORikKKyQoQUNMT0NBTF9NNCk6ICAkKGFtX19hY2xvY2FsX200X2RlcHMpCisJY2QgJChzcmNkaXIpICYmICQoQUNMT0NBTCkgJChBQ0xPQ0FMX0FNRkxBR1MpCisKK2NvbmZpZy5oOiBzdGFtcC1oMQorCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gXAorCSAgcm0gLWYgc3RhbXAtaDE7IFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHN0YW1wLWgxOyBcCisJZWxzZSA6OyBmaQorCitzdGFtcC1oMTogJChzcmNkaXIpL2NvbmZpZy5oLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQHJtIC1mIHN0YW1wLWgxCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyBjb25maWcuaAorJChzcmNkaXIpL2NvbmZpZy5oLmluOiAgJChhbV9fY29uZmlndXJlX2RlcHMpIAorCWNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPSEVBREVSKQorCXJtIC1mIHN0YW1wLWgxCisJdG91Y2ggJEAKKworZGlzdGNsZWFuLWhkcjoKKwktcm0gLWYgY29uZmlnLmggc3RhbXAtaDEKK2luc3RhbGwtc2JpblBST0dSQU1TOiAkKHNiaW5fUFJPR1JBTVMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChzYmluZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQoc2JpbmRpcikiCisJQGxpc3Q9JyQoc2Jpbl9QUk9HUkFNUyknOyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIHAxPWBlY2hvICQkcHxzZWQgJ3MvJChFWEVFWFQpJCQvLydgOyBcCisJICBpZiB0ZXN0IC1mICQkcCBcCisJICA7IHRoZW4gXAorCSAgICBmPWBlY2hvICIkJHAxIiB8IHNlZCAncyxeLiovLCw7JCh0cmFuc2Zvcm0pO3MvJCQvJChFWEVFWFQpLydgOyBcCisJICAgZWNobyAiICQoSU5TVEFMTF9QUk9HUkFNX0VOVikgJChzYmluUFJPR1JBTVNfSU5TVEFMTCkgJyQkcCcgJyQoREVTVERJUikkKHNiaW5kaXIpLyQkZiciOyBcCisJICAgJChJTlNUQUxMX1BST0dSQU1fRU5WKSAkKHNiaW5QUk9HUkFNU19JTlNUQUxMKSAiJCRwIiAiJChERVNURElSKSQoc2JpbmRpcikvJCRmIiB8fCBleGl0IDE7IFwKKwkgIGVsc2UgOjsgZmk7IFwKKwlkb25lCisKK3VuaW5zdGFsbC1zYmluUFJPR1JBTVM6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChzYmluX1BST0dSQU1TKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgZj1gZWNobyAiJCRwIiB8IHNlZCAncyxeLiovLCw7cy8kKEVYRUVYVCkkJC8vOyQodHJhbnNmb3JtKTtzLyQkLyQoRVhFRVhUKS8nYDsgXAorCSAgZWNobyAiIHJtIC1mICckKERFU1RESVIpJChzYmluZGlyKS8kJGYnIjsgXAorCSAgcm0gLWYgIiQoREVTVERJUikkKHNiaW5kaXIpLyQkZiI7IFwKKwlkb25lCisKK2NsZWFuLXNiaW5QUk9HUkFNUzoKKwktdGVzdCAteiAiJChzYmluX1BST0dSQU1TKSIgfHwgcm0gLWYgJChzYmluX1BST0dSQU1TKQorbHN1c2IkKEVYRUVYVCk6ICQobHN1c2JfT0JKRUNUUykgJChsc3VzYl9ERVBFTkRFTkNJRVMpIAorCUBybSAtZiBsc3VzYiQoRVhFRVhUKQorCSQoTElOSykgJChsc3VzYl9PQkpFQ1RTKSAkKGxzdXNiX0xEQUREKSAkKExJQlMpCitpbnN0YWxsLWJpblNDUklQVFM6ICQoYmluX1NDUklQVFMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChiaW5kaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChiaW5kaXIpIgorCUBsaXN0PSckKGJpbl9TQ1JJUFRTKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGlmIHRlc3QgLWYgJCRkJCRwOyB0aGVuIFwKKwkgICAgZj1gZWNobyAiJCRwIiB8IHNlZCAnc3xeLiovfHw7JCh0cmFuc2Zvcm0pJ2A7IFwKKwkgICAgZWNobyAiICQoYmluU0NSSVBUX0lOU1RBTEwpICckJGQkJHAnICckKERFU1RESVIpJChiaW5kaXIpLyQkZiciOyBcCisJICAgICQoYmluU0NSSVBUX0lOU1RBTEwpICIkJGQkJHAiICIkKERFU1RESVIpJChiaW5kaXIpLyQkZiI7IFwKKwkgIGVsc2UgOjsgZmk7IFwKKwlkb25lCisKK3VuaW5zdGFsbC1iaW5TQ1JJUFRTOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQoYmluX1NDUklQVFMpJzsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBmPWBlY2hvICIkJHAiIHwgc2VkICdzfF4uKi98fDskKHRyYW5zZm9ybSknYDsgXAorCSAgZWNobyAiIHJtIC1mICckKERFU1RESVIpJChiaW5kaXIpLyQkZiciOyBcCisJICBybSAtZiAiJChERVNURElSKSQoYmluZGlyKS8kJGYiOyBcCisJZG9uZQoraW5zdGFsbC1zYmluU0NSSVBUUzogJChzYmluX1NDUklQVFMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChzYmluZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQoc2JpbmRpcikiCisJQGxpc3Q9JyQoc2Jpbl9TQ1JJUFRTKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGlmIHRlc3QgLWYgJCRkJCRwOyB0aGVuIFwKKwkgICAgZj1gZWNobyAiJCRwIiB8IHNlZCAnc3xeLiovfHw7JCh0cmFuc2Zvcm0pJ2A7IFwKKwkgICAgZWNobyAiICQoc2JpblNDUklQVF9JTlNUQUxMKSAnJCRkJCRwJyAnJChERVNURElSKSQoc2JpbmRpcikvJCRmJyI7IFwKKwkgICAgJChzYmluU0NSSVBUX0lOU1RBTEwpICIkJGQkJHAiICIkKERFU1RESVIpJChzYmluZGlyKS8kJGYiOyBcCisJICBlbHNlIDo7IGZpOyBcCisJZG9uZQorCit1bmluc3RhbGwtc2JpblNDUklQVFM6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChzYmluX1NDUklQVFMpJzsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBmPWBlY2hvICIkJHAiIHwgc2VkICdzfF4uKi98fDskKHRyYW5zZm9ybSknYDsgXAorCSAgZWNobyAiIHJtIC1mICckKERFU1RESVIpJChzYmluZGlyKS8kJGYnIjsgXAorCSAgcm0gLWYgIiQoREVTVERJUikkKHNiaW5kaXIpLyQkZiI7IFwKKwlkb25lCisKK21vc3RseWNsZWFuLWNvbXBpbGU6CisJLXJtIC1mICouJChPQkpFWFQpCisKK2Rpc3RjbGVhbi1jb21waWxlOgorCS1ybSAtZiAqLnRhYi5jCisKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9sc3VzYi1kZXZ0cmVlLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9sc3VzYi1sc3VzYi10LlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9sc3VzYi1sc3VzYi5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbHN1c2ItbmFtZXMuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xzdXNiLXVzYm1pc2MuUG9AYW1fX3F1b3RlQAorCisuYy5vOgorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQqLlRwbyAtYyAtbyAkQCAkPAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJbXYgLWYgJChERVBESVIpLyQqLlRwbyAkKERFUERJUikvJCouUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENPTVBJTEUpIC1jICQ8CisKKy5jLm9iajoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKi5UcG8gLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJbXYgLWYgJChERVBESVIpLyQqLlRwbyAkKERFUERJUikvJCouUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENPTVBJTEUpIC1jIGAkKENZR1BBVEhfVykgJyQ8J2AKKworbHN1c2ItbHN1c2IubzogbHN1c2IuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxzdXNiLWxzdXNiLm8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xzdXNiLWxzdXNiLlRwbyAtYyAtbyBsc3VzYi1sc3VzYi5vIGB0ZXN0IC1mICdsc3VzYi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bsc3VzYi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvbHN1c2ItbHN1c2IuVHBvICQoREVQRElSKS9sc3VzYi1sc3VzYi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nbHN1c2IuYycgb2JqZWN0PSdsc3VzYi1sc3VzYi5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsc3VzYi1sc3VzYi5vIGB0ZXN0IC1mICdsc3VzYi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bsc3VzYi5jCisKK2xzdXNiLWxzdXNiLm9iajogbHN1c2IuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxzdXNiLWxzdXNiLm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikvbHN1c2ItbHN1c2IuVHBvIC1jIC1vIGxzdXNiLWxzdXNiLm9iaiBgaWYgdGVzdCAtZiAnbHN1c2IuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsc3VzYi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9sc3VzYi5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvbHN1c2ItbHN1c2IuVHBvICQoREVQRElSKS9sc3VzYi1sc3VzYi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nbHN1c2IuYycgb2JqZWN0PSdsc3VzYi1sc3VzYi5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxzdXNiX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxzdXNiLWxzdXNiLm9iaiBgaWYgdGVzdCAtZiAnbHN1c2IuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsc3VzYi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9sc3VzYi5jJzsgZmlgCisKK2xzdXNiLWxzdXNiLXQubzogbHN1c2ItdC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbHN1c2ItbHN1c2ItdC5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9sc3VzYi1sc3VzYi10LlRwbyAtYyAtbyBsc3VzYi1sc3VzYi10Lm8gYHRlc3QgLWYgJ2xzdXNiLXQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbHN1c2ItdC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvbHN1c2ItbHN1c2ItdC5UcG8gJChERVBESVIpL2xzdXNiLWxzdXNiLXQuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J2xzdXNiLXQuYycgb2JqZWN0PSdsc3VzYi1sc3VzYi10Lm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxzdXNiX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxzdXNiLWxzdXNiLXQubyBgdGVzdCAtZiAnbHN1c2ItdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bsc3VzYi10LmMKKworbHN1c2ItbHN1c2ItdC5vYmo6IGxzdXNiLXQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxzdXNiLWxzdXNiLXQub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9sc3VzYi1sc3VzYi10LlRwbyAtYyAtbyBsc3VzYi1sc3VzYi10Lm9iaiBgaWYgdGVzdCAtZiAnbHN1c2ItdC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xzdXNiLXQuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbHN1c2ItdC5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvbHN1c2ItbHN1c2ItdC5UcG8gJChERVBESVIpL2xzdXNiLWxzdXNiLXQuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J2xzdXNiLXQuYycgb2JqZWN0PSdsc3VzYi1sc3VzYi10Lm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbHN1c2ItbHN1c2ItdC5vYmogYGlmIHRlc3QgLWYgJ2xzdXNiLXQuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsc3VzYi10LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xzdXNiLXQuYyc7IGZpYAorCitsc3VzYi1uYW1lcy5vOiBuYW1lcy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbHN1c2ItbmFtZXMubyAtTUQgLU1QIC1NRiAkKERFUERJUikvbHN1c2ItbmFtZXMuVHBvIC1jIC1vIGxzdXNiLW5hbWVzLm8gYHRlc3QgLWYgJ25hbWVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG5hbWVzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACW12IC1mICQoREVQRElSKS9sc3VzYi1uYW1lcy5UcG8gJChERVBESVIpL2xzdXNiLW5hbWVzLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSduYW1lcy5jJyBvYmplY3Q9J2xzdXNiLW5hbWVzLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxzdXNiX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxzdXNiLW5hbWVzLm8gYHRlc3QgLWYgJ25hbWVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG5hbWVzLmMKKworbHN1c2ItbmFtZXMub2JqOiBuYW1lcy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbHN1c2ItbmFtZXMub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9sc3VzYi1uYW1lcy5UcG8gLWMgLW8gbHN1c2ItbmFtZXMub2JqIGBpZiB0ZXN0IC1mICduYW1lcy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ25hbWVzLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL25hbWVzLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACW12IC1mICQoREVQRElSKS9sc3VzYi1uYW1lcy5UcG8gJChERVBESVIpL2xzdXNiLW5hbWVzLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSduYW1lcy5jJyBvYmplY3Q9J2xzdXNiLW5hbWVzLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbHN1c2ItbmFtZXMub2JqIGBpZiB0ZXN0IC1mICduYW1lcy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ25hbWVzLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL25hbWVzLmMnOyBmaWAKKworbHN1c2ItZGV2dHJlZS5vOiBkZXZ0cmVlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxzdXNiX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsc3VzYi1kZXZ0cmVlLm8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xzdXNiLWRldnRyZWUuVHBvIC1jIC1vIGxzdXNiLWRldnRyZWUubyBgdGVzdCAtZiAnZGV2dHJlZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BkZXZ0cmVlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACW12IC1mICQoREVQRElSKS9sc3VzYi1kZXZ0cmVlLlRwbyAkKERFUERJUikvbHN1c2ItZGV2dHJlZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nZGV2dHJlZS5jJyBvYmplY3Q9J2xzdXNiLWRldnRyZWUubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbHN1c2ItZGV2dHJlZS5vIGB0ZXN0IC1mICdkZXZ0cmVlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGRldnRyZWUuYworCitsc3VzYi1kZXZ0cmVlLm9iajogZGV2dHJlZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbHN1c2ItZGV2dHJlZS5vYmogLU1EIC1NUCAtTUYgJChERVBESVIpL2xzdXNiLWRldnRyZWUuVHBvIC1jIC1vIGxzdXNiLWRldnRyZWUub2JqIGBpZiB0ZXN0IC1mICdkZXZ0cmVlLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZGV2dHJlZS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9kZXZ0cmVlLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACW12IC1mICQoREVQRElSKS9sc3VzYi1kZXZ0cmVlLlRwbyAkKERFUERJUikvbHN1c2ItZGV2dHJlZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nZGV2dHJlZS5jJyBvYmplY3Q9J2xzdXNiLWRldnRyZWUub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsc3VzYi1kZXZ0cmVlLm9iaiBgaWYgdGVzdCAtZiAnZGV2dHJlZS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2RldnRyZWUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZGV2dHJlZS5jJzsgZmlgCisKK2xzdXNiLXVzYm1pc2MubzogdXNibWlzYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsc3VzYl9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbHN1c2ItdXNibWlzYy5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9sc3VzYi11c2JtaXNjLlRwbyAtYyAtbyBsc3VzYi11c2JtaXNjLm8gYHRlc3QgLWYgJ3VzYm1pc2MuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdXNibWlzYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvbHN1c2ItdXNibWlzYy5UcG8gJChERVBESVIpL2xzdXNiLXVzYm1pc2MuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J3VzYm1pc2MuYycgb2JqZWN0PSdsc3VzYi11c2JtaXNjLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxzdXNiX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxzdXNiLXVzYm1pc2MubyBgdGVzdCAtZiAndXNibWlzYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B1c2JtaXNjLmMKKworbHN1c2ItdXNibWlzYy5vYmo6IHVzYm1pc2MuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxzdXNiLXVzYm1pc2Mub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9sc3VzYi11c2JtaXNjLlRwbyAtYyAtbyBsc3VzYi11c2JtaXNjLm9iaiBgaWYgdGVzdCAtZiAndXNibWlzYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ3VzYm1pc2MuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvdXNibWlzYy5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAltdiAtZiAkKERFUERJUikvbHN1c2ItdXNibWlzYy5UcG8gJChERVBESVIpL2xzdXNiLXVzYm1pc2MuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J3VzYm1pc2MuYycgb2JqZWN0PSdsc3VzYi11c2JtaXNjLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobHN1c2JfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbHN1c2ItdXNibWlzYy5vYmogYGlmIHRlc3QgLWYgJ3VzYm1pc2MuYyc7IHRoZW4gJChDWUdQQVRIX1cpICd1c2JtaXNjLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL3VzYm1pc2MuYyc7IGZpYAoraW5zdGFsbC1tYW4xOiAkKG1hbjFfTUFOUykgJChtYW5fTUFOUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwl0ZXN0IC16ICIkKG1hbjFkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChtYW4xZGlyKSIKKwlAbGlzdD0nJChtYW4xX01BTlMpICQoZGlzdF9tYW4xX01BTlMpICQobm9kaXN0X21hbjFfTUFOUyknOyBcCisJbDI9JyQobWFuX01BTlMpICQoZGlzdF9tYW5fTUFOUykgJChub2Rpc3RfbWFuX01BTlMpJzsgXAorCWZvciBpIGluICQkbDI7IGRvIFwKKwkgIGNhc2UgIiQkaSIgaW4gXAorCSAgICAqLjEqKSBsaXN0PSIkJGxpc3QgJCRpIiA7OyBcCisJICBlc2FjOyBcCisJZG9uZTsgXAorCWZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGk7IHRoZW4gZmlsZT0kJGk7IFwKKwkgIGVsc2UgZmlsZT0kKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZXh0PWBlY2hvICQkaSB8IHNlZCAtZSAncy9eLipcXC4vLydgOyBcCisJICBjYXNlICIkJGV4dCIgaW4gXAorCSAgICAxKikgOzsgXAorCSAgICAqKSBleHQ9JzEnIDs7IFwKKwkgIGVzYWM7IFwKKwkgIGluc3Q9YGVjaG8gJCRpIHwgc2VkIC1lICdzL1xcLlswLTlhLXpdKiQkLy8nYDsgXAorCSAgaW5zdD1gZWNobyAkJGluc3QgfCBzZWQgLWUgJ3MvXi4qXC8vLydgOyBcCisJICBpbnN0PWBlY2hvICQkaW5zdCB8IHNlZCAnJCh0cmFuc2Zvcm0pJ2AuJCRleHQ7IFwKKwkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZmlsZScgJyQoREVTVERJUikkKG1hbjFkaXIpLyQkaW5zdCciOyBcCisJICAkKElOU1RBTExfREFUQSkgIiQkZmlsZSIgIiQoREVTVERJUikkKG1hbjFkaXIpLyQkaW5zdCI7IFwKKwlkb25lCit1bmluc3RhbGwtbWFuMToKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKG1hbjFfTUFOUykgJChkaXN0X21hbjFfTUFOUykgJChub2Rpc3RfbWFuMV9NQU5TKSc7IFwKKwlsMj0nJChtYW5fTUFOUykgJChkaXN0X21hbl9NQU5TKSAkKG5vZGlzdF9tYW5fTUFOUyknOyBcCisJZm9yIGkgaW4gJCRsMjsgZG8gXAorCSAgY2FzZSAiJCRpIiBpbiBcCisJICAgICouMSopIGxpc3Q9IiQkbGlzdCAkJGkiIDs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICBleHQ9YGVjaG8gJCRpIHwgc2VkIC1lICdzL14uKlxcLi8vJ2A7IFwKKwkgIGNhc2UgIiQkZXh0IiBpbiBcCisJICAgIDEqKSA7OyBcCisJICAgICopIGV4dD0nMScgOzsgXAorCSAgZXNhYzsgXAorCSAgaW5zdD1gZWNobyAkJGkgfCBzZWQgLWUgJ3MvXFwuWzAtOWEtel0qJCQvLydgOyBcCisJICBpbnN0PWBlY2hvICQkaW5zdCB8IHNlZCAtZSAncy9eLipcLy8vJ2A7IFwKKwkgIGluc3Q9YGVjaG8gJCRpbnN0IHwgc2VkICckKHRyYW5zZm9ybSknYC4kJGV4dDsgXAorCSAgZWNobyAiIHJtIC1mICckKERFU1RESVIpJChtYW4xZGlyKS8kJGluc3QnIjsgXAorCSAgcm0gLWYgIiQoREVTVERJUikkKG1hbjFkaXIpLyQkaW5zdCI7IFwKKwlkb25lCitpbnN0YWxsLW1hbjg6ICQobWFuOF9NQU5TKSAkKG1hbl9NQU5TKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCXRlc3QgLXogIiQobWFuOGRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKG1hbjhkaXIpIgorCUBsaXN0PSckKG1hbjhfTUFOUykgJChkaXN0X21hbjhfTUFOUykgJChub2Rpc3RfbWFuOF9NQU5TKSc7IFwKKwlsMj0nJChtYW5fTUFOUykgJChkaXN0X21hbl9NQU5TKSAkKG5vZGlzdF9tYW5fTUFOUyknOyBcCisJZm9yIGkgaW4gJCRsMjsgZG8gXAorCSAgY2FzZSAiJCRpIiBpbiBcCisJICAgICouOCopIGxpc3Q9IiQkbGlzdCAkJGkiIDs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICQkaTsgdGhlbiBmaWxlPSQkaTsgXAorCSAgZWxzZSBmaWxlPSQoc3JjZGlyKS8kJGk7IGZpOyBcCisJICBleHQ9YGVjaG8gJCRpIHwgc2VkIC1lICdzL14uKlxcLi8vJ2A7IFwKKwkgIGNhc2UgIiQkZXh0IiBpbiBcCisJICAgIDgqKSA7OyBcCisJICAgICopIGV4dD0nOCcgOzsgXAorCSAgZXNhYzsgXAorCSAgaW5zdD1gZWNobyAkJGkgfCBzZWQgLWUgJ3MvXFwuWzAtOWEtel0qJCQvLydgOyBcCisJICBpbnN0PWBlY2hvICQkaW5zdCB8IHNlZCAtZSAncy9eLipcLy8vJ2A7IFwKKwkgIGluc3Q9YGVjaG8gJCRpbnN0IHwgc2VkICckKHRyYW5zZm9ybSknYC4kJGV4dDsgXAorCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRmaWxlJyAnJChERVNURElSKSQobWFuOGRpcikvJCRpbnN0JyI7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAiJCRmaWxlIiAiJChERVNURElSKSQobWFuOGRpcikvJCRpbnN0IjsgXAorCWRvbmUKK3VuaW5zdGFsbC1tYW44OgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQobWFuOF9NQU5TKSAkKGRpc3RfbWFuOF9NQU5TKSAkKG5vZGlzdF9tYW44X01BTlMpJzsgXAorCWwyPSckKG1hbl9NQU5TKSAkKGRpc3RfbWFuX01BTlMpICQobm9kaXN0X21hbl9NQU5TKSc7IFwKKwlmb3IgaSBpbiAkJGwyOyBkbyBcCisJICBjYXNlICIkJGkiIGluIFwKKwkgICAgKi44KikgbGlzdD0iJCRsaXN0ICQkaSIgOzsgXAorCSAgZXNhYzsgXAorCWRvbmU7IFwKKwlmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgIGV4dD1gZWNobyAkJGkgfCBzZWQgLWUgJ3MvXi4qXFwuLy8nYDsgXAorCSAgY2FzZSAiJCRleHQiIGluIFwKKwkgICAgOCopIDs7IFwKKwkgICAgKikgZXh0PSc4JyA7OyBcCisJICBlc2FjOyBcCisJICBpbnN0PWBlY2hvICQkaSB8IHNlZCAtZSAncy9cXC5bMC05YS16XSokJC8vJ2A7IFwKKwkgIGluc3Q9YGVjaG8gJCRpbnN0IHwgc2VkIC1lICdzL14uKlwvLy8nYDsgXAorCSAgaW5zdD1gZWNobyAkJGluc3QgfCBzZWQgJyQodHJhbnNmb3JtKSdgLiQkZXh0OyBcCisJICBlY2hvICIgcm0gLWYgJyQoREVTVERJUikkKG1hbjhkaXIpLyQkaW5zdCciOyBcCisJICBybSAtZiAiJChERVNURElSKSQobWFuOGRpcikvJCRpbnN0IjsgXAorCWRvbmUKK2luc3RhbGwtZGF0YURBVEE6ICQoZGF0YV9EQVRBKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCXRlc3QgLXogIiQoZGF0YWRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKGRhdGFkaXIpIgorCUBsaXN0PSckKGRhdGFfREFUQSknOyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBmPSQoYW1fX3N0cmlwX2RpcikgXAorCSAgZWNobyAiICQoZGF0YURBVEFfSU5TVEFMTCkgJyQkZCQkcCcgJyQoREVTVERJUikkKGRhdGFkaXIpLyQkZiciOyBcCisJICAkKGRhdGFEQVRBX0lOU1RBTEwpICIkJGQkJHAiICIkKERFU1RESVIpJChkYXRhZGlyKS8kJGYiOyBcCisJZG9uZQorCit1bmluc3RhbGwtZGF0YURBVEE6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChkYXRhX0RBVEEpJzsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBmPSQoYW1fX3N0cmlwX2RpcikgXAorCSAgZWNobyAiIHJtIC1mICckKERFU1RESVIpJChkYXRhZGlyKS8kJGYnIjsgXAorCSAgcm0gLWYgIiQoREVTVERJUikkKGRhdGFkaXIpLyQkZiI7IFwKKwlkb25lCitpbnN0YWxsLXBrZ2NvbmZpZ0RBVEE6ICQocGtnY29uZmlnX0RBVEEpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJdGVzdCAteiAiJChwa2djb25maWdkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChwa2djb25maWdkaXIpIgorCUBsaXN0PSckKHBrZ2NvbmZpZ19EQVRBKSc7IGZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGY9JChhbV9fc3RyaXBfZGlyKSBcCisJICBlY2hvICIgJChwa2djb25maWdEQVRBX0lOU1RBTEwpICckJGQkJHAnICckKERFU1RESVIpJChwa2djb25maWdkaXIpLyQkZiciOyBcCisJICAkKHBrZ2NvbmZpZ0RBVEFfSU5TVEFMTCkgIiQkZCQkcCIgIiQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvJCRmIjsgXAorCWRvbmUKKwordW5pbnN0YWxsLXBrZ2NvbmZpZ0RBVEE6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChwa2djb25maWdfREFUQSknOyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGY9JChhbV9fc3RyaXBfZGlyKSBcCisJICBlY2hvICIgcm0gLWYgJyQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvJCRmJyI7IFwKKwkgIHJtIC1mICIkKERFU1RESVIpJChwa2djb25maWdkaXIpLyQkZiI7IFwKKwlkb25lCisKK0lEOiAkKEhFQURFUlMpICQoU09VUkNFUykgJChMSVNQKSAkKFRBR1NfRklMRVMpCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJbWtpZCAtZklEICQkdW5pcXVlCit0YWdzOiBUQUdTCisKK1RBR1M6ICAkKEhFQURFUlMpICQoU09VUkNFUykgY29uZmlnLmguaW4gJChUQUdTX0RFUEVOREVOQ0lFUykgXAorCQkkKFRBR1NfRklMRVMpICQoTElTUCkKKwl0YWdzPTsgXAorCWhlcmU9YHB3ZGA7IFwKKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgY29uZmlnLmguaW4gJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZG9uZSB8IFwKKwkgICQoQVdLKSAneyBmaWxlc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9OyB9J2A7IFwKKwlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCR0YWdzJCR1bmlxdWUiOyB0aGVuIDo7IGVsc2UgXAorCSAgdGVzdCAtbiAiJCR1bmlxdWUiIHx8IHVuaXF1ZT0kJGVtcHR5X2ZpeDsgXAorCSAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAorCSAgICAkJHRhZ3MgJCR1bmlxdWU7IFwKKwlmaQorY3RhZ3M6IENUQUdTCitDVEFHUzogICQoSEVBREVSUykgJChTT1VSQ0VTKSBjb25maWcuaC5pbiAkKFRBR1NfREVQRU5ERU5DSUVTKSBcCisJCSQoVEFHU19GSUxFUykgJChMSVNQKQorCXRhZ3M9OyBcCisJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpIGNvbmZpZy5oLmluICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdGFncyQkdW5pcXVlIiBcCisJICB8fCAkKENUQUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcCisJICAgICAkJHRhZ3MgJCR1bmlxdWUKKworR1RBR1M6CisJaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgIFwKKwkgICYmIGNkICQodG9wX3NyY2RpcikgXAorCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAkJGhlcmUKKworZGlzdGNsZWFuLXRhZ3M6CisJLXJtIC1mIFRBR1MgSUQgR1RBR1MgR1JUQUdTIEdTWU1TIEdQQVRIIHRhZ3MKKworZGlzdGRpcjogJChESVNURklMRVMpCisJQGNhc2UgYHNlZCAxNXEgJChzcmNkaXIpL05FV1NgIGluIFwKKwkqIiQoVkVSU0lPTikiKikgOiA7OyBcCisJKikgXAorCSAgZWNobyAiTkVXUyBub3QgdXBkYXRlZDsgbm90IHJlbGVhc2luZyIgMT4mMjsgXAorCSAgZXhpdCAxOzsgXAorCWVzYWMKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKwl0ZXN0IC1kICQoZGlzdGRpcikgfHwgbWtkaXIgJChkaXN0ZGlyKQorCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKwl0b3BzcmNkaXJzdHJpcD1gZWNobyAiJCh0b3Bfc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJbGlzdD0nJChESVNURklMRVMpJzsgXAorCSAgZGlzdF9maWxlcz1gZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBlY2hvICQkZmlsZTsgZG9uZSB8IFwKKwkgIHNlZCAtZSAic3xeJCRzcmNkaXJzdHJpcC98fDt0IiBcCisJICAgICAgLWUgInN8XiQkdG9wc3JjZGlyc3RyaXAvfCQodG9wX2J1aWxkZGlyKS98O3QiYDsgXAorCWNhc2UgJCRkaXN0X2ZpbGVzIGluIFwKKwkgICovKikgJChNS0RJUl9QKSBgZWNobyAiJCRkaXN0X2ZpbGVzIiB8IFwKKwkJCSAgIHNlZCAnL1wvLyFkO3N8XnwkKGRpc3RkaXIpL3w7cywvW14vXSokJCwsJyB8IFwKKwkJCSAgIHNvcnQgLXVgIDs7IFwKKwllc2FjOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0X2ZpbGVzOyBkbyBcCisJICBpZiB0ZXN0IC1mICQkZmlsZSB8fCB0ZXN0IC1kICQkZmlsZTsgdGhlbiBkPS47IGVsc2UgZD0kKHNyY2Rpcik7IGZpOyBcCisJICBpZiB0ZXN0IC1kICQkZC8kJGZpbGU7IHRoZW4gXAorCSAgICBkaXI9YGVjaG8gIi8kJGZpbGUiIHwgc2VkIC1lICdzLC9bXi9dKiQkLCwnYDsgXAorCSAgICBpZiB0ZXN0IC1kICQoc3JjZGlyKS8kJGZpbGUgJiYgdGVzdCAkJGQgIT0gJChzcmNkaXIpOyB0aGVuIFwKKwkgICAgICBjcCAtcFIgJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpJCRkaXIgfHwgZXhpdCAxOyBcCisJICAgIGZpOyBcCisJICAgIGNwIC1wUiAkJGQvJCRmaWxlICQoZGlzdGRpcikkJGRpciB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICB0ZXN0IC1mICQoZGlzdGRpcikvJCRmaWxlIFwKKwkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAkKGRpc3RkaXIpLyQkZmlsZSBcCisJICAgIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCisJLWZpbmQgJChkaXN0ZGlyKSAtdHlwZSBkICEgLXBlcm0gLTc3NyAtZXhlYyBjaG1vZCBhK3J3eCB7fSBcOyAtbyBcCisJICAhIC10eXBlIGQgISAtcGVybSAtNDQ0IC1saW5rcyAxIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCisJICAhIC10eXBlIGQgISAtcGVybSAtNDAwIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCisJICAhIC10eXBlIGQgISAtcGVybSAtNDQ0IC1leGVjICQoaW5zdGFsbF9zaCkgLWMgLW0gYStyIHt9IHt9IFw7IFwKKwl8fCBjaG1vZCAtUiBhK3IgJChkaXN0ZGlyKQorZGlzdC1nemlwOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IEdaSVA9JChHWklQX0VOVikgZ3ppcCAtYyA+JChkaXN0ZGlyKS50YXIuZ3oKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKK2Rpc3QtYnppcDI6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgYnppcDIgLTkgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LWx6bWE6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgbHptYSAtOSAtYyA+JChkaXN0ZGlyKS50YXIubHptYQorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LXRhclo6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgY29tcHJlc3MgLWMgPiQoZGlzdGRpcikudGFyLloKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC1zaGFyOiBkaXN0ZGlyCisJc2hhciAkKGRpc3RkaXIpIHwgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1jID4kKGRpc3RkaXIpLnNoYXIuZ3oKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC16aXA6IGRpc3RkaXIKKwktcm0gLWYgJChkaXN0ZGlyKS56aXAKKwl6aXAgLXJxICQoZGlzdGRpcikuemlwICQoZGlzdGRpcikKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdCBkaXN0LWFsbDogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWMgPiQoZGlzdGRpcikudGFyLmd6CisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGJ6aXAyIC05IC1jID4kKGRpc3RkaXIpLnRhci5iejIKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworIyBUaGlzIHRhcmdldCB1bnRhcnMgdGhlIGRpc3QgZmlsZSBhbmQgdHJpZXMgYSBWUEFUSCBjb25maWd1cmF0aW9uLiAgVGhlbgorIyBpdCBndWFyYW50ZWVzIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbiBpcyBzZWxmLWNvbnRhaW5lZCBieSBtYWtpbmcgYW5vdGhlcgorIyB0YXJmaWxlLgorZGlzdGNoZWNrOiBkaXN0CisJY2FzZSAnJChESVNUX0FSQ0hJVkVTKScgaW4gXAorCSoudGFyLmd6KikgXAorCSAgR1pJUD0kKEdaSVBfRU5WKSBndW56aXAgLWMgJChkaXN0ZGlyKS50YXIuZ3ogfCAkKGFtX191bnRhcikgOztcCisJKi50YXIuYnoyKikgXAorCSAgYnVuemlwMiAtYyAkKGRpc3RkaXIpLnRhci5iejIgfCAkKGFtX191bnRhcikgOztcCisJKi50YXIubHptYSopIFwKKwkgIHVubHptYSAtYyAkKGRpc3RkaXIpLnRhci5sem1hIHwgJChhbV9fdW50YXIpIDs7XAorCSoudGFyLloqKSBcCisJICB1bmNvbXByZXNzIC1jICQoZGlzdGRpcikudGFyLlogfCAkKGFtX191bnRhcikgOztcCisJKi5zaGFyLmd6KikgXAorCSAgR1pJUD0kKEdaSVBfRU5WKSBndW56aXAgLWMgJChkaXN0ZGlyKS5zaGFyLmd6IHwgdW5zaGFyIDs7XAorCSouemlwKikgXAorCSAgdW56aXAgJChkaXN0ZGlyKS56aXAgOztcCisJZXNhYworCWNobW9kIC1SIGEtdyAkKGRpc3RkaXIpOyBjaG1vZCBhK3cgJChkaXN0ZGlyKQorCW1rZGlyICQoZGlzdGRpcikvX2J1aWxkCisJbWtkaXIgJChkaXN0ZGlyKS9faW5zdAorCWNobW9kIGEtdyAkKGRpc3RkaXIpCisJZGNfaW5zdGFsbF9iYXNlPWAkKGFtX19jZCkgJChkaXN0ZGlyKS9faW5zdCAmJiBwd2QgfCBzZWQgLWUgJ3MsXlteOlxcL106W1xcL10sLywnYCBcCisJICAmJiBkY19kZXN0ZGlyPSIkJHtUTVBESVItL3RtcH0vYW0tZGMtJCQkJC8iIFwKKwkgICYmIGNkICQoZGlzdGRpcikvX2J1aWxkIFwKKwkgICYmIC4uL2NvbmZpZ3VyZSAtLXNyY2Rpcj0uLiAtLXByZWZpeD0iJCRkY19pbnN0YWxsX2Jhc2UiIFwKKwkgICAgJChESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTKSBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkdmkgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgY2hlY2sgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbCBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsY2hlY2sgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgdW5pbnN0YWxsIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGRpc3R1bmluc3RhbGxjaGVja19kaXI9IiQkZGNfaW5zdGFsbF9iYXNlIiBcCisJICAgICAgICBkaXN0dW5pbnN0YWxsY2hlY2sgXAorCSAgJiYgY2htb2QgLVIgYS13ICIkJGRjX2luc3RhbGxfYmFzZSIgXAorCSAgJiYgKHsgXAorCSAgICAgICAoY2QgLi4vLi4gJiYgdW1hc2sgMDc3ICYmIG1rZGlyICIkJGRjX2Rlc3RkaXIiKSBcCisJICAgICAgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIERFU1RESVI9IiQkZGNfZGVzdGRpciIgaW5zdGFsbCBcCisJICAgICAgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIERFU1RESVI9IiQkZGNfZGVzdGRpciIgdW5pbnN0YWxsIFwKKwkgICAgICAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgREVTVERJUj0iJCRkY19kZXN0ZGlyIiBcCisJICAgICAgICAgICAgZGlzdHVuaW5zdGFsbGNoZWNrX2Rpcj0iJCRkY19kZXN0ZGlyIiBkaXN0dW5pbnN0YWxsY2hlY2s7IFwKKwkgICAgICB9IHx8IHsgcm0gLXJmICIkJGRjX2Rlc3RkaXIiOyBleGl0IDE7IH0pIFwKKwkgICYmIHJtIC1yZiAiJCRkY19kZXN0ZGlyIiBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkaXN0IFwKKwkgICYmIHJtIC1yZiAkKERJU1RfQVJDSElWRVMpIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGRpc3RjbGVhbmNoZWNrCisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisJQChlY2hvICIkKGRpc3RkaXIpIGFyY2hpdmVzIHJlYWR5IGZvciBkaXN0cmlidXRpb246ICI7IFwKKwkgIGxpc3Q9JyQoRElTVF9BUkNISVZFUyknOyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRpOyBkb25lKSB8IFwKKwkgIHNlZCAtZSAxaCAtZSAxcy8uLz0vZyAtZSAxcCAtZSAxeCAtZSAnJCRwJyAtZSAnJCR4JworZGlzdHVuaW5zdGFsbGNoZWNrOgorCUBjZCAkKGRpc3R1bmluc3RhbGxjaGVja19kaXIpIFwKKwkmJiB0ZXN0IGAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIHwgd2MgLWxgIC1sZSAxIFwKKwkgICB8fCB7IGVjaG8gIkVSUk9SOiBmaWxlcyBsZWZ0IGFmdGVyIHVuaW5zdGFsbDoiIDsgXAorCSAgICAgICAgaWYgdGVzdCAtbiAiJChERVNURElSKSI7IHRoZW4gXAorCSAgICAgICAgICBlY2hvICIgIChjaGVjayBERVNURElSIHN1cHBvcnQpIjsgXAorCSAgICAgICAgZmkgOyBcCisJICAgICAgICAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIDsgXAorCSAgICAgICAgZXhpdCAxOyB9ID4mMgorZGlzdGNsZWFuY2hlY2s6IGRpc3RjbGVhbgorCUBpZiB0ZXN0ICckKHNyY2RpciknID0gLiA7IHRoZW4gXAorCSAgZWNobyAiRVJST1I6IGRpc3RjbGVhbmNoZWNrIGNhbiBvbmx5IHJ1biBmcm9tIGEgVlBBVEggYnVpbGQiIDsgXAorCSAgZXhpdCAxIDsgXAorCWZpCisJQHRlc3QgYCQoZGlzdGNsZWFuY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtZXEgMCBcCisJICB8fCB7IGVjaG8gIkVSUk9SOiBmaWxlcyBsZWZ0IGluIGJ1aWxkIGRpcmVjdG9yeSBhZnRlciBkaXN0Y2xlYW46IiA7IFwKKwkgICAgICAgJChkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMpIDsgXAorCSAgICAgICBleGl0IDE7IH0gPiYyCitjaGVjay1hbTogYWxsLWFtCitjaGVjazogY2hlY2stYW0KK2FsbC1hbTogTWFrZWZpbGUgJChQUk9HUkFNUykgJChTQ1JJUFRTKSAkKE1BTlMpICQoREFUQSkgY29uZmlnLmgKK2luc3RhbGxkaXJzOgorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKHNiaW5kaXIpIiAiJChERVNURElSKSQoYmluZGlyKSIgIiQoREVTVERJUikkKHNiaW5kaXIpIiAiJChERVNURElSKSQobWFuMWRpcikiICIkKERFU1RESVIpJChtYW44ZGlyKSIgIiQoREVTVERJUikkKGRhdGFkaXIpIiAiJChERVNURElSKSQocGtnY29uZmlnZGlyKSI7IGRvIFwKKwkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKKwlkb25lCitpbnN0YWxsOiBpbnN0YWxsLWFtCitpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1hbQoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KK3VuaW5zdGFsbDogdW5pbnN0YWxsLWFtCisKK2luc3RhbGwtYW06IGFsbC1hbQorCUAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtCisKK2luc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCitpbnN0YWxsLXN0cmlwOgorCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAorCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKKworY2xlYW4tZ2VuZXJpYzoKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLXogIiQoRElTVENMRUFORklMRVMpIiB8fCBybSAtZiAkKERJU1RDTEVBTkZJTEVTKQorCittYWludGFpbmVyLWNsZWFuLWdlbmVyaWM6CisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlIgorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKK2NsZWFuOiBjbGVhbi1hbQorCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1zYmluUFJPR1JBTVMgbW9zdGx5Y2xlYW4tYW0KKworZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KKwktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKKwktcm0gLXJmIC4vJChERVBESVIpCisJLXJtIC1mIE1ha2VmaWxlCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKKwlkaXN0Y2xlYW4taGRyIGRpc3RjbGVhbi1sb2NhbCBkaXN0Y2xlYW4tdGFncworCitkdmk6IGR2aS1hbQorCitkdmktYW06CisKK2h0bWw6IGh0bWwtYW0KKworaW5mbzogaW5mby1hbQorCitpbmZvLWFtOgorCitpbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtZGF0YURBVEEgaW5zdGFsbC1tYW4gaW5zdGFsbC1wa2djb25maWdEQVRBCisKK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQorCitpbnN0YWxsLWV4ZWMtYW06IGluc3RhbGwtYmluU0NSSVBUUyBpbnN0YWxsLXNiaW5QUk9HUkFNUyBcCisJaW5zdGFsbC1zYmluU0NSSVBUUworCitpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1hbQorCitpbnN0YWxsLWluZm86IGluc3RhbGwtaW5mby1hbQorCitpbnN0YWxsLW1hbjogaW5zdGFsbC1tYW4xIGluc3RhbGwtbWFuOAorCitpbnN0YWxsLXBkZjogaW5zdGFsbC1wZGYtYW0KKworaW5zdGFsbC1wczogaW5zdGFsbC1wcy1hbQorCitpbnN0YWxsY2hlY2stYW06CisKK21haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tYW0KKwktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKKwktcm0gLXJmICQodG9wX3NyY2RpcikvYXV0b200dGUuY2FjaGUKKwktcm0gLXJmIC4vJChERVBESVIpCisJLXJtIC1mIE1ha2VmaWxlCittYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCisKK21vc3RseWNsZWFuOiBtb3N0bHljbGVhbi1hbQorCittb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljCisKK3BkZjogcGRmLWFtCisKK3BkZi1hbToKKworcHM6IHBzLWFtCisKK3BzLWFtOgorCit1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1iaW5TQ1JJUFRTIHVuaW5zdGFsbC1kYXRhREFUQSB1bmluc3RhbGwtbWFuIFwKKwl1bmluc3RhbGwtcGtnY29uZmlnREFUQSB1bmluc3RhbGwtc2JpblBST0dSQU1TIFwKKwl1bmluc3RhbGwtc2JpblNDUklQVFMKKwordW5pbnN0YWxsLW1hbjogdW5pbnN0YWxsLW1hbjEgdW5pbnN0YWxsLW1hbjgKKworLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAorCisuUEhPTlk6IENUQUdTIEdUQUdTIGFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gXAorCWNsZWFuLWdlbmVyaWMgY2xlYW4tc2JpblBST0dSQU1TIGN0YWdzIGRpc3QgZGlzdC1hbGwgXAorCWRpc3QtYnppcDIgZGlzdC1nemlwIGRpc3QtbHptYSBkaXN0LXNoYXIgZGlzdC10YXJaIGRpc3QtemlwIFwKKwlkaXN0Y2hlY2sgZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKKwlkaXN0Y2xlYW4taGRyIGRpc3RjbGVhbi1sb2NhbCBkaXN0Y2xlYW4tdGFncyBkaXN0Y2xlYW5jaGVjayBcCisJZGlzdGRpciBkaXN0dW5pbnN0YWxsY2hlY2sgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBcCisJaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1iaW5TQ1JJUFRTIGluc3RhbGwtZGF0YSBcCisJaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZGF0YURBVEEgaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gXAorCWluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBcCisJaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLW1hbjEgXAorCWluc3RhbGwtbWFuOCBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgXAorCWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXNiaW5QUk9HUkFNUyBcCisJaW5zdGFsbC1zYmluU0NSSVBUUyBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gXAorCWluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwKKwltb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgcGRmIHBkZi1hbSBcCisJcHMgcHMtYW0gdGFncyB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1iaW5TQ1JJUFRTIFwKKwl1bmluc3RhbGwtZGF0YURBVEEgdW5pbnN0YWxsLW1hbiB1bmluc3RhbGwtbWFuMSB1bmluc3RhbGwtbWFuOCBcCisJdW5pbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgdW5pbnN0YWxsLXNiaW5QUk9HUkFNUyBcCisJdW5pbnN0YWxsLXNiaW5TQ1JJUFRTCisKKwordXNiLmlkcy5nejogJChzcmNkaXIpL3VzYi5pZHMKKwlnemlwIC1jIC05ICQ8ID4gJEAKKwordXBkYXRlLXVzYmlkcy5zaDogJChzcmNkaXIpL3VwZGF0ZS11c2JpZHMuc2guaW4KKwlzZWQgJ3N8QHVzYmlkc0B8JChkYXRhZGlyKS91c2IuaWRzfGcnICQ8ID4kQAorCWNobW9kIDc1NSAkQAorCitsc3VzYi44OiAkKHNyY2RpcikvbHN1c2IuOC5pbgorCXNlZCAnc3xWRVJTSU9OfCQoVkVSU0lPTil8ZztzfEB1c2JpZHNAfCQoZGF0YWRpcikvdXNiLmlkc3xnJyAkPCA+JEAKKwordXNiLWRldmljZXMuMTogJChzcmNkaXIpL3VzYi1kZXZpY2VzLjEuaW4KKwlzZWQgJ3N8VkVSU0lPTnwkKFZFUlNJT04pfGcnICQ8ID4kQAorCit1c2J1dGlscy5wYzogJChzcmNkaXIpL3VzYnV0aWxzLnBjLmluCisJc2VkICdzfEB1c2JpZHNAfCQoZGF0YWRpcikvdXNiLmlkc3xnO3N8QFZFUlNJT05bQF18JChWRVJTSU9OKXxnJyAkPCA+JEAKKworZGlzdGNsZWFuLWxvY2FsOgorCXJtIC1yZiBhdXRvbTR0ZS5jYWNoZQorIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4KKyMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLk5PRVhQT1JUOgpkaWZmIC0tZ2l0IGEvdXNidXRpbHMtMC44Ni9ORVdTIGIvdXNidXRpbHMtMC44Ni9ORVdTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOTU1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L05FV1MKQEAgLTAsMCArMSw0OCBAQAordXNidXRpbHMgMC44NgorPT09PT09PT09PT09PQorSElEIGRldmljZSByb2J1c3QgZml4CisKK3VzYnV0aWxzIDAuODUKKz09PT09PT09PT09PT0KK3VzYi1kZXZpY2VzIGJ1Z2ZpeGVzCitidWlsZCBmaXhlcworCit1c2J1dGlscyAwLjg0Cis9PT09PT09PT09PT09CitTeW5jIHVwIHVzYi5pZHMgZmlsZSBmcm9tIHVwc3RyZWFtCisKK3VzYnV0aWxzIDAuODMKKz09PT09PT09PT09PT0KK0hJRCBkZXNjcmlwdG9yIGJ1Z2ZpeGVzCit1c2ItZGV2aWNlcyBzY3JpcHQgdG8gZW11bGF0ZSB0aGUgL3Byb2MvYnVzL3VzYi9kZXZpY2VzIGZpbGUKK25ldyBkZXZpY2UgaWRzCisKK3VzYnV0aWxzIDAuODIKKz09PT09PT09PT09PT0KK1dpcmVsZXNzIFVTQiBkZXZpY2Ugc3VwcG9ydAorYmV0dGVyIGF1dG9jb25mIHN1cHBvcnQuCithdXRvbWF0aWMgaGFuZGxpbmcgZm9yIHVzYi5pZHMKK2J1Z2ZpeGVzCisKK3VzYnV0aWxzIDAuODEKKz09PT09PT09PT09PT0KK2ZpeGVkICctdCcgb3B0aW9uIGlmIHVzYmZzIGlzIG5vdCBtb3VudGVkCithZGRlZCBERlUgcGFyc2luZwordXBkYXRlZCB0aGUgbWFuIHBhZ2UKKwordXNidXRpbHMgMC44MAorPT09PT09PT09PT09PQorVXBkYXRlZCB1c2IuaWRzLgorVXBkYXRlZCBhdXRvdG9vbHMgbG9naWMuCitSZW1vdmVkIG9ic29sZXRlIHVzYm1vZHVsZXMuCisKK3VzYnV0aWxzIDAuNzMgKGFuZCBvbGRlcikKKz09PT09PT09PT09PT0KK1RoYW5rcyB0byBhIHBhdGNoIGZyb20gQXVyZWxpZW4gSmFybm8sIHVzYnV0aWxzIG5vdyB1c2VzIHRoZSBzeXN0ZW0ncworbGlidXNiIHRvIGFjY2VzcyBVU0IgZGV2aWNlcywgbm90IGEgcHJpdmF0ZSAob2xkKSBjb3B5IG9mIHRoYXQgbGlicmFyeS4KKworVGhlICJ1c2Jtb2R1bGVzIiBwcm9ncmFtIGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgbm8gbG9uZ2VyIGJ1aWx0IGJ5IGRlZmF1bHQuCitJZiB5b3VyIExpbnV4IDIuNCBiYXNlZCBzeXN0ZW0gbmVlZHMgaXQgdG8gaGFuZGxlIHRoZSAiY29sZHBsdWciIHByb2Nlc3NpbmcKKyhoYW5kbGluZyBkZXZpY2VzIHRoYXQgZXhpc3QgYmVmb3JlIHRoZSBPUyBpcyBmdWxseSBvcGVyYXRpb25hbCksIHlvdQorY2FuICJjb25maWd1cmUgLS1lbmFibGUtdXNibW9kdWxlcyIuCisKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvUkVBRE1FIGIvdXNidXRpbHMtMC44Ni9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljZTc4MgotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvUkVBRE1FCkBAIC0wLDAgKzEsMyBAQAoraW5pdGlhbGl6ZSBhdXRvYnVpbGQgd2l0aDoKKyAgYXV0b3JlY29uZiAtLWluc3RhbGwgLS1zeW1saW5rCisgIC4vY29uZmlndXJlCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L2FjbG9jYWwubTQgYi91c2J1dGlscy0wLjg2L2FjbG9jYWwubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNjY2M1MQotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvYWNsb2NhbC5tNApAQCAtMCwwICsxLDEwMzMgQEAKKyMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjEwLjIgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwKKyMgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKyMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuCisKK200X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKK200X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjNdLCwKK1ttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42My4KK1lvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEl0IG1heSB3b3JrLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8uCitJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KK1RvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKKworIyBwa2cubTQgLSBNYWNyb3MgdG8gbG9jYXRlIGFuZCB1dGlsaXNlIHBrZy1jb25maWcuICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorIyAKKyMgQ29weXJpZ2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisjIFBLR19QUk9HX1BLR19DT05GSUcoW01JTi1WRVJTSU9OXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW1BLR19QUk9HX1BLR19DT05GSUddLAorW200X3BhdHRlcm5fZm9yYmlkKFteXz9QS0dfW0EtWl9dKyRdKQorbTRfcGF0dGVybl9hbGxvdyhbXlBLR19DT05GSUcoX1BBVEgpPyRdKQorQUNfQVJHX1ZBUihbUEtHX0NPTkZJR10sIFtwYXRoIHRvIHBrZy1jb25maWcgdXRpbGl0eV0pZG5sCitpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCisJQUNfUEFUSF9UT09MKFtQS0dfQ09ORklHXSwgW3BrZy1jb25maWddKQorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorCV9wa2dfbWluX3ZlcnNpb249bTRfZGVmYXVsdChbJDFdLCBbMC45LjBdKQorCUFDX01TR19DSEVDS0lORyhbcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uXSkKKwlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KKwkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKwllbHNlCisJCUFDX01TR19SRVNVTFQoW25vXSkKKwkJUEtHX0NPTkZJRz0iIgorCWZpCisJCQorZmlbXWRubAorXSkjIFBLR19QUk9HX1BLR19DT05GSUcKKworIyBQS0dfQ0hFQ0tfRVhJU1RTKE1PRFVMRVMsIFtBQ1RJT04tSUYtRk9VTkRdLCBbQUNUSU9OLUlGLU5PVC1GT1VORF0pCisjCisjIENoZWNrIHRvIHNlZSB3aGV0aGVyIGEgcGFydGljdWxhciBzZXQgb2YgbW9kdWxlcyBleGlzdHMuICBTaW1pbGFyCisjIHRvIFBLR19DSEVDS19NT0RVTEVTKCksIGJ1dCBkb2VzIG5vdCBzZXQgdmFyaWFibGVzIG9yIHByaW50IGVycm9ycy4KKyMKKyMKKyMgU2ltaWxhciB0byBQS0dfQ0hFQ0tfTU9EVUxFUywgbWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGluc3RhbmNlIG9mCisjIHRoaXMgb3IgUEtHX0NIRUNLX01PRFVMRVMgaXMgY2FsbGVkLCBvciBtYWtlIHN1cmUgdG8gY2FsbAorIyBQS0dfQ0hFQ0tfRVhJU1RTIG1hbnVhbGx5CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtHX0NIRUNLX0VYSVNUU10sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIEFDX1JVTl9MT0coWyRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkMSJdKTsgdGhlbgorICBtNF9pZnZhbChbJDJdLCBbJDJdLCBbOl0pCittNF9pZnZhbG4oWyQzXSwgW2Vsc2UKKyAgJDNdKWRubAorZmldKQorCisKKyMgX1BLR19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfUEtHX0NPTkZJR10sCitbaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgorICAgIHBrZ19jdl9bXSQxPSIkJDEiCisgZWxpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskM10sCisgICAgICAgICAgICAgICAgICAgICBbcGtnX2N2X1tdJDE9YCRQS0dfQ09ORklHIC0tW10kMiAiJDMiIDI+L2Rldi9udWxsYF0sCisJCSAgICAgW3BrZ19mYWlsZWQ9eWVzXSkKKyBlbHNlCisgICAgcGtnX2ZhaWxlZD11bnRyaWVkCitmaVtdZG5sCitdKSMgX1BLR19DT05GSUcKKworIyBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURURdLAorW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQoraWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpW11kbmwKK10pIyBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKworCisjIFBLR19DSEVDS19NT0RVTEVTKFZBUklBQkxFLVBSRUZJWCwgTU9EVUxFUywgW0FDVElPTi1JRi1GT1VORF0sCisjIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKKyMKKyMKKyMgTm90ZSB0aGF0IGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNhbGwgdG8KKyMgUEtHX0NIRUNLX01PRFVMRVMgbWlnaHQgbm90IGhhcHBlbiwgeW91IHNob3VsZCBiZSBzdXJlIHRvIGluY2x1ZGUgYW4KKyMgZXhwbGljaXQgY2FsbCB0byBQS0dfUFJPR19QS0dfQ09ORklHIGluIHlvdXIgY29uZmlndXJlLmFjCisjCisjCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtHX0NIRUNLX01PRFVMRVNdLAorW0FDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKWRubAorQUNfQVJHX1ZBUihbJDFdW19DRkxBR1NdLCBbQyBjb21waWxlciBmbGFncyBmb3IgJDEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZ10pZG5sCitBQ19BUkdfVkFSKFskMV1bX0xJQlNdLCBbbGlua2VyIGZsYWdzIGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKKworcGtnX2ZhaWxlZD1ubworQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDFdKQorCitfUEtHX0NPTkZJRyhbJDFdW19DRkxBR1NdLCBbY2ZsYWdzXSwgWyQyXSkKK19QS0dfQ09ORklHKFskMV1bX0xJQlNdLCBbbGlic10sIFskMl0pCisKK200X2RlZmluZShbX1BLR19URVhUXSwgW0FsdGVybmF0aXZlbHksIHlvdSBtYXkgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgJDFbXV9DRkxBR1MKK2FuZCAkMVtdX0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY2FsbCBwa2ctY29uZmlnLgorU2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuXSkKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorICAgICAgICBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICAkMVtdX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzICIkMiIgMj4mMWAKKyAgICAgICAgZWxzZSAKKwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJvcnMgIiQyIiAyPiYxYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiQkMVtdX1BLR19FUlJPUlMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKworCWlmZWxzZShbJDRdLCAsIFtBQ19NU0dfRVJST1IoZG5sCitbUGFja2FnZSByZXF1aXJlbWVudHMgKCQyKSB3ZXJlIG5vdCBtZXQ6CisKKyQkMV9QS0dfRVJST1JTCisKK0NvbnNpZGVyIGFkanVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQoraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KKworX1BLR19URVhUCitdKV0sCisJCVtBQ19NU0dfUkVTVUxUKFtub10pCisgICAgICAgICAgICAgICAgJDRdKQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCWlmZWxzZShbJDRdLCAsIFtBQ19NU0dfRkFJTFVSRShkbmwKK1tUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKK2lzIGluIHlvdXIgUEFUSCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGZ1bGwKK3BhdGggdG8gcGtnLWNvbmZpZy4KKworX1BLR19URVhUCisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+Ll0pXSwKKwkJWyQ0XSkKK2Vsc2UKKwkkMVtdX0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MKKwkkMVtdX0xJQlM9JHBrZ19jdl9bXSQxW11fTElCUworICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCWlmZWxzZShbJDNdLCAsIDosIFskM10pCitmaVtdZG5sCitdKSMgUEtHX0NIRUNLX01PRFVMRVMKKworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fQVVUT01BS0VfVkVSU0lPTihWRVJTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUgYWNsb2NhbC5tNCBoYXMgYmVlbgorIyBnZW5lcmF0ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1dG9tYWtlIFguWS4KKyMgKFRoaXMgcHJpdmF0ZSBtYWNybyBzaG91bGQgbm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoaXMgZmlsZS4pCitBQ19ERUZVTihbQU1fQVVUT01BS0VfVkVSU0lPTl0sCitbYW1fX2FwaV92ZXJzaW9uPScxLjEwJworZG5sIFNvbWUgdXNlcnMgZmluZCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBtaXN0YWtlIGl0IGZvciBhIHdheSB0bworZG5sIHJlcXVpcmUgc29tZSBtaW5pbXVtIHZlcnNpb24uICBQb2ludCB0aGVtIHRvIHRoZSByaWdodCBtYWNyby4KK200X2lmKFskMV0sIFsxLjEwLjJdLCBbXSwKKyAgICAgIFtBQ19GQVRBTChbRG8gbm90IGNhbGwgJDAsIHVzZSBBTV9JTklUX0FVVE9NQUtFKFskMV0pLl0pXSlkbmwKK10pCisKKyMgX0FNX0FVVE9DT05GX1ZFUlNJT04oVkVSU0lPTikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYWNsb2NhbCB0cmFjZXMgdGhpcyBtYWNybyB0byBmaW5kIHRoZSBBdXRvY29uZiB2ZXJzaW9uLgorIyBUaGlzIGlzIGEgcHJpdmF0ZSBtYWNybyB0b28uICBVc2luZyBtNF9kZWZpbmUgc2ltcGxpZmllcworIyB0aGUgbG9naWMgaW4gYWNsb2NhbCwgd2hpY2ggY2FuIHNpbXBseSBpZ25vcmUgdGhpcyBkZWZpbml0aW9uLgorbTRfZGVmaW5lKFtfQU1fQVVUT0NPTkZfVkVSU0lPTl0sIFtdKQorCisjIEFNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT04KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gdGhleSBjYW4gYmUgdHJhY2VkLgorIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFNX0lOSVRfQVVUT01BS0UuCitBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sCitbQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xMC4yXSlkbmwKK200X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKK19BTV9BVVRPQ09ORl9WRVJTSU9OKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSldKQorCisjIEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIEZvciBwcm9qZWN0cyB1c2luZyBBQ19DT05GSUdfQVVYX0RJUihbZm9vXSksIEF1dG9jb25mIHNldHMKKyMgJGFjX2F1eF9kaXIgdG8gYCRzcmNkaXIvZm9vJy4gIEluIG90aGVyIHByb2plY3RzLCBpdCBpcyBzZXQgdG8KKyMgYCRzcmNkaXInLCBgJHNyY2Rpci8uLicsIG9yIGAkc3JjZGlyLy4uLy4uJy4KKyMKKyMgT2YgY291cnNlLCBBdXRvbWFrZSBtdXN0IGhvbm9yIHRoaXMgdmFyaWFibGUgd2hlbmV2ZXIgaXQgY2FsbHMgYQorIyB0b29sIGZyb20gdGhlIGF1eGlsaWFyeSBkaXJlY3RvcnkuICBUaGUgcHJvYmxlbSBpcyB0aGF0ICRzcmNkaXIgKGFuZAorIyB0aGVyZWZvcmUgJGFjX2F1eF9kaXIgYXMgd2VsbCkgY2FuIGJlIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSwKKyMgZGVwZW5kaW5nIG9uIGhvdyBjb25maWd1cmUgaXMgcnVuLiAgVGhpcyBpcyBwcmV0dHkgYW5ub3lpbmcsIHNpbmNlCisjIGl0IG1ha2VzICRhY19hdXhfZGlyIHF1aXRlIHVudXNhYmxlIGluIHN1YmRpcmVjdG9yaWVzOiBpbiB0aGUgdG9wCisjIHNvdXJjZSBkaXJlY3RvcnksIGFueSBmb3JtIHdpbGwgd29yayBmaW5lLCBidXQgaW4gc3ViZGlyZWN0b3JpZXMgYQorIyByZWxhdGl2ZSBwYXRoIG5lZWRzIHRvIGJlIGFkanVzdGVkIGZpcnN0LgorIworIyAkYWNfYXV4X2Rpci9taXNzaW5nCisjICAgIGZhaWxzIHdoZW4gY2FsbGVkIGZyb20gYSBzdWJkaXJlY3RvcnkgaWYgJGFjX2F1eF9kaXIgaXMgcmVsYXRpdmUKKyMgJHRvcF9zcmNkaXIvJGFjX2F1eF9kaXIvbWlzc2luZworIyAgICBmYWlscyBpZiAkYWNfYXV4X2RpciBpcyBhYnNvbHV0ZSwKKyMgICAgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRpcmVjdG9yeSBpbiBhIFZQQVRIIGJ1aWxkIHdpdGgKKyMgICAgICAgICAgYSByZWxhdGl2ZSAkYWNfYXV4X2RpcgorIworIyBUaGUgcmVhc29uIG9mIHRoZSBsYXR0ZXIgZmFpbHVyZSBpcyB0aGF0ICR0b3Bfc3JjZGlyIGFuZCAkYWNfYXV4X2RpcgorIyBhcmUgYm90aCBwcmVmaXhlZCBieSAkc3JjZGlyLiAgSW4gYW4gaW4tc291cmNlIGJ1aWxkIHRoaXMgaXMgdXN1YWxseQorIyBoYXJtbGVzcyBiZWNhdXNlICRzcmNkaXIgaXMgYC4nLCBidXQgdGhpbmdzIHdpbGwgYnJva2Ugd2hlbiB5b3UKKyMgc3RhcnQgYSBWUEFUSCBidWlsZCBvciB1c2UgYW4gYWJzb2x1dGUgJHNyY2Rpci4KKyMKKyMgU28gd2UgY291bGQgdXNlIHNvbWV0aGluZyBzaW1pbGFyIHRvICR0b3Bfc3JjZGlyLyRhY19hdXhfZGlyL21pc3NpbmcsCisjIGlmZiB3ZSBzdHJpcCB0aGUgbGVhZGluZyAkc3JjZGlyIGZyb20gJGFjX2F1eF9kaXIuICBUaGF0IHdvdWxkIGJlOgorIyAgIGFtX2F1eF9kaXI9J1wkKHRvcF9zcmNkaXIpLydgZXhwciAiJGFjX2F1eF9kaXIiIDogIiRzcmNkaXIvLypcKC4qXCkiYAorIyBhbmQgdGhlbiB3ZSB3b3VsZCBkZWZpbmUgJE1JU1NJTkcgYXMKKyMgICBNSVNTSU5HPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvbWlzc2luZyIKKyMgVGhpcyB3aWxsIHdvcmsgYXMgbG9uZyBhcyBNSVNTSU5HIGlzIG5vdCBjYWxsZWQgZnJvbSBjb25maWd1cmUsIGJlY2F1c2UKKyMgdW5mb3J0dW5hdGVseSAkKHRvcF9zcmNkaXIpIGhhcyBubyBtZWFuaW5nIGluIGNvbmZpZ3VyZS4KKyMgSG93ZXZlciB0aGVyZSBhcmUgb3RoZXIgdmFyaWFibGVzLCBsaWtlIENDLCB3aGljaCBhcmUgb2Z0ZW4gdXNlZCBpbgorIyBjb25maWd1cmUsIGFuZCBjb3VsZCB0aGVyZWZvcmUgbm90IHVzZSB0aGlzICJmaXhlZCIgJGFjX2F1eF9kaXIuCisjCisjIEFub3RoZXIgc29sdXRpb24sIHVzZWQgaGVyZSwgaXMgdG8gYWx3YXlzIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbgorIyBhYnNvbHV0ZSBQQVRILiAgVGhlIGRyYXdiYWNrIGlzIHRoYXQgdXNpbmcgYWJzb2x1dGUgcGF0aHMgcHJldmVudCBhCisjIGNvbmZpZ3VyZWQgdHJlZSB0byBiZSBtb3ZlZCB3aXRob3V0IHJlY29uZmlndXJhdGlvbi4KKworQUNfREVGVU4oW0FNX0FVWF9ESVJfRVhQQU5EXSwKK1tkbmwgUmVseSBvbiBhdXRvY29uZiB0byBzZXQgdXAgQ0RQQVRIIHByb3Blcmx5LgorQUNfUFJFUkVRKFsyLjUwXSlkbmwKKyMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKK2FtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKK10pCisKKyMgQU1fQ09ORElUSU9OQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgOAorCisjIEFNX0NPTkRJVElPTkFMKE5BTUUsIFNIRUxMLUNPTkRJVElPTikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgYSBjb25kaXRpb25hbC4KK0FDX0RFRlVOKFtBTV9DT05ESVRJT05BTF0sCitbQUNfUFJFUkVRKDIuNTIpZG5sCisgaWZlbHNlKFskMV0sIFtUUlVFXSwgIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0pXSwKKwlbJDFdLCBbRkFMU0VdLCBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0pZG5sCitBQ19TVUJTVChbJDFfVFJVRV0pZG5sCitBQ19TVUJTVChbJDFfRkFMU0VdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoWyQxX1RSVUVdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoWyQxX0ZBTFNFXSlkbmwKK2lmICQyOyB0aGVuCisgICQxX1RSVUU9CisgICQxX0ZBTFNFPScjJworZWxzZQorICAkMV9UUlVFPScjJworICAkMV9GQUxTRT0KK2ZpCitBQ19DT05GSUdfQ09NTUFORFNfUFJFKAorW2lmIHRlc3QgLXogIiR7JDFfVFJVRX0iICYmIHRlc3QgLXogIiR7JDFfRkFMU0V9IjsgdGhlbgorICBBQ19NU0dfRVJST1IoW1tjb25kaXRpb25hbCAiJDEiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuXV0pCitmaV0pXSkKKworIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgOQorCisjIFRoZXJlIGFyZSBhIGZldyBkaXJ0eSBoYWNrcyBiZWxvdyB0byBhdm9pZCBsZXR0aW5nIGBBQ19QUk9HX0NDJyBiZQorIyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcgYWNsb2NhbC5tNCwKKyMgd2lsbCB0aGluayBpdCBzZWVzIGEgKnVzZSosIGFuZCB0aGVyZWZvcmUgd2lsbCB0cmlnZ2VyIGFsbCBpdCdzCisjIEMgc3VwcG9ydCBtYWNoaW5lcnkuICBBbHNvIG5vdGUgdGhhdCBpdCBtZWFucyB0aGF0IGF1dG9zY2FuLCBzZWVpbmcKKyMgQ0MgZXRjLiBpbiB0aGUgTWFrZWZpbGUsIHdpbGwgYXNrIGZvciBhbiBBQ19QUk9HX0NDIHVzZS4uLgorCisKKyMgX0FNX0RFUEVOREVOQ0lFUyhOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNlZSBob3cgdGhlIGNvbXBpbGVyIGltcGxlbWVudHMgZGVwZW5kZW5jeSBjaGVja2luZy4KKyMgTkFNRSBpcyAiQ0MiLCAiQ1hYIiwgIkdDSiIsIG9yICJPQkpDIi4KKyMgV2UgdHJ5IGEgZmV3IHRlY2huaXF1ZXMgYW5kIHVzZSB0aGF0IHRvIHNldCBhIHNpbmdsZSBjYWNoZSB2YXJpYWJsZS4KKyMKKyMgV2UgZG9uJ3QgQUNfUkVRVUlSRSB0aGUgY29ycmVzcG9uZGluZyBBQ19QUk9HX0NDIHNpbmNlIHRoZSBsYXR0ZXIgd2FzCisjIG1vZGlmaWVkIHRvIGludm9rZSBfQU1fREVQRU5ERU5DSUVTKENDKTsgd2Ugd291bGQgaGF2ZSBhIGNpcmN1bGFyCisjIGRlcGVuZGVuY3ksIGFuZCBnaXZlbiB0aGF0IHRoZSB1c2VyIGlzIG5vdCBleHBlY3RlZCB0byBydW4gdGhpcyBtYWNybywKKyMganVzdCByZWx5IG9uIEFDX1BST0dfQ0MuCitBQ19ERUZVTihbX0FNX0RFUEVOREVOQ0lFU10sCitbQUNfUkVRVUlSRShbQU1fU0VUX0RFUERJUl0pZG5sCitBQ19SRVFVSVJFKFtBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10pZG5sCitBQ19SRVFVSVJFKFtBTV9NQUtFX0lOQ0xVREVdKWRubAorQUNfUkVRVUlSRShbQU1fREVQX1RSQUNLXSlkbmwKKworaWZlbHNlKFskMV0sIENDLCAgIFtkZXBjYz0iJENDIiAgIGFtX2NvbXBpbGVyX2xpc3Q9XSwKKyAgICAgICBbJDFdLCBDWFgsICBbZGVwY2M9IiRDWFgiICBhbV9jb21waWxlcl9saXN0PV0sCisgICAgICAgWyQxXSwgT0JKQywgW2RlcGNjPSIkT0JKQyIgYW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBnY2MnXSwKKyAgICAgICBbJDFdLCBVUEMsICBbZGVwY2M9IiRVUEMiICBhbV9jb21waWxlcl9saXN0PV0sCisgICAgICAgWyQxXSwgR0NKLCAgW2RlcGNjPSIkR0NKIiAgYW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBnY2MnXSwKKyAgICAgICAgICAgICAgICAgICBbZGVwY2M9IiQkMSIgICBhbV9jb21waWxlcl9saXN0PV0pCisKK0FDX0NBQ0hFX0NIRUNLKFtkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjY10sCisgICAgICAgICAgICAgICBbYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdLAorW2lmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4KKyAgIyBXZSBtYWtlIGEgc3ViZGlyIGFuZCBkbyB0aGUgdGVzdHMgdGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1cAorICAjIG1ha2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQgYW5kIG5ldmVyIHJlbW92ZS4gIEZvcgorICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cAorICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0CisgICMgaW4gRCcuCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQorICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgorICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0ZXN0LmRpcgorICBjZCBjb25mdGVzdC5kaXIKKyAgIyBXZSB3aWxsIGJ1aWxkIG9iamVjdHMgYW5kIGRlcGVuZGVuY2llcyBpbiBhIHN1YmRpcmVjdG9yeSBiZWNhdXNlCisgICMgaXQgaGVscHMgdG8gZGV0ZWN0IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVzLiAgRm9yIGluc3RhbmNlCisgICMgYm90aCBUcnU2NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAtTUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhCisgICMgc2lkZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1dCBJQ0Mgd2lsbCBwdXQgdGhlIGRlcGVuZGVuY2llcyBpbgorICAjIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3aWxsIHB1dCB0aGVtIGluIHRoZSBvYmplY3QKKyAgIyBkaXJlY3RvcnkuCisgIG1rZGlyIHN1YgorCisgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUKKyAgaWYgdGVzdCAiJGFtX2NvbXBpbGVyX2xpc3QiID0gIiI7IHRoZW4KKyAgICAgYW1fY29tcGlsZXJfbGlzdD1gc2VkIC1uIFsncy9eIypcKFthLXpBLVowLTldKlwpKSQvXDEvcCddIDwgLi9kZXBjb21wYAorICBmaQorICBmb3IgZGVwbW9kZSBpbiAkYW1fY29tcGlsZXJfbGlzdDsgZG8KKyAgICAjIFNldHVwIGEgc291cmNlIHdpdGggbWFueSBkZXBlbmRlbmNpZXMsIGJlY2F1c2Ugc29tZSBjb21waWxlcnMKKyAgICAjIGxpa2UgdG8gd3JhcCBsYXJnZSBkZXBlbmRlbmN5IGxpc3RzIG9uIGNvbHVtbiA4MCAod2l0aCBcKSwgYW5kCisgICAgIyB3ZSBzaG91bGQgbm90IGNob29zZSBhIGRlcGNvbXAgbW9kZSB3aGljaCBpcyBjb25mdXNlZCBieSB0aGlzLgorICAgICMKKyAgICAjIFdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlc2UgZmlsZXMgZm9yIGVhY2ggdGVzdCwgYXMgdGhlIGNvbXBpbGVyIG1heQorICAgICMgb3ZlcndyaXRlIHNvbWUgb2YgdGhlbSB3aGVuIHRlc3Rpbmcgd2l0aCBvYnNjdXJlIGNvbW1hbmQgbGluZXMuCisgICAgIyBUaGlzIGhhcHBlbnMgYXQgbGVhc3Qgd2l0aCB0aGUgQUlYIEMgY29tcGlsZXIuCisgICAgOiA+IHN1Yi9jb25mdGVzdC5jCisgICAgZm9yIGkgaW4gMSAyIDMgNCA1IDY7IGRvCisgICAgICBlY2hvICcjaW5jbHVkZSAiY29uZnRzdCckaScuaCInID4+IHN1Yi9jb25mdGVzdC5jCisgICAgICAjIFVzaW5nIGA6ID4gc3ViL2NvbmZ0c3QkaS5oJyBjcmVhdGVzIG9ubHkgc3ViL2NvbmZ0c3QxLmggd2l0aAorICAgICAgIyBTb2xhcmlzIDgncyB7L3Vzcix9L2Jpbi9zaC4KKyAgICAgIHRvdWNoIHN1Yi9jb25mdHN0JGkuaAorICAgIGRvbmUKKyAgICBlY2hvICIke2FtX19pbmNsdWRlfSAke2FtX19xdW90ZX1zdWIvY29uZnRlc3QuUG8ke2FtX19xdW90ZX0iID4gY29uZm1mCisKKyAgICBjYXNlICRkZXBtb2RlIGluCisgICAgbm9zaWRlZWZmZWN0KQorICAgICAgIyBhZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5IHNpZGUtZWZmZWN0LCBzbyB0aGV5J2xsCisgICAgICAjIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkCisgICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiA9IHh5ZXM7IHRoZW4KKwljb250aW51ZQorICAgICAgZWxzZQorCWJyZWFrCisgICAgICBmaQorICAgICAgOzsKKyAgICBub25lKSBicmVhayA7OworICAgIGVzYWMKKyAgICAjIFdlIGNoZWNrIHdpdGggYC1jJyBhbmQgYC1vJyBmb3IgdGhlIHNha2Ugb2YgdGhlICJkYXNobXN0ZG91dCIKKyAgICAjIG1vZGUuICBJdCB0dXJucyBvdXQgdGhhdCB0aGUgU3VuUHJvIEMrKyBjb21waWxlciBkb2VzIG5vdCBwcm9wZXJseQorICAgICMgaGFuZGxlIGAtTSAtbycsIGFuZCB3ZSBuZWVkIHRvIGRldGVjdCB0aGlzLgorICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXAorICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9c3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99IFwKKyAgICAgICBkZXBmaWxlPXN1Yi9jb25mdGVzdC5QbyB0bXBkZXBmaWxlPXN1Yi9jb25mdGVzdC5UUG8gXAorICAgICAgICRTSEVMTCAuL2RlcGNvbXAgJGRlcGNjIC1jIC1vIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuYyBcCisgICAgICAgICA+L2Rldi9udWxsIDI+Y29uZnRlc3QuZXJyICYmCisgICAgICAgZ3JlcCBzdWIvY29uZnRzdDEuaCBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3Q2Lmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICAgICBncmVwIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZSB3YXJuaW5ncworICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLgorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToKKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBmaQorICBkb25lCisKKyAgY2QgLi4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorZWxzZQorICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCitmaQorXSkKK0FDX1NVQlNUKFskMURFUE1PREVdLCBbZGVwbW9kZT0kYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdKQorQU1fQ09ORElUSU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBbCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcCisgICYmIHRlc3QgIiRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzXSkKK10pCisKKworIyBBTV9TRVRfREVQRElSCisjIC0tLS0tLS0tLS0tLS0KKyMgQ2hvb3NlIGEgZGlyZWN0b3J5IG5hbWUgZm9yIGRlcGVuZGVuY3kgZmlsZXMuCisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUworQUNfREVGVU4oW0FNX1NFVF9ERVBESVJdLAorW0FDX1JFUVVJUkUoW0FNX1NFVF9MRUFESU5HX0RPVF0pZG5sCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19sZWFkaW5nX2RvdH1kZXBzIl0pZG5sCitdKQorCisKKyMgQU1fREVQX1RSQUNLCisjIC0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX0RFUF9UUkFDS10sCitbQUNfQVJHX0VOQUJMRShkZXBlbmRlbmN5LXRyYWNraW5nLAorWyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9yc10pCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KKyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKKyAgQU1ERVBCQUNLU0xBU0g9J1wnCitmaQorQU1fQ09ORElUSU9OQUwoW0FNREVQXSwgW3Rlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhub10pCitBQ19TVUJTVChbQU1ERVBCQUNLU0xBU0hdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoW0FNREVQQkFDS1NMQVNIXSlkbmwKK10pCisKKyMgR2VuZXJhdGUgY29kZSB0byBzZXQgdXAgZGVwZW5kZW5jeSB0cmFja2luZy4gICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworI3NlcmlhbCA0CisKKyMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sCitbIyBBdXRvY29uZiAyLjYyIHF1b3RlcyAtLWZpbGUgYXJndW1lbnRzIGZvciBldmFsLCBidXQgbm90IHdoZW4gZmlsZXMKKyMgYXJlIGxpc3RlZCB3aXRob3V0IC0tZmlsZS4gIExldCdzIHBsYXkgc2FmZSBhbmQgb25seSBlbmFibGUgdGhlIGV2YWwKKyMgaWYgd2UgZGV0ZWN0IHRoZSBxdW90aW5nLgorY2FzZSAkQ09ORklHX0ZJTEVTIGluCisqXCcqKSBldmFsIHNldCB4ICIkQ09ORklHX0ZJTEVTIiA7OworKikgICBzZXQgeCAkQ09ORklHX0ZJTEVTIDs7Citlc2FjCitzaGlmdAorZm9yIG1mCitkbworICAjIFN0cmlwIE1GIHNvIHdlIGVuZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgorICBtZj1gZWNobyAiJG1mIiB8IHNlZCAtZSAncy86LiokLy8nYAorICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhbiBBdXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgb3Igbm90LgorICAjIFdlIHVzZWQgdG8gbWF0Y2ggb25seSB0aGUgZmlsZXMgbmFtZWQgYE1ha2VmaWxlLmluJywgYnV0CisgICMgc29tZSBwZW9wbGUgcmVuYW1lIHRoZW07IHNvIGluc3RlYWQgd2UgbG9vayBhdCB0aGUgZmlsZSBjb250ZW50LgorICAjIEdyZXAnaW5nIHRoZSBmaXJzdCBsaW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxlIHBvc3QtcHJvY2VzcworICAjIGVhY2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9uIHRvcCBvZiBlYWNoIGZpbGUgdG8gc2F5IHNvLgorICAjIEdyZXAnaW5nIHRoZSB3aG9sZSBmaWxlIGlzIG5vdCBnb29kIGVpdGhlcjogQUlYIGdyZXAgaGFzIGEgbGluZQorICAjIGxpbWl0IG9mIDIwNDgsIGJ1dCBhbGwgc2VkJ3Mgd2Uga25vdyBoYXZlIHVuZGVyc3RhbmQgYXQgbGVhc3QgNDAwMC4KKyAgaWYgc2VkIC1uICdzLF4jLipnZW5lcmF0ZWQgYnkgYXV0b21ha2UuKixYLHAnICIkbWYiIHwgZ3JlcCBYID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgIGRpcnBhcnQ9YEFTX0RJUk5BTUUoIiRtZiIpYAorICBlbHNlCisgICAgY29udGludWUKKyAgZmkKKyAgIyBFeHRyYWN0IHRoZSBkZWZpbml0aW9uIG9mIERFUERJUiwgYW1fX2luY2x1ZGUsIGFuZCBhbV9fcXVvdGUKKyAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2UnLgorICBERVBESVI9YHNlZCAtbiAncy9eREVQRElSID0gLy9wJyA8ICIkbWYiYAorICB0ZXN0IC16ICIkREVQRElSIiAmJiBjb250aW51ZQorICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAiJG1mImAKKyAgdGVzdCAteiAiYW1fX2luY2x1ZGUiICYmIGNvbnRpbnVlCisgIGFtX19xdW90ZT1gc2VkIC1uICdzL15hbV9fcXVvdGUgPSAvL3AnIDwgIiRtZiJgCisgICMgV2hlbiB1c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0CisgIFU9YHNlZCAtbiAncy9eVSA9IC8vcCcgPCAiJG1mImAKKyAgIyBGaW5kIGFsbCBkZXBlbmRlbmN5IG91dHB1dCBmaWxlcywgdGhleSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aAorICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBpcyB0aGUKKyAgIyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikgdG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUKKyAgIyBleHBhbnNpb24uCisgIGZvciBmaWxlIGluIGBzZWQgLW4gIgorICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBESVIpLipcKSRhbV9fcXVvdGUiJyQvXDEvcCcgPCIkbWYiIHwgXAorICAgICAgIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdzL1wkVS8nIiRVIicvZydgOyBkbworICAgICMgTWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLgorICAgIHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAmJiBjb250aW51ZQorICAgIGZkaXI9YEFTX0RJUk5BTUUoWyIkZmlsZSJdKWAKKyAgICBBU19NS0RJUl9QKFskZGlycGFydC8kZmRpcl0pCisgICAgIyBlY2hvICJjcmVhdGluZyAkZGlycGFydC8kZmlsZSIKKyAgICBlY2hvICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSIKKyAgZG9uZQorZG9uZQorXSkjIF9BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EUworCisKKyMgQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhpcyBtYWNybyBzaG91bGQgb25seSBiZSBpbnZva2VkIG9uY2UgLS0gdXNlIHZpYSBBQ19SRVFVSVJFLgorIworIyBUaGlzIGNvZGUgaXMgb25seSByZXF1aXJlZCB3aGVuIGF1dG9tYXRpYyBkZXBlbmRlbmN5IHRyYWNraW5nCisjIGlzIGVuYWJsZWQuICBGSVhNRS4gIFRoaXMgY3JlYXRlcyBlYWNoIGAuUCcgZmlsZSB0aGF0IHdlIHdpbGwKKyMgbmVlZCBpbiBvcmRlciB0byBib290c3RyYXAgdGhlIGRlcGVuZGVuY3kgaGFuZGxpbmcgY29kZS4KK0FDX0RFRlVOKFtBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sCitbQUNfQ09ORklHX0NPTU1BTkRTKFtkZXBmaWxlc10sCisgICAgIFt0ZXN0IHgiJEFNREVQX1RSVUUiICE9IHgiIiB8fCBfQU1fT1VUUFVUX0RFUEVOREVOQ1lfQ09NTUFORFNdLAorICAgICBbQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIl0pCitdKQorCisjIERvIGFsbCB0aGUgd29yayBmb3IgQXV0b21ha2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LAorIyAyMDA1LCAyMDA2LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDEzCisKKyMgVGhpcyBtYWNybyBhY3R1YWxseSBkb2VzIHRvbyBtdWNoLiAgU29tZSBjaGVja3MgYXJlIG9ubHkgbmVlZGVkIGlmCisjIHlvdXIgcGFja2FnZSBkb2VzIGNlcnRhaW4gdGhpbmdzLiAgQnV0IHRoaXMgaXNuJ3QgcmVhbGx5IGEgYmlnIGRlYWwuCisKKyMgQU1fSU5JVF9BVVRPTUFLRShQQUNLQUdFLCBWRVJTSU9OLCBbTk8tREVGSU5FXSkKKyMgQU1fSU5JVF9BVVRPTUFLRShbT1BUSU9OU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoZSBjYWxsIHdpdGggUEFDS0FHRSBhbmQgVkVSU0lPTiBhcmd1bWVudHMgaXMgdGhlIG9sZCBzdHlsZQorIyBjYWxsIChwcmUgYXV0b2NvbmYtMi41MCksIHdoaWNoIGlzIGJlaW5nIHBoYXNlZCBvdXQuICBQQUNLQUdFCisjIGFuZCBWRVJTSU9OIHNob3VsZCBub3cgYmUgcGFzc2VkIHRvIEFDX0lOSVQgYW5kIHJlbW92ZWQgZnJvbQorIyB0aGUgY2FsbCB0byBBTV9JTklUX0FVVE9NQUtFLgorIyBXZSBzdXBwb3J0IGJvdGggY2FsbCBzdHlsZXMgZm9yIHRoZSB0cmFuc2l0aW9uLiAgQWZ0ZXIKKyMgdGhlIG5leHQgQXV0b21ha2UgcmVsZWFzZSwgQXV0b2NvbmYgY2FuIG1ha2UgdGhlIEFDX0lOSVQKKyMgYXJndW1lbnRzIG1hbmRhdG9yeSwgYW5kIHRoZW4gd2UgY2FuIGRlcGVuZCBvbiBhIG5ldyBBdXRvY29uZgorIyByZWxlYXNlIGFuZCBkcm9wIHRoZSBvbGQgY2FsbCBzdXBwb3J0LgorQUNfREVGVU4oW0FNX0lOSVRfQVVUT01BS0VdLAorW0FDX1BSRVJFUShbMi42MF0pZG5sCitkbmwgQXV0b2NvbmYgd2FudHMgdG8gZGlzYWxsb3cgQU1fIG5hbWVzLiAgV2UgZXhwbGljaXRseSBhbGxvdworZG5sIHRoZSBvbmVzIHdlIGNhcmUgYWJvdXQuCittNF9wYXR0ZXJuX2FsbG93KFteQU1fW0EtWl0rRkxBR1MkXSlkbmwKK0FDX1JFUVVJUkUoW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKK2lmIHRlc3QgImBjZCAkc3JjZGlyICYmIHB3ZGAiICE9ICJgcHdkYCI7IHRoZW4KKyAgIyBVc2UgLUkkKHNyY2Rpcikgb25seSB3aGVuICQoc3JjZGlyKSAhPSAuLCBzbyB0aGF0IG1ha2UncyBvdXRwdXQKKyAgIyBpcyBub3QgcG9sbHV0ZWQgd2l0aCByZXBlYXRlZCAiLUkuIgorICBBQ19TVUJTVChbYW1fX2lzcmNdLCBbJyAtSSQoc3JjZGlyKSddKV9BTV9TVUJTVF9OT1RNQUtFKFthbV9faXNyY10pZG5sCisgICMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZAorICBpZiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbgorICAgIEFDX01TR19FUlJPUihbc291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biAibWFrZSBkaXN0Y2xlYW4iIHRoZXJlIGZpcnN0XSkKKyAgZmkKK2ZpCisKKyMgdGVzdCB3aGV0aGVyIHdlIGhhdmUgY3lncGF0aAoraWYgdGVzdCAteiAiJENZR1BBVEhfVyI7IHRoZW4KKyAgaWYgKGN5Z3BhdGggLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisgICAgQ1lHUEFUSF9XPSdjeWdwYXRoIC13JworICBlbHNlCisgICAgQ1lHUEFUSF9XPWVjaG8KKyAgZmkKK2ZpCitBQ19TVUJTVChbQ1lHUEFUSF9XXSkKKworIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLgorZG5sIERpc3Rpbmd1aXNoIGJldHdlZW4gb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2FsbHMuCittNF9pZnZhbChbJDJdLAorW200X2lmdmFsKFskM10sIFtfQU1fU0VUX09QVElPTihbbm8tZGVmaW5lXSldKWRubAorIEFDX1NVQlNUKFtQQUNLQUdFXSwgWyQxXSlkbmwKKyBBQ19TVUJTVChbVkVSU0lPTl0sIFskMl0pXSwKK1tfQU1fU0VUX09QVElPTlMoWyQxXSlkbmwKK2RubCBEaWFnbm9zZSBvbGQtc3R5bGUgQUNfSU5JVCB3aXRoIG5ldy1zdHlsZSBBTV9BVVRPTUFLRV9JTklULgorbTRfaWYobTRfaWZkZWYoW0FDX1BBQ0tBR0VfTkFNRV0sIDEpbTRfaWZkZWYoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIDEpLCAxMSwsCisgIFttNF9mYXRhbChbQUNfSU5JVCBzaG91bGQgYmUgY2FsbGVkIHdpdGggcGFja2FnZSBhbmQgdmVyc2lvbiBhcmd1bWVudHNdKV0pZG5sCisgQUNfU1VCU1QoW1BBQ0tBR0VdLCBbJ0FDX1BBQ0tBR0VfVEFSTkFNRSddKWRubAorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWydBQ19QQUNLQUdFX1ZFUlNJT04nXSldKWRubAorCitfQU1fSUZfT1BUSU9OKFtuby1kZWZpbmVdLCwKK1tBQ19ERUZJTkVfVU5RVU9URUQoUEFDS0FHRSwgIiRQQUNLQUdFIiwgW05hbWUgb2YgcGFja2FnZV0pCisgQUNfREVGSU5FX1VOUVVPVEVEKFZFUlNJT04sICIkVkVSU0lPTiIsIFtWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlXSldKWRubAorCisjIFNvbWUgdG9vbHMgQXV0b21ha2UgbmVlZHMuCitBQ19SRVFVSVJFKFtBTV9TQU5JVFlfQ0hFQ0tdKWRubAorQUNfUkVRVUlSRShbQUNfQVJHX1BST0dSQU1dKWRubAorQU1fTUlTU0lOR19QUk9HKEFDTE9DQUwsIGFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259KQorQU1fTUlTU0lOR19QUk9HKEFVVE9DT05GLCBhdXRvY29uZikKK0FNX01JU1NJTkdfUFJPRyhBVVRPTUFLRSwgYXV0b21ha2UtJHthbV9fYXBpX3ZlcnNpb259KQorQU1fTUlTU0lOR19QUk9HKEFVVE9IRUFERVIsIGF1dG9oZWFkZXIpCitBTV9NSVNTSU5HX1BST0coTUFLRUlORk8sIG1ha2VpbmZvKQorQU1fUFJPR19JTlNUQUxMX1NICitBTV9QUk9HX0lOU1RBTExfU1RSSVAKK0FDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5sCisjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgorIyBzb21lIHBsYXRmb3Jtcy4KK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwKK19BTV9JRl9PUFRJT04oW3Rhci11c3Rhcl0sIFtfQU1fUFJPR19UQVIoW3VzdGFyXSldLAorICAgICAgICAgICAgICBbX0FNX0lGX09QVElPTihbdGFyLXBheF0sIFtfQU1fUFJPR19UQVIoW3BheF0pXSwKKwkgICAgICAJCSAgICAgW19BTV9QUk9HX1RBUihbdjddKV0pXSkKK19BTV9JRl9PUFRJT04oW25vLWRlcGVuZGVuY2llc10sLAorW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NDXSwKKyAgICAgICAgICAgICAgICAgIFtfQU1fREVQRU5ERU5DSUVTKENDKV0sCisgICAgICAgICAgICAgICAgICBbZGVmaW5lKFtBQ19QUk9HX0NDXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmbihbQUNfUFJPR19DQ10pW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSldKWRubAorQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ1hYXSwKKyAgICAgICAgICAgICAgICAgIFtfQU1fREVQRU5ERU5DSUVTKENYWCldLAorICAgICAgICAgICAgICAgICAgW2RlZmluZShbQUNfUFJPR19DWFhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZuKFtBQ19QUk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX09CSkNdLAorICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoT0JKQyldLAorICAgICAgICAgICAgICAgICAgW2RlZmluZShbQUNfUFJPR19PQkpDXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmbihbQUNfUFJPR19PQkpDXSlbX0FNX0RFUEVOREVOQ0lFUyhPQkpDKV0pXSlkbmwKK10pCitdKQorCisKKyMgV2hlbiBjb25maWcuc3RhdHVzIGdlbmVyYXRlcyBhIGhlYWRlciwgd2UgbXVzdCB1cGRhdGUgdGhlIHN0YW1wLWggZmlsZS4KKyMgVGhpcyBmaWxlIHJlc2lkZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBjb25maWcgaGVhZGVyCisjIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFyZSBudW1iZXJlZCB0byBoYXZlIGRpZmZlcmVudCBuYW1lcy4KKworIyBBdXRvY29uZiBjYWxscyBfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LICh3aGVuIGRlZmluZWQpIGluIHRoZQorIyBsb29wIHdoZXJlIGNvbmZpZy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28gd2UgY2FuIGdlbmVyYXRlCisjIG91ciBzdGFtcCBmaWxlcyB0aGVyZS4KK0FDX0RFRlVOKFtfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LXSwKK1sjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCitfYW1fYXJnPSQxCitfYW1fc3RhbXBfY291bnQ9MQorZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJzIDo7IGRvCisgIGNhc2UgJF9hbV9oZWFkZXIgaW4KKyAgICAkX2FtX2FyZyB8ICRfYW1fYXJnOiogKQorICAgICAgYnJlYWsgOzsKKyAgICAqICkKKyAgICAgIF9hbV9zdGFtcF9jb3VudD1gZXhwciAkX2FtX3N0YW1wX2NvdW50ICsgMWAgOzsKKyAgZXNhYworZG9uZQorZWNobyAidGltZXN0YW1wIGZvciAkX2FtX2FyZyIgPmBBU19ESVJOQU1FKFsiJF9hbV9hcmciXSlgL3N0YW1wLWhbXSRfYW1fc3RhbXBfY291bnRdKQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBBTV9QUk9HX0lOU1RBTExfU0gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSAkaW5zdGFsbF9zaC4KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU0hdLAorW0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwKK2luc3RhbGxfc2g9JHtpbnN0YWxsX3NoLSJcJChTSEVMTCkgJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCJ9CitBQ19TVUJTVChpbnN0YWxsX3NoKV0pCisKKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAyCisKKyMgQ2hlY2sgd2hldGhlciB0aGUgdW5kZXJseWluZyBmaWxlLXN5c3RlbSBzdXBwb3J0cyBmaWxlbmFtZXMKKyMgd2l0aCBhIGxlYWRpbmcgZG90LiAgRm9yIGluc3RhbmNlIE1TLURPUyBkb2Vzbid0LgorQUNfREVGVU4oW0FNX1NFVF9MRUFESU5HX0RPVF0sCitbcm0gLXJmIC50c3QgMj4vZGV2L251bGwKK21rZGlyIC50c3QgMj4vZGV2L251bGwKK2lmIHRlc3QgLWQgLnRzdDsgdGhlbgorICBhbV9fbGVhZGluZ19kb3Q9LgorZWxzZQorICBhbV9fbGVhZGluZ19kb3Q9XworZmkKK3JtZGlyIC50c3QgMj4vZGV2L251bGwKK0FDX1NVQlNUKFthbV9fbGVhZGluZ19kb3RdKV0pCisKKyMgQ2hlY2sgdG8gc2VlIGhvdyAnbWFrZScgdHJlYXRzIGluY2x1ZGVzLgkgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAzCisKKyMgQU1fTUFLRV9JTkNMVURFKCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgdG8gc2VlIGhvdyBtYWtlIHRyZWF0cyBpbmNsdWRlcy4KK0FDX0RFRlVOKFtBTV9NQUtFX0lOQ0xVREVdLAorW2FtX21ha2U9JHtNQUtFLW1ha2V9CitjYXQgPiBjb25maW5jIDw8ICdFTkQnCithbV9fZG9pdDoKKwlAZWNobyBkb25lCisuUEhPTlk6IGFtX19kb2l0CitFTkQKKyMgSWYgd2UgZG9uJ3QgZmluZCBhbiBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUgY29kZS4KK0FDX01TR19DSEVDS0lORyhbZm9yIHN0eWxlIG9mIGluY2x1ZGUgdXNlZCBieSAkYW1fbWFrZV0pCithbV9faW5jbHVkZT0iIyIKK2FtX19xdW90ZT0KK19hbV9yZXN1bHQ9bm9uZQorIyBGaXJzdCB0cnkgR05VIG1ha2Ugc3R5bGUgaW5jbHVkZS4KK2VjaG8gImluY2x1ZGUgY29uZmluYyIgPiBjb25mbWYKKyMgV2UgZ3JlcCBvdXQgYEVudGVyaW5nIGRpcmVjdG9yeScgYW5kIGBMZWF2aW5nIGRpcmVjdG9yeScKKyMgbWVzc2FnZXMgd2hpY2ggY2FuIG9jY3VyIGlmIGB3JyBlbmRzIHVwIGluIE1BS0VGTEFHUy4KKyMgSW4gcGFydGljdWxhciB3ZSBkb24ndCBsb29rIGF0IGBebWFrZTonIGJlY2F1c2UgR05VIG1ha2UgbWlnaHQKKyMgYmUgaW52b2tlZCB1bmRlciBzb21lIG90aGVyIG5hbWUgKHVzdWFsbHkgImdtYWtlIiksIGluIHdoaWNoCisjIGNhc2UgaXQgcHJpbnRzIGl0cyBuZXcgbmFtZSBpbnN0ZWFkIG9mIGBtYWtlJy4KK2lmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsIHwgZ3JlcCAtdiAnaW5nIGRpcmVjdG9yeSdgIiA9ICJkb25lIjsgdGhlbgorICAgYW1fX2luY2x1ZGU9aW5jbHVkZQorICAgYW1fX3F1b3RlPQorICAgX2FtX3Jlc3VsdD1HTlUKK2ZpCisjIE5vdyB0cnkgQlNEIG1ha2Ugc3R5bGUgaW5jbHVkZS4KK2lmIHRlc3QgIiRhbV9faW5jbHVkZSIgPSAiIyI7IHRoZW4KKyAgIGVjaG8gJy5pbmNsdWRlICJjb25maW5jIicgPiBjb25mbWYKKyAgIGlmIHRlc3QgImAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCIgPSAiZG9uZSI7IHRoZW4KKyAgICAgIGFtX19pbmNsdWRlPS5pbmNsdWRlCisgICAgICBhbV9fcXVvdGU9IlwiIgorICAgICAgX2FtX3Jlc3VsdD1CU0QKKyAgIGZpCitmaQorQUNfU1VCU1QoW2FtX19pbmNsdWRlXSkKK0FDX1NVQlNUKFthbV9fcXVvdGVdKQorQUNfTVNHX1JFU1VMVChbJF9hbV9yZXN1bHRdKQorcm0gLWYgY29uZmluYyBjb25mbWYKK10pCisKKyMgRmFrZSB0aGUgZXhpc3RlbmNlIG9mIHByb2dyYW1zIHRoYXQgR05VIG1haW50YWluZXJzIHVzZS4gIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNQorCisjIEFNX01JU1NJTkdfUFJPRyhOQU1FLCBQUk9HUkFNKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX1BST0ddLAorW0FDX1JFUVVJUkUoW0FNX01JU1NJTkdfSEFTX1JVTl0pCiskMT0keyQxLSIke2FtX21pc3NpbmdfcnVufSQyIn0KK0FDX1NVQlNUKCQxKV0pCisKKworIyBBTV9NSVNTSU5HX0hBU19SVU4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBNSVNTSU5HIGlmIG5vdCBkZWZpbmVkIHNvIGZhciBhbmQgdGVzdCBpZiBpdCBzdXBwb3J0cyAtLXJ1bi4KKyMgSWYgaXQgZG9lcywgc2V0IGFtX21pc3NpbmdfcnVuIHRvIHVzZSBpdCwgb3RoZXJ3aXNlLCB0byBub3RoaW5nLgorQUNfREVGVU4oW0FNX01JU1NJTkdfSEFTX1JVTl0sCitbQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKWRubAorQUNfUkVRVUlSRV9BVVhfRklMRShbbWlzc2luZ10pZG5sCit0ZXN0IHgiJHtNSVNTSU5HK3NldH0iID0geHNldCB8fCBNSVNTSU5HPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvbWlzc2luZyIKKyMgVXNlIGV2YWwgdG8gZXhwYW5kICRTSEVMTAoraWYgZXZhbCAiJE1JU1NJTkcgLS1ydW4gdHJ1ZSI7IHRoZW4KKyAgYW1fbWlzc2luZ19ydW49IiRNSVNTSU5HIC0tcnVuICIKK2Vsc2UKKyAgYW1fbWlzc2luZ19ydW49CisgIEFDX01TR19XQVJOKFtgbWlzc2luZycgc2NyaXB0IGlzIHRvbyBvbGQgb3IgbWlzc2luZ10pCitmaQorXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fUFJPR19NS0RJUl9QCisjIC0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBmb3IgYG1rZGlyIC1wJy4KK0FDX0RFRlVOKFtBTV9QUk9HX01LRElSX1BdLAorW0FDX1BSRVJFUShbMi42MF0pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX01LRElSX1BdKWRubAorZG5sIEF1dG9tYWtlIDEuOCB0byAxLjkuNiB1c2VkIHRvIGRlZmluZSBta2Rpcl9wLiAgV2Ugbm93IHVzZSBNS0RJUl9QLAorZG5sIHdoaWxlIGtlZXBpbmcgYSBkZWZpbml0aW9uIG9mIG1rZGlyX3AgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCitkbmwgQE1LRElSX1BAIGlzIG1hZ2ljOiBBQ19PVVRQVVQgYWRqdXN0cyBpdHMgdmFsdWUgZm9yIGVhY2ggTWFrZWZpbGUuCitkbmwgSG93ZXZlciB3ZSBjYW5ub3QgZGVmaW5lIG1rZGlyX3AgYXMgJChNS0RJUl9QKSBmb3IgdGhlIHNha2Ugb2YKK2RubCBNYWtlZmlsZS5pbnMgdGhhdCBkbyBub3QgZGVmaW5lIE1LRElSX1AsIHNvIHdlIGRvIG91ciBvd24KK2RubCBhZGp1c3RtZW50IHVzaW5nIHRvcF9idWlsZGRpciAod2hpY2ggaXMgZGVmaW5lZCBtb3JlIG9mdGVuIHRoYW4KK2RubCBNS0RJUl9QKS4KK0FDX1NVQlNUKFtta2Rpcl9wXSwgWyIkTUtESVJfUCJdKWRubAorY2FzZSAkbWtkaXJfcCBpbgorICBbW1xcLyRdXSogfCA/OltbXFwvXV0qKSA7OworICAqLyopIG1rZGlyX3A9IlwkKHRvcF9idWlsZGRpcikvJG1rZGlyX3AiIDs7Citlc2FjCitdKQorCisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA0CisKKyMgX0FNX01BTkdMRV9PUFRJT04oTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfQU1fTUFOR0xFX09QVElPTl0sCitbW19BTV9PUFRJT05fXW00X2JwYXRzdWJzdCgkMSwgW1teYS16QS1aMC05X11dLCBbX10pXSkKKworIyBfQU1fU0VUX09QVElPTihOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0IG9wdGlvbiBOQU1FLiAgUHJlc2VudGx5IHRoYXQgb25seSBtZWFucyBkZWZpbmluZyBhIGZsYWcgZm9yIHRoaXMgb3B0aW9uLgorQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OXSwKK1ttNF9kZWZpbmUoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkKKworIyBfQU1fU0VUX09QVElPTlMoT1BUSU9OUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPUFRJT05TIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgQXV0b21ha2Ugb3B0aW9ucy4KK0FDX0RFRlVOKFtfQU1fU0VUX09QVElPTlNdLAorW200X2ZvcmVhY2hfdyhbX0FNX09wdGlvbl0sIFskMV0sIFtfQU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkKKworIyBfQU1fSUZfT1BUSU9OKE9QVElPTiwgSUYtU0VULCBbSUYtTk9ULVNFVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhlY3V0ZSBJRi1TRVQgaWYgT1BUSU9OIGlzIHNldCwgSUYtTk9ULVNFVCBvdGhlcndpc2UuCitBQ19ERUZVTihbX0FNX0lGX09QVElPTl0sCitbbTRfaWZzZXQoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIFskMl0sIFskM10pXSkKKworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZS4gICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMjAwMCwgMjAwMSwgMjAwMywgMjAwNQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA0CisKKyMgQU1fU0FOSVRZX0NIRUNLCisjIC0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX1NBTklUWV9DSEVDS10sCitbQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmVdKQorIyBKdXN0IGluIGNhc2UKK3NsZWVwIDEKK2VjaG8gdGltZXN0YW1wID4gY29uZnRlc3QuZmlsZQorIyBEbyBgc2V0JyBpbiBhIHN1YnNoZWxsIHNvIHdlIGRvbid0IGNsb2JiZXIgdGhlIGN1cnJlbnQgc2hlbGwncworIyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNvbmZpZ3VyZSBpcyBhY3R1YWxseSBhCisjIHN5bWxpbms7IHNvbWUgc3lzdGVtcyBwbGF5IHdlaXJkIGdhbWVzIHdpdGggdGhlIG1vZCB0aW1lIG9mIHN5bWxpbmtzCisjIChlZyBGcmVlQlNEIHJldHVybnMgdGhlIG1vZCB0aW1lIG9mIHRoZSBzeW1saW5rJ3MgY29udGFpbmluZworIyBkaXJlY3RvcnkpLgoraWYgKAorICAgc2V0IFggYGxzIC1MdCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIDI+IC9kZXYvbnVsbGAKKyAgIGlmIHRlc3QgIiRbKl0iID0gIlgiOyB0aGVuCisgICAgICAjIC1MIGRpZG4ndCB3b3JrLgorICAgICAgc2V0IFggYGxzIC10ICRzcmNkaXIvY29uZmlndXJlIGNvbmZ0ZXN0LmZpbGVgCisgICBmaQorICAgcm0gLWYgY29uZnRlc3QuZmlsZQorICAgaWYgdGVzdCAiJFsqXSIgIT0gIlggJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSIgXAorICAgICAgJiYgdGVzdCAiJFsqXSIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4KKworICAgICAgIyBJZiBuZWl0aGVyIG1hdGNoZWQsIHRoZW4gd2UgaGF2ZSBhIGJyb2tlbiBscy4gIFRoaXMgY2FuIGhhcHBlbgorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQorICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQorICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQgInNhbmUiLgorICAgICAgQUNfTVNHX0VSUk9SKFtscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuCithbGlhcyBpbiB5b3VyIGVudmlyb25tZW50XSkKKyAgIGZpCisKKyAgIHRlc3QgIiRbMl0iID0gY29uZnRlc3QuZmlsZQorICAgKQordGhlbgorICAgIyBPay4KKyAgIDoKK2Vsc2UKKyAgIEFDX01TR19FUlJPUihbbmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCitDaGVjayB5b3VyIHN5c3RlbSBjbG9ja10pCitmaQorQUNfTVNHX1JFU1VMVCh5ZXMpXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QKKyMgc3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAgVGhpcyBpcyBlc3BlY2lhbGx5CisjIGFubm95aW5nIGluIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudHMsIHdoZXJlIHRoZSBidWlsZCdzIHN0cmlwCisjIGlzIHVubGlrZWx5IHRvIGhhbmRsZSB0aGUgaG9zdCdzIGJpbmFyaWVzLgorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9ub3IgYSBTVFJJUFBST0cgdmFyaWFibGUsIHNvIHdlCisjIGFsd2F5cyB1c2UgaW5zdGFsbC1zaCBpbiBgbWFrZSBpbnN0YWxsLXN0cmlwJywgYW5kIGluaXRpYWxpemUKKyMgU1RSSVBQUk9HIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBTVFJJUCB2YXJpYWJsZSAoc2V0IGJ5IHRoZSB1c2VyKS4KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU1RSSVBdLAorW0FDX1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sCisjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXIKKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQKKyMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UKKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uCitkbmwgRG9uJ3QgdGVzdCBmb3IgJGNyb3NzX2NvbXBpbGluZyA9IHllcywgYmVjYXVzZSBpdCBtaWdodCBiZSBgbWF5YmUnLgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0gbm87IHRoZW4KKyAgQUNfQ0hFQ0tfVE9PTChbU1RSSVBdLCBbc3RyaXBdLCA6KQorZmkKK0lOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCQoaW5zdGFsbF9zaCkgLWMgLXMiCitBQ19TVUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQorCisjIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBfQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByZXZlbnQgQXV0b21ha2UgZnJvbSBvdXRwdXR0aW5nIFZBUklBQkxFID0gQFZBUklBQkxFQCBpbiBNYWtlZmlsZS5pbi4KKyMgVGhpcyBtYWNybyBpcyB0cmFjZWQgYnkgQXV0b21ha2UuCitBQ19ERUZVTihbX0FNX1NVQlNUX05PVE1BS0VdKQorCisjIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAyCisKKyMgX0FNX1BST0dfVEFSKEZPUk1BVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwgaW4gZm9ybWF0IEZPUk1BVC4KKyMgRk9STUFUIHNob3VsZCBiZSBvbmUgb2YgYHY3JywgYHVzdGFyJywgb3IgYHBheCcuCisjCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX190YXIpIHRoYXQgaXMgYSBjb21tYW5kCisjIHdyaXRpbmcgdG8gc3Rkb3V0IGEgRk9STUFULXRhcmJhbGwgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5CisjICR0YXJkaXIuCisjICAgICB0YXJkaXI9ZGlyZWN0b3J5ICYmICQoYW1fX3RhcikgPiByZXN1bHQudGFyCisjCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX191bnRhcikgdGhhdCBleHRyYWN0IHN1Y2gKKyMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4KKyMgICAgICQoYW1fX3VudGFyKSA8IHJlc3VsdC50YXIKK0FDX0RFRlVOKFtfQU1fUFJPR19UQVJdLAorWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KK0FNX01JU1NJTkdfUFJPRyhbQU1UQVJdLCBbdGFyXSkKK200X2lmKFskMV0sIFt2N10sCisgICAgIFthbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLSddLAorICAgICBbbTRfY2FzZShbJDFdLCBbdXN0YXJdLCwgW3BheF0sLAorICAgICAgICAgICAgICBbbTRfZmF0YWwoW1Vua25vd24gdGFyIGZvcm1hdF0pXSkKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNyZWF0ZSBhICQxIHRhciBhcmNoaXZlXSkKKyMgTG9vcCBvdmVyIGFsbCBrbm93biBtZXRob2RzIHRvIGNyZWF0ZSBhIHRhciBhcmNoaXZlIHVudGlsIG9uZSB3b3Jrcy4KK19hbV90b29scz0nZ251dGFyIG00X2lmKFskMV0sIFt1c3Rhcl0sIFtwbGFpbnRhcl0pIHBheCBjcGlvIG5vbmUnCitfYW1fdG9vbHM9JHthbV9jdl9wcm9nX3Rhcl8kMS0kX2FtX3Rvb2xzfQorIyBEbyBub3QgZm9sZCB0aGUgYWJvdmUgdHdvIGxpbmUgaW50byBvbmUsIGJlY2F1c2UgVHJ1NjQgc2ggYW5kCisjIFNvbGFyaXMgc2ggd2lsbCBub3QgZ3JvayBzcGFjZXMgaW4gdGhlIHJocyBvZiBgLScuCitmb3IgX2FtX3Rvb2wgaW4gJF9hbV90b29scworZG8KKyAgY2FzZSAkX2FtX3Rvb2wgaW4KKyAgZ251dGFyKQorICAgIGZvciBfYW1fdGFyIGluIHRhciBnbnV0YXIgZ3RhcjsKKyAgICBkbworICAgICAgQU1fUlVOX0xPRyhbJF9hbV90YXIgLS12ZXJzaW9uXSkgJiYgYnJlYWsKKyAgICBkb25lCisgICAgYW1fX3Rhcj0iJF9hbV90YXIgLS1mb3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkJHRhcmRpciInCisgICAgYW1fX3Rhcl89IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFdKSAtY2hmIC0gIiciJHRhcmRpciInCisgICAgYW1fX3VudGFyPSIkX2FtX3RhciAteGYgLSIKKyAgICA7OworICBwbGFpbnRhcikKKyAgICAjIE11c3Qgc2tpcCBHTlUgdGFyOiBpZiBpdCBkb2VzIG5vdCBzdXBwb3J0IC0tZm9ybWF0PSBpdCBkb2Vzbid0IGNyZWF0ZQorICAgICMgdXN0YXIgdGFyYmFsbCBlaXRoZXIuCisgICAgKHRhciAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMSAmJiBjb250aW51ZQorICAgIGFtX190YXI9J3RhciBjaGYgLSAiJCR0YXJkaXIiJworICAgIGFtX190YXJfPSd0YXIgY2hmIC0gIiR0YXJkaXIiJworICAgIGFtX191bnRhcj0ndGFyIHhmIC0nCisgICAgOzsKKyAgcGF4KQorICAgIGFtX190YXI9J3BheCAtTCAteCAkMSAtdyAiJCR0YXJkaXIiJworICAgIGFtX190YXJfPSdwYXggLUwgLXggJDEgLXcgIiR0YXJkaXIiJworICAgIGFtX191bnRhcj0ncGF4IC1yJworICAgIDs7CisgIGNwaW8pCisgICAgYW1fX3Rhcj0nZmluZCAiJCR0YXJkaXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwnCisgICAgYW1fX3Rhcl89J2ZpbmQgIiR0YXJkaXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwnCisgICAgYW1fX3VudGFyPSdjcGlvIC1pIC1IICQxIC1kJworICAgIDs7CisgIG5vbmUpCisgICAgYW1fX3Rhcj1mYWxzZQorICAgIGFtX190YXJfPWZhbHNlCisgICAgYW1fX3VudGFyPWZhbHNlCisgICAgOzsKKyAgZXNhYworCisgICMgSWYgdGhlIHZhbHVlIHdhcyBjYWNoZWQsIHN0b3Agbm93LiAgV2UganVzdCB3YW50ZWQgdG8gaGF2ZSBhbV9fdGFyCisgICMgYW5kIGFtX191bnRhciBzZXQuCisgIHRlc3QgLW4gIiR7YW1fY3ZfcHJvZ190YXJfJDF9IiAmJiBicmVhaworCisgICMgdGFyL3VudGFyIGEgZHVtbXkgZGlyZWN0b3J5LCBhbmQgc3RvcCBpZiB0aGUgY29tbWFuZCB3b3JrcworICBybSAtcmYgY29uZnRlc3QuZGlyCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorICBlY2hvIEdyZXBNZSA+IGNvbmZ0ZXN0LmRpci9maWxlCisgIEFNX1JVTl9MT0coW3RhcmRpcj1jb25mdGVzdC5kaXIgJiYgZXZhbCAkYW1fX3Rhcl8gPmNvbmZ0ZXN0LnRhcl0pCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKKyAgaWYgdGVzdCAtcyBjb25mdGVzdC50YXI7IHRoZW4KKyAgICBBTV9SVU5fTE9HKFskYW1fX3VudGFyIDxjb25mdGVzdC50YXJdKQorICAgIGdyZXAgR3JlcE1lIGNvbmZ0ZXN0LmRpci9maWxlID4vZGV2L251bGwgMj4mMSAmJiBicmVhaworICBmaQorZG9uZQorcm0gLXJmIGNvbmZ0ZXN0LmRpcgorCitBQ19DQUNIRV9WQUwoW2FtX2N2X3Byb2dfdGFyXyQxXSwgW2FtX2N2X3Byb2dfdGFyXyQxPSRfYW1fdG9vbF0pCitBQ19NU0dfUkVTVUxUKFskYW1fY3ZfcHJvZ190YXJfJDFdKV0pCitBQ19TVUJTVChbYW1fX3Rhcl0pCitBQ19TVUJTVChbYW1fX3VudGFyXSkKK10pICMgX0FNX1BST0dfVEFSCisKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvY29uZmlnLmguaW4gYi91c2J1dGlscy0wLjg2L2NvbmZpZy5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNDJjY2EKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L2NvbmZpZy5oLmluCkBAIC0wLDAgKzEsOTMgQEAKKy8qIGNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHonIGxpYnJhcnkgKC1seikuICovCisjdW5kZWYgSEFWRV9MSUJaCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTUVNT1JZX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVERJTlRfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURExJQl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1RBVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9VTklTVERfSAorCisvKiBOYW1lIG9mIHBhY2thZ2UgKi8KKyN1bmRlZiBQQUNLQUdFCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX05BTUUKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfU1RSSU5HCisKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKworLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCisjdW5kZWYgU1REQ19IRUFERVJTCisKKy8qIEVuYWJsZSBleHRlbnNpb25zIG9uIEFJWCAzLCBJbnRlcml4LiAgKi8KKyNpZm5kZWYgX0FMTF9TT1VSQ0UKKyMgdW5kZWYgX0FMTF9TT1VSQ0UKKyNlbmRpZgorLyogRW5hYmxlIEdOVSBleHRlbnNpb25zIG9uIHN5c3RlbXMgdGhhdCBoYXZlIHRoZW0uICAqLworI2lmbmRlZiBfR05VX1NPVVJDRQorIyB1bmRlZiBfR05VX1NPVVJDRQorI2VuZGlmCisvKiBFbmFibGUgdGhyZWFkaW5nIGV4dGVuc2lvbnMgb24gU29sYXJpcy4gICovCisjaWZuZGVmIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUworIyB1bmRlZiBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MKKyNlbmRpZgorLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gSFAgTm9uU3RvcC4gICovCisjaWZuZGVmIF9UQU5ERU1fU09VUkNFCisjIHVuZGVmIF9UQU5ERU1fU09VUkNFCisjZW5kaWYKKy8qIEVuYWJsZSBnZW5lcmFsIGV4dGVuc2lvbnMgb24gU29sYXJpcy4gICovCisjaWZuZGVmIF9fRVhURU5TSU9OU19fCisjIHVuZGVmIF9fRVhURU5TSU9OU19fCisjZW5kaWYKKworCisvKiBWZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovCisjdW5kZWYgVkVSU0lPTgorCisvKiBOdW1iZXIgb2YgYml0cyBpbiBhIGZpbGUgb2Zmc2V0LCBvbiBob3N0cyB3aGVyZSB0aGlzIGlzIHNldHRhYmxlLiAqLworI3VuZGVmIF9GSUxFX09GRlNFVF9CSVRTCisKKy8qIERlZmluZSBmb3IgbGFyZ2UgZmlsZXMsIG9uIEFJWC1zdHlsZSBob3N0cy4gKi8KKyN1bmRlZiBfTEFSR0VfRklMRVMKKworLyogRGVmaW5lIHRvIDEgaWYgb24gTUlOSVguICovCisjdW5kZWYgX01JTklYCisKKy8qIERlZmluZSB0byAyIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdCB3aXRoCisgICB0aGlzIGRlZmluZWQuICovCisjdW5kZWYgX1BPU0lYXzFfU09VUkNFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBuZWVkIHRvIGluIG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAqLworI3VuZGVmIF9QT1NJWF9TT1VSQ0UKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvY29uZmlndXJlIGIvdXNidXRpbHMtMC44Ni9jb25maWd1cmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDhhYzZkOQotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvY29uZmlndXJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvY29uZmlndXJlLmFjIGIvdXNidXRpbHMtMC44Ni9jb25maWd1cmUuYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5MTdlOQotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvY29uZmlndXJlLmFjCkBAIC0wLDAgKzEsNTMgQEAKK0FDX0lOSVQoW3VzYnV0aWxzXSwKKwlbMC44Nl0sCisJW2xpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmddKQorQUNfUFJFUkVRKDIuNjApCitBTV9JTklUX0FVVE9NQUtFKFtjaGVjay1uZXdzIGZvcmVpZ24gMS45IGRpc3QtYnppcDJdKQorbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKK0FDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkKKworQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCitBQ19TWVNfTEFSR0VGSUxFCisKK1VTRV9aTElCPXllcworQUNfQVJHX0VOQUJMRSh6bGliLAorCUFTX0hFTFBfU1RSSU5HKC0tZGlzYWJsZS16bGliLGRpc2FibGUgc3VwcG9ydCBmb3IgemxpYiksCisJWworCQlpZiBldmFsICJ0ZXN0IHgkZW5hYmxlX3psaWIgPSB4bm8iOyB0aGVuCisJCQlVU0VfWkxJQj0KKwkJZmkKKwldKQoraWYgdGVzdCAiJFVTRV9aTElCIiA9ICJ5ZXMiIDsgdGhlbgorCUFDX0NIRUNLX0xJQih6LCBpbmZsYXRlRW5kKQorCWlmIHRlc3QgIiR7YWNfY3ZfbGliX3pfaW5mbGF0ZUVuZH0iID0gInllcyIgOyB0aGVuCisJCUhBVkVfWkxJQj0ieWVzIgorCWZpCitmaQorQU1fQ09ORElUSU9OQUwoSEFWRV9aTElCLCB0ZXN0IHgkSEFWRV9aTElCID0geHllcykKKworUEtHX0NIRUNLX01PRFVMRVMoTElCVVNCLCBsaWJ1c2IgPj0gMC4xLjEyKQorQUNfU1VCU1QoTElCVVNCX0NGTEFHUykKK0FDX1NVQlNUKExJQlVTQl9MSUJTKQorCitBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorQUNfQ09ORklHX0ZJTEVTKFsKKwlNYWtlZmlsZQorXSkKKworQUNfT1VUUFVUCitBQ19NU0dfUkVTVUxUKFsKKwl1c2J1dGlscyAkVkVSU0lPTgorCT09PT09PT09PT09PT0KKworCXByZWZpeDogICAgICAgICAgICAgICAgICR7cHJlZml4fQorCWRhdGFyb290ZGlyOiAgICAgICAgICAgICR7ZGF0YXJvb3RkaXJ9CisJZGF0YWRpcjogICAgICAgICAgICAgICAgJHtkYXRhZGlyfQorCW1hbmRpcjogICAgICAgICAgICAgICAgICR7bWFuZGlyfQorCisJdXNiLmlkczogICAgICAgICAgICAgICAgJHtkYXRhZGlyfS91c2IuaWRzCisJemxpYjogICAgICAgICAgICAgICAgICAgJHtVU0VfWkxJQn0KKworCWNvbXBpbGVyOiAgICAgICAgICAgICAgICR7Q0N9CisJY2ZsYWdzOiAgICAgICAgICAgICAgICAgJHtDRkxBR1N9CisJbGRmbGFnczogICAgICAgICAgICAgICAgJHtMREZMQUdTfQorXSkKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvZGVwY29tcCBiL3VzYnV0aWxzLTAuODYvZGVwY29tcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNWY5NzM2Ci0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9kZXBjb21wCkBAIC0wLDAgKzEsNTg5IEBACisjISAvYmluL3NoCisjIGRlcGNvbXAgLSBjb21waWxlIGEgcHJvZ3JhbSBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcyBhcyBzaWRlLWVmZmVjdHMKKworc2NyaXB0dmVyc2lvbj0yMDA3LTAzLTI5LjAxCisKKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisjIDAyMTEwLTEzMDEsIFVTQS4KKworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IEFsZXhhbmRyZSBPbGl2YSA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+LgorCitjYXNlICQxIGluCisgICcnKQorICAgICBlY2hvICIkMDogTm8gY29tbWFuZC4gIFRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAxPiYyCisgICAgIGV4aXQgMTsKKyAgICAgOzsKKyAgLWggfCAtLWgqKQorICAgIGNhdCA8PFxFT0YKK1VzYWdlOiBkZXBjb21wIFstLWhlbHBdIFstLXZlcnNpb25dIFBST0dSQU0gW0FSR1NdCisKK1J1biBQUk9HUkFNUyBBUkdTIHRvIGNvbXBpbGUgYSBmaWxlLCBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcworYXMgc2lkZS1lZmZlY3RzLgorCitFbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgIGRlcG1vZGUgICAgIERlcGVuZGVuY3kgdHJhY2tpbmcgbW9kZS4KKyAgc291cmNlICAgICAgU291cmNlIGZpbGUgcmVhZCBieSBgUFJPR1JBTVMgQVJHUycuCisgIG9iamVjdCAgICAgIE9iamVjdCBmaWxlIG91dHB1dCBieSBgUFJPR1JBTVMgQVJHUycuCisgIERFUERJUiAgICAgIGRpcmVjdG9yeSB3aGVyZSB0byBzdG9yZSBkZXBlbmRlbmNpZXMuCisgIGRlcGZpbGUgICAgIERlcGVuZGVuY3kgZmlsZSB0byBvdXRwdXQuCisgIHRtcGRlcGZpbGUgIFRlbXBvcmFyeSBmaWxlIHRvIHVzZSB3aGVuIG91dHB1dGluZyBkZXBlbmRlbmNpZXMuCisgIGxpYnRvb2wgICAgIFdoZXRoZXIgbGlidG9vbCBpcyB1c2VkICh5ZXMvbm8pLgorCitSZXBvcnQgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LgorRU9GCisgICAgZXhpdCAkPworICAgIDs7CisgIC12IHwgLS12KikKKyAgICBlY2hvICJkZXBjb21wICRzY3JpcHR2ZXJzaW9uIgorICAgIGV4aXQgJD8KKyAgICA7OworZXNhYworCitpZiB0ZXN0IC16ICIkZGVwbW9kZSIgfHwgdGVzdCAteiAiJHNvdXJjZSIgfHwgdGVzdCAteiAiJG9iamVjdCI7IHRoZW4KKyAgZWNobyAiZGVwY29tcDogVmFyaWFibGVzIHNvdXJjZSwgb2JqZWN0IGFuZCBkZXBtb2RlIG11c3QgYmUgc2V0IiAxPiYyCisgIGV4aXQgMQorZmkKKworIyBEZXBlbmRlbmNpZXMgZm9yIHN1Yi9iYXIubyBvciBzdWIvYmFyLm9iaiBnbyBpbnRvIHN1Yi8uZGVwcy9iYXIuUG8uCitkZXBmaWxlPSR7ZGVwZmlsZS1gZWNobyAiJG9iamVjdCIgfAorICBzZWQgJ3N8W15cXC9dKiR8JyR7REVQRElSLS5kZXBzfScvJnw7c3xcLlwoW14uXSpcKSR8LlBcMXw7c3xQb2JqJHxQb3wnYH0KK3RtcGRlcGZpbGU9JHt0bXBkZXBmaWxlLWBlY2hvICIkZGVwZmlsZSIgfCBzZWQgJ3MvXC5cKFteLl0qXCkkLy5UXDEvJ2B9CisKK3JtIC1mICIkdG1wZGVwZmlsZSIKKworIyBTb21lIG1vZGVzIHdvcmsganVzdCBsaWtlIG90aGVyIG1vZGVzLCBidXQgdXNlIGRpZmZlcmVudCBmbGFncy4gIFdlCisjIHBhcmFtZXRlcml6ZSBoZXJlLCBidXQgc3RpbGwgbGlzdCB0aGUgbW9kZXMgaW4gdGhlIGJpZyBjYXNlIGJlbG93LAorIyB0byBtYWtlIGRlcGVuZC5tNCBlYXNpZXIgdG8gd3JpdGUuICBOb3RlIHRoYXQgd2UgKmNhbm5vdCogdXNlIGEgY2FzZQorIyBoZXJlLCBiZWNhdXNlIHRoaXMgZmlsZSBjYW4gb25seSBjb250YWluIG9uZSBjYXNlIHN0YXRlbWVudC4KK2lmIHRlc3QgIiRkZXBtb2RlIiA9IGhwOyB0aGVuCisgICMgSFAgY29tcGlsZXIgdXNlcyAtTSBhbmQgbm8gZXh0cmEgYXJnLgorICBnY2NmbGFnPS1NCisgIGRlcG1vZGU9Z2NjCitmaQorCitpZiB0ZXN0ICIkZGVwbW9kZSIgPSBkYXNoWG1zdGRvdXQ7IHRoZW4KKyAgICMgVGhpcyBpcyBqdXN0IGxpa2UgZGFzaG1zdGRvdXQgd2l0aCBhIGRpZmZlcmVudCBhcmd1bWVudC4KKyAgIGRhc2htZmxhZz0teE0KKyAgIGRlcG1vZGU9ZGFzaG1zdGRvdXQKK2ZpCisKK2Nhc2UgIiRkZXBtb2RlIiBpbgorZ2NjMykKKyMjIGdjYyAzIGltcGxlbWVudHMgZGVwZW5kZW5jeSB0cmFja2luZyB0aGF0IGRvZXMgZXhhY3RseSB3aGF0CisjIyB3ZSB3YW50LiAgWWF5ISAgTm90ZTogZm9yIHNvbWUgcmVhc29uIGxpYnRvb2wgMS40IGRvZXNuJ3QgbGlrZQorIyMgaXQgaWYgLU1EIC1NUCBjb21lcyBhZnRlciB0aGUgLU1GIHN0dWZmLiAgSG1tLgorIyMgVW5mb3J0dW5hdGVseSwgRnJlZUJTRCBjODkgYWNjZXB0YW5jZSBvZiBmbGFncyBkZXBlbmRzIHVwb24KKyMjIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgb3JkZXI7IHNvIGFkZCB0aGUgZmxhZ3Mgd2hlcmUgdGhleQorIyMgYXBwZWFyIGluIGRlcGVuZDIuYW0uICBOb3RlIHRoYXQgdGhlIHNsb3dkb3duIGluY3VycmVkIGhlcmUKKyMjIGFmZmVjdHMgb25seSBjb25maWd1cmU6IGluIG1ha2VmaWxlcywgJUZBU1RERVAlIHNob3J0Y3V0cyB0aGlzLgorICBmb3IgYXJnCisgIGRvCisgICAgY2FzZSAkYXJnIGluCisgICAgLWMpIHNldCBmbm9yZCAiJEAiIC1NVCAiJG9iamVjdCIgLU1EIC1NUCAtTUYgIiR0bXBkZXBmaWxlIiAiJGFyZyIgOzsKKyAgICAqKSAgc2V0IGZub3JkICIkQCIgIiRhcmciIDs7CisgICAgZXNhYworICAgIHNoaWZ0ICMgZm5vcmQKKyAgICBzaGlmdCAjICRhcmcKKyAgZG9uZQorICAiJEAiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBtdiAiJHRtcGRlcGZpbGUiICIkZGVwZmlsZSIKKyAgOzsKKworZ2NjKQorIyMgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBnZXQgZGVwZW5kZW5jeSBvdXRwdXQgZnJvbSBnY2MuICBIZXJlJ3MKKyMjIHdoeSB3ZSBwaWNrIHRoaXMgcmF0aGVyIG9ic2N1cmUgbWV0aG9kOgorIyMgLSBEb24ndCB3YW50IHRvIHVzZSAtTUQgYmVjYXVzZSB3ZSdkIGxpa2UgdGhlIGRlcGVuZGVuY2llcyB0byBlbmQKKyMjICAgdXAgaW4gYSBzdWJkaXIuICBIYXZpbmcgdG8gcmVuYW1lIGJ5IGhhbmQgaXMgdWdseS4KKyMjICAgKFdlIG1pZ2h0IGVuZCB1cCBkb2luZyB0aGlzIGFueXdheSB0byBzdXBwb3J0IG90aGVyIGNvbXBpbGVycy4pCisjIyAtIFRoZSBERVBFTkRFTkNJRVNfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlIG1ha2VzIGdjYyBhY3QgbGlrZQorIyMgICAtTU0sIG5vdCAtTSAoZGVzcGl0ZSB3aGF0IHRoZSBkb2NzIHNheSkuCisjIyAtIFVzaW5nIC1NIGRpcmVjdGx5IG1lYW5zIHJ1bm5pbmcgdGhlIGNvbXBpbGVyIHR3aWNlIChldmVuIHdvcnNlCisjIyAgIHRoYW4gcmVuYW1pbmcpLgorICBpZiB0ZXN0IC16ICIkZ2NjZmxhZyI7IHRoZW4KKyAgICBnY2NmbGFnPS1NRCwKKyAgZmkKKyAgIiRAIiAtV3AsIiRnY2NmbGFnJHRtcGRlcGZpbGUiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIGFscGhhPUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoKKyMjIFRoZSBzZWNvbmQgLWUgZXhwcmVzc2lvbiBoYW5kbGVzIERPUy1zdHlsZSBmaWxlIG5hbWVzIHdpdGggZHJpdmUgbGV0dGVycy4KKyAgc2VkIC1lICdzL15bXjpdKjogLyAvJyBcCisgICAgICAtZSAncy9eWyckYWxwaGEnXTpcL1teOl0qOiAvIC8nIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisjIyBUaGlzIG5leHQgcGllY2Ugb2YgbWFnaWMgYXZvaWRzIHRoZSBgZGVsZXRlZCBoZWFkZXIgZmlsZScgcHJvYmxlbS4KKyMjIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiBhIGhlYWRlciBmaWxlIHdoaWNoIGFwcGVhcnMgaW4gYSAuUCBmaWxlCisjIyBpcyBkZWxldGVkLCB0aGUgZGVwZW5kZW5jeSBjYXVzZXMgbWFrZSB0byBkaWUgKGJlY2F1c2UgdGhlcmUgaXMKKyMjIHR5cGljYWxseSBubyB3YXkgdG8gcmVidWlsZCB0aGUgaGVhZGVyKS4gIFdlIGF2b2lkIHRoaXMgYnkgYWRkaW5nCisjIyBkdW1teSBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggaGVhZGVyIGZpbGUuICBUb28gYmFkIGdjYyBkb2Vzbid0IGRvCisjIyB0aGlzIGZvciB1cyBkaXJlY3RseS4KKyAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIHwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIHB1dCBhIHNwYWNlIGJlZm9yZSB0aGUgYDonLiAgT24gdGhlIHRoZW9yeQorIyMgdGhhdCB0aGUgc3BhY2UgbWVhbnMgc29tZXRoaW5nLCB3ZSBhZGQgYSBzcGFjZSB0byB0aGUgb3V0cHV0IGFzCisjIyB3ZWxsLgorIyMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyMjIGNvcnJlY3RseS4gIEJyZWFraW5nIGl0IGludG8gdHdvIHNlZCBpbnZvY2F0aW9ucyBpcyBhIHdvcmthcm91bmQuCisgICAgc2VkIC1lICdzL15cXCQvLycgLWUgJy9eJC9kJyAtZSAnLzokL2QnIHwgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaHApCisgICMgVGhpcyBjYXNlIGV4aXN0cyBvbmx5IHRvIGxldCBkZXBlbmQubTQgZG8gaXRzIHdvcmsuICBJdCB3b3JrcyBieQorICAjIGxvb2tpbmcgYXQgdGhlIHRleHQgb2YgdGhpcyBzY3JpcHQuICBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSBydW4sCisgICMgc2luY2UgaXQgaXMgY2hlY2tlZCBmb3IgYWJvdmUuCisgIGV4aXQgMQorICA7OworCitzZ2kpCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgICIkQCIgIi1XcCwtTUR1cGRhdGUsJHRtcGRlcGZpbGUiCisgIGVsc2UKKyAgICAiJEAiIC1NRHVwZGF0ZSAiJHRtcGRlcGZpbGUiCisgIGZpCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisKKyAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuICAjIHllcywgdGhlIHNvdXJjZWZpbGUgZGVwZW5kIG9uIG90aGVyIGZpbGVzCisgICAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKKworICAgICMgQ2xpcCBvZmYgdGhlIGluaXRpYWwgZWxlbWVudCAodGhlIGRlcGVuZGVudCkuICBEb24ndCB0cnkgdG8gYmUKKyAgICAjIGNsZXZlciBhbmQgcmVwbGFjZSB0aGlzIHdpdGggc2VkIGNvZGUsIGFzIElSSVggc2VkIHdvbid0IGhhbmRsZQorICAgICMgbGluZXMgd2l0aCBtb3JlIHRoYW4gYSBmaXhlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoNDA5NiBpbgorICAgICMgSVJJWCA2LjIgc2VkLCA4MTkyIGluIElSSVggNi41KS4gIFdlIGFsc28gcmVtb3ZlIGNvbW1lbnQgbGluZXM7CisgICAgIyB0aGUgSVJJWCBjYyBhZGRzIGNvbW1lbnRzIGxpa2UgYCM6ZmVjJyB0byB0aGUgZW5kIG9mIHRoZQorICAgICMgZGVwZW5kZW5jeSBsaW5lLgorICAgIHRyICcgJyAnCisnIDwgIiR0bXBkZXBmaWxlIiBcCisgICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIHwgXAorICAgIHRyICcKKycgJyAnID4+ICRkZXBmaWxlCisgICAgZWNobyA+PiAkZGVwZmlsZQorCisgICAgIyBUaGUgc2Vjb25kIHBhc3MgZ2VuZXJhdGVzIGEgZHVtbXkgZW50cnkgZm9yIGVhY2ggaGVhZGVyIGZpbGUuCisgICAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIFwKKyAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyAtZSAncy8kLzovJyBcCisgICA+PiAkZGVwZmlsZQorICBlbHNlCisgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKKyAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKKyAgICAjICJpbmNsdWRlIGJhc2VuYW1lLlBsbyIgc2NoZW1lLgorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworYWl4KQorICAjIFRoZSBDIGZvciBBSVggQ29tcGlsZXIgdXNlcyAtTSBhbmQgb3V0cHV0cyB0aGUgZGVwZW5kZW5jaWVzCisgICMgaW4gYSAudSBmaWxlLiAgSW4gb2xkZXIgdmVyc2lvbnMsIHRoaXMgZmlsZSBhbHdheXMgbGl2ZXMgaW4gdGhlCisgICMgY3VycmVudCBkaXJlY3RvcnkuICBBbHNvLCB0aGUgQUlYIGNvbXBpbGVyIHB1dHMgYCRvYmplY3Q6JyBhdCB0aGUKKyAgIyBzdGFydCBvZiBlYWNoIGxpbmU7ICRvYmplY3QgZG9lc24ndCBoYXZlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KKyAgIyBWZXJzaW9uIDYgdXNlcyB0aGUgZGlyZWN0b3J5IGluIGJvdGggY2FzZXMuCisgIGRpcj1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8L1teL10qJHwvfCdgCisgIHRlc3QgIngkZGlyIiA9ICJ4JG9iamVjdCIgJiYgZGlyPQorICBiYXNlPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3xeLiovfHwnIC1lICdzL1wubyQvLycgLWUgJ3MvXC5sbyQvLydgCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGJhc2UudQorICAgIHRtcGRlcGZpbGUzPSRkaXIubGlicy8kYmFzZS51CisgICAgIiRAIiAtV2MsLU0KKyAgZWxzZQorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMz0kZGlyJGJhc2UudQorICAgICIkQCIgLU0KKyAgZmkKKyAgc3RhdD0kPworCisgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICBlbHNlCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKKyAgICBleGl0ICRzdGF0CisgIGZpCisKKyAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKKyAgZG8KKyAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgZG9uZQorICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KKyAgICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJy4KKyAgICAjIERvIHR3byBwYXNzZXMsIG9uZSB0byBqdXN0IGNoYW5nZSB0aGVzZSB0bworICAgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KKyAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAgICMgVGhhdCdzIGEgdGFiIGFuZCBhIHNwYWNlIGluIHRoZSBbXS4KKyAgICBzZWQgLWUgJ3MsXi4qXC5bYS16XSo6WwkgXSosLCcgLWUgJ3MsJCw6LCcgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgZWxzZQorICAgICMgVGhlIHNvdXJjZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgZGVwZW5kZW5jaWVzLCBzbyBqdXN0CisgICAgIyBzdG9yZSBhIGR1bW15IGNvbW1lbnQgbGluZSwgdG8gYXZvaWQgZXJyb3JzIHdpdGggdGhlIE1ha2VmaWxlCisgICAgIyAiaW5jbHVkZSBiYXNlbmFtZS5QbG8iIHNjaGVtZS4KKyAgICBlY2hvICIjZHVtbXkiID4gIiRkZXBmaWxlIgorICBmaQorICBybSAtZiAiJHRtcGRlcGZpbGUiCisgIDs7CisKK2ljYykKKyAgIyBJbnRlbCdzIEMgY29tcGlsZXIgdW5kZXJzdGFuZHMgYC1NRCAtTUYgZmlsZScuICBIb3dldmVyIG9uCisgICMgICAgaWNjIC1NRCAtTUYgZm9vLmQgLWMgLW8gc3ViL2Zvby5vIHN1Yi9mb28uYworICAjIElDQyA3LjAgd2lsbCBmaWxsIGZvby5kIHdpdGggc29tZXRoaW5nIGxpa2UKKyAgIyAgICBmb28ubzogc3ViL2Zvby5jCisgICMgICAgZm9vLm86IHN1Yi9mb28uaAorICAjIHdoaWNoIGlzIHdyb25nLiAgV2Ugd2FudDoKKyAgIyAgICBzdWIvZm9vLm86IHN1Yi9mb28uYworICAjICAgIHN1Yi9mb28ubzogc3ViL2Zvby5oCisgICMgICAgc3ViL2Zvby5jOgorICAjICAgIHN1Yi9mb28uaDoKKyAgIyBJQ0MgNy4xIHdpbGwgb3V0cHV0CisgICMgICAgZm9vLm86IHN1Yi9mb28uYyBzdWIvZm9vLmgKKyAgIyBhbmQgd2lsbCB3cmFwIGxvbmcgbGluZXMgdXNpbmcgXCA6CisgICMgICAgZm9vLm86IHN1Yi9mb28uYyAuLi4gXAorICAjICAgICBzdWIvZm9vLmggLi4uIFwKKyAgIyAgICAgLi4uCisKKyAgIiRAIiAtTUQgLU1GICIkdG1wZGVwZmlsZSIKKyAgc3RhdD0kPworICBpZiB0ZXN0ICRzdGF0IC1lcSAwOyB0aGVuIDoKKyAgZWxzZQorICAgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgICBleGl0ICRzdGF0CisgIGZpCisgIHJtIC1mICIkZGVwZmlsZSIKKyAgIyBFYWNoIGxpbmUgaXMgb2YgdGhlIGZvcm0gYGZvby5vOiBkZXBlbmRlbnQuaCcsCisgICMgb3IgYGZvby5vOiBkZXAxLmggZGVwMi5oIFwnLCBvciBgIGRlcDMuaCBkZXA0LmggXCcuCisgICMgRG8gdHdvIHBhc3Nlcywgb25lIHRvIGp1c3QgY2hhbmdlIHRoZXNlIHRvCisgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KKyAgc2VkICJzLF5bXjpdKjosJG9iamVjdCA6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAjIFNvbWUgdmVyc2lvbnMgb2YgdGhlIEhQVVggMTAuMjAgc2VkIGNhbid0IHByb2Nlc3MgdGhpcyBpbnZvY2F0aW9uCisgICMgY29ycmVjdGx5LiAgQnJlYWtpbmcgaXQgaW50byB0d28gc2VkIGludm9jYXRpb25zIGlzIGEgd29ya2Fyb3VuZC4KKyAgc2VkICdzLF5bXjpdKjogXCguKlwpJCxcMSw7cy9eXFwkLy87L14kL2Q7LzokL2QnIDwgIiR0bXBkZXBmaWxlIiB8CisgICAgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaHAyKQorICAjIFRoZSAiaHAiIHN0YW56YSBhYm92ZSBkb2VzIG5vdCB3b3JrIHdpdGggYUNDIChDKyspIGFuZCBIUCdzIGlhNjQKKyAgIyBjb21waWxlcnMsIHdoaWNoIGhhdmUgaW50ZWdyYXRlZCBwcmVwcm9jZXNzb3JzLiAgVGhlIGNvcnJlY3Qgb3B0aW9uCisgICMgdG8gdXNlIHdpdGggdGhlc2UgaXMgK01ha2VkOyBpdCB3cml0ZXMgZGVwZW5kZW5jaWVzIHRvIGEgZmlsZSBuYW1lZAorICAjICdmb28uZCcsIHdoaWNoIGxhbmRzIG5leHQgdG8gdGhlIG9iamVjdCBmaWxlLCB3aGVyZXZlciB0aGF0CisgICMgaGFwcGVucyB0byBiZS4KKyAgIyBNdWNoIG9mIHRoaXMgaXMgc2ltaWxhciB0byB0aGUgdHJ1NjQgY2FzZTsgc2VlIGNvbW1lbnRzIHRoZXJlLgorICBkaXI9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfC9bXi9dKiR8L3wnYAorICB0ZXN0ICJ4JGRpciIgPSAieCRvYmplY3QiICYmIGRpcj0KKyAgYmFzZT1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8Xi4qL3x8JyAtZSAncy9cLm8kLy8nIC1lICdzL1wubG8kLy8nYAorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2UuZAorICAgIHRtcGRlcGZpbGUyPSRkaXIubGlicy8kYmFzZS5kCisgICAgIiRAIiAtV2MsK01ha2VkCisgIGVsc2UKKyAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2UuZAorICAgIHRtcGRlcGZpbGUyPSRkaXIkYmFzZS5kCisgICAgIiRAIiArTWFrZWQKKyAgZmkKKyAgc3RhdD0kPworICBpZiB0ZXN0ICRzdGF0IC1lcSAwOyB0aGVuIDoKKyAgZWxzZQorICAgICBybSAtZiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIgorICAgICBleGl0ICRzdGF0CisgIGZpCisKKyAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIKKyAgZG8KKyAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgZG9uZQorICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KKyAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKKyAgICAjIEFkZCBgZGVwZW5kZW50Lmg6JyBsaW5lcy4KKyAgICBzZWQgLW5lICcyLCR7OyBzL14gKi8vOyBzLyBcXCokLy87IHMvJC86LzsgcDt9JyAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgZWxzZQorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIgIiR0bXBkZXBmaWxlMiIKKyAgOzsKKwordHJ1NjQpCisgICAjIFRoZSBUcnU2NCBjb21waWxlciB1c2VzIC1NRCB0byBnZW5lcmF0ZSBkZXBlbmRlbmNpZXMgYXMgYSBzaWRlCisgICAjIGVmZmVjdC4gIGBjYyAtTUQgLW8gZm9vLm8gLi4uJyBwdXRzIHRoZSBkZXBlbmRlbmNpZXMgaW50byBgZm9vLm8uZCcuCisgICAjIEF0IGxlYXN0IG9uIEFscGhhL1JlZGhhdCA2LjEsIENvbXBhcSBDQ0MgVjYuMi01MDQgc2VlbXMgdG8gcHV0CisgICAjIGRlcGVuZGVuY2llcyBpbiBgZm9vLmQnIGluc3RlYWQsIHNvIHdlIGNoZWNrIGZvciB0aGF0IHRvby4KKyAgICMgU3ViZGlyZWN0b3JpZXMgYXJlIHJlc3BlY3RlZC4KKyAgIGRpcj1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8L1teL10qJHwvfCdgCisgICB0ZXN0ICJ4JGRpciIgPSAieCRvYmplY3QiICYmIGRpcj0KKyAgIGJhc2U9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfF4uKi98fCcgLWUgJ3MvXC5vJC8vJyAtZSAncy9cLmxvJC8vJ2AKKworICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgICAjIFdpdGggVHJ1NjQgY2MsIHNoYXJlZCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQgdG8gbWFrZSBhCisgICAgICAjIHN0YXRpYyBsaWJyYXJ5LiAgVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBpbiBsaWJ0b29sIDEuNCBzZXJpZXMgdG8KKyAgICAgICMgaGFuZGxlIGJvdGggc2hhcmVkIGFuZCBzdGF0aWMgbGlicmFyaWVzIGluIGEgc2luZ2xlIGNvbXBpbGF0aW9uLgorICAgICAgIyBXaXRoIGxpYnRvb2wgMS40LCBkZXBlbmRlbmNpZXMgd2VyZSBvdXRwdXQgaW4gJGRpci5saWJzLyRiYXNlLmxvLmQuCisgICAgICAjCisgICAgICAjIFdpdGggbGlidG9vbCAxLjUgdGhpcyBleGNlcHRpb24gd2FzIHJlbW92ZWQsIGFuZCBsaWJ0b29sIG5vdworICAgICAgIyBnZW5lcmF0ZXMgMiBzZXBhcmF0ZSBvYmplY3RzIGZvciB0aGUgMiBsaWJyYXJpZXMuICBUaGVzZSB0d28KKyAgICAgICMgY29tcGlsYXRpb25zIG91dHB1dCBkZXBlbmRlbmNpZXMgaW4gJGRpci5saWJzLyRiYXNlLm8uZCBhbmQKKyAgICAgICMgaW4gJGRpciRiYXNlLm8uZC4gIFdlIGhhdmUgdG8gY2hlY2sgZm9yIGJvdGggZmlsZXMsIGJlY2F1c2UKKyAgICAgICMgb25lIG9mIHRoZSB0d28gY29tcGlsYXRpb25zIGNhbiBiZSBkaXNhYmxlZC4gIFdlIHNob3VsZCBwcmVmZXIKKyAgICAgICMgJGRpciRiYXNlLm8uZCBvdmVyICRkaXIubGlicy8kYmFzZS5vLmQgYmVjYXVzZSB0aGUgbGF0dGVyIGlzCisgICAgICAjIGF1dG9tYXRpY2FsbHkgY2xlYW5lZCB3aGVuIC5saWJzLyBpcyBkZWxldGVkLCB3aGlsZSBpZ25vcmluZworICAgICAgIyB0aGUgZm9ybWVyIHdvdWxkIGNhdXNlIGEgZGlzdGNsZWFuY2hlY2sgcGFuaWMuCisgICAgICB0bXBkZXBmaWxlMT0kZGlyLmxpYnMvJGJhc2UubG8uZCAgICMgbGlidG9vbCAxLjQKKyAgICAgIHRtcGRlcGZpbGUyPSRkaXIkYmFzZS5vLmQgICAgICAgICAgIyBsaWJ0b29sIDEuNQorICAgICAgdG1wZGVwZmlsZTM9JGRpci5saWJzLyRiYXNlLm8uZCAgICAjIGxpYnRvb2wgMS41CisgICAgICB0bXBkZXBmaWxlND0kZGlyLmxpYnMvJGJhc2UuZCAgICAgICMgQ29tcGFxIENDQyBWNi4yLTUwNAorICAgICAgIiRAIiAtV2MsLU1ECisgICBlbHNlCisgICAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2Uuby5kCisgICAgICB0bXBkZXBmaWxlMj0kZGlyJGJhc2UuZAorICAgICAgdG1wZGVwZmlsZTM9JGRpciRiYXNlLmQKKyAgICAgIHRtcGRlcGZpbGU0PSRkaXIkYmFzZS5kCisgICAgICAiJEAiIC1NRAorICAgZmkKKworICAgc3RhdD0kPworICAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgICBlbHNlCisgICAgICBybSAtZiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIiAiJHRtcGRlcGZpbGUzIiAiJHRtcGRlcGZpbGU0IgorICAgICAgZXhpdCAkc3RhdAorICAgZmkKKworICAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIgIiR0bXBkZXBmaWxlNCIKKyAgIGRvCisgICAgIHRlc3QgLWYgIiR0bXBkZXBmaWxlIiAmJiBicmVhaworICAgZG9uZQorICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuCisgICAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAgICAgIyBUaGF0J3MgYSB0YWIgYW5kIGEgc3BhY2UgaW4gdGhlIFtdLgorICAgICAgc2VkIC1lICdzLF4uKlwuW2Etel0qOlsJIF0qLCwnIC1lICdzLCQsOiwnIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisgICBlbHNlCisgICAgICBlY2hvICIjZHVtbXkiID4gIiRkZXBmaWxlIgorICAgZmkKKyAgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgIDs7CisKKyNub3NpZGVlZmZlY3QpCisgICMgVGhpcyBjb21tZW50IGFib3ZlIGlzIHVzZWQgYnkgYXV0b21ha2UgdG8gdGVsbCBzaWRlLWVmZmVjdAorICAjIGRlcGVuZGVuY3kgdHJhY2tpbmcgbWVjaGFuaXNtcyBmcm9tIHNsb3dlciBvbmVzLgorCitkYXNobXN0ZG91dCkKKyAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQsIHJlZ2FyZGxlc3Mgb2YgLW8uCisgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICAgIHNoaWZ0CisgICAgZG9uZQorICAgIHNoaWZ0CisgIGZpCisKKyAgIyBSZW1vdmUgYC1vICRvYmplY3QnLgorICBJRlM9IiAiCisgIGZvciBhcmcKKyAgZG8KKyAgICBjYXNlICRhcmcgaW4KKyAgICAtbykKKyAgICAgIHNoaWZ0CisgICAgICA7OworICAgICRvYmplY3QpCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAqKQorICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgICBzaGlmdCAjICRhcmcKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgdGVzdCAteiAiJGRhc2htZmxhZyIgJiYgZGFzaG1mbGFnPS1NCisgICMgUmVxdWlyZSBhdCBsZWFzdCB0d28gY2hhcmFjdGVycyBiZWZvcmUgc2VhcmNoaW5nIGZvciBgOicKKyAgIyBpbiB0aGUgdGFyZ2V0IG5hbWUuICBUaGlzIGlzIHRvIGNvcGUgd2l0aCBET1Mtc3R5bGUgZmlsZW5hbWVzOgorICAjIGEgZGVwZW5kZW5jeSBzdWNoIGFzIGBjOi9mb28vYmFyJyBjb3VsZCBiZSBzZWVuIGFzIHRhcmdldCBgYycgb3RoZXJ3aXNlLgorICAiJEAiICRkYXNobWZsYWcgfAorICAgIHNlZCAnczpeWyAgXSpbXjogXVteOl1bXjpdKlw6WyAgICBdKjonIiRvYmplY3QiJ1w6IDonID4gIiR0bXBkZXBmaWxlIgorICBybSAtZiAiJGRlcGZpbGUiCisgIGNhdCA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgIHRyICcgJyAnCisnIDwgIiR0bXBkZXBmaWxlIiB8IFwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgdGhlIEhQVVggMTAuMjAgc2VkIGNhbid0IHByb2Nlc3MgdGhpcyBpbnZvY2F0aW9uCisjIyBjb3JyZWN0bHkuICBCcmVha2luZyBpdCBpbnRvIHR3byBzZWQgaW52b2NhdGlvbnMgaXMgYSB3b3JrYXJvdW5kLgorICAgIHNlZCAtZSAncy9eXFwkLy8nIC1lICcvXiQvZCcgLWUgJy86JC9kJyB8IHNlZCAtZSAncy8kLyA6LycgPj4gIiRkZXBmaWxlIgorICBybSAtZiAiJHRtcGRlcGZpbGUiCisgIDs7CisKK2Rhc2hYbXN0ZG91dCkKKyAgIyBUaGlzIGNhc2Ugb25seSBleGlzdHMgdG8gc2F0aXNmeSBkZXBlbmQubTQuICBJdCBpcyBuZXZlciBhY3R1YWxseQorICAjIHJ1biwgYXMgdGhpcyBtb2RlIGlzIHNwZWNpYWxseSByZWNvZ25pemVkIGluIHRoZSBwcmVhbWJsZS4KKyAgZXhpdCAxCisgIDs7CisKK21ha2VkZXBlbmQpCisgICIkQCIgfHwgZXhpdCAkPworICAjIFJlbW92ZSBhbnkgTGlidG9vbCBjYWxsCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICAgIHNoaWZ0CisgICAgZG9uZQorICAgIHNoaWZ0CisgIGZpCisgICMgWCBtYWtlZGVwZW5kCisgIHNoaWZ0CisgIGNsZWFyZWQ9bm8KKyAgZm9yIGFyZyBpbiAiJEAiOyBkbworICAgIGNhc2UgJGNsZWFyZWQgaW4KKyAgICBubykKKyAgICAgIHNldCAiIjsgc2hpZnQKKyAgICAgIGNsZWFyZWQ9eWVzIDs7CisgICAgZXNhYworICAgIGNhc2UgIiRhcmciIGluCisgICAgLUQqfC1JKikKKyAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIjsgc2hpZnQgOzsKKyAgICAjIFN0cmlwIGFueSBvcHRpb24gdGhhdCBtYWtlZGVwZW5kIG1heSBub3QgdW5kZXJzdGFuZC4gIFJlbW92ZQorICAgICMgdGhlIG9iamVjdCB0b28sIG90aGVyd2lzZSBtYWtlZGVwZW5kIHdpbGwgcGFyc2UgaXQgYXMgYSBzb3VyY2UgZmlsZS4KKyAgICAtKnwkb2JqZWN0KQorICAgICAgOzsKKyAgICAqKQorICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciOyBzaGlmdCA7OworICAgIGVzYWMKKyAgZG9uZQorICBvYmpfc3VmZml4PSJgZWNobyAkb2JqZWN0IHwgc2VkICdzL14uKlwuLy4vJ2AiCisgIHRvdWNoICIkdG1wZGVwZmlsZSIKKyAgJHtNQUtFREVQRU5ELW1ha2VkZXBlbmR9IC1vIiRvYmpfc3VmZml4IiAtZiIkdG1wZGVwZmlsZSIgIiRAIgorICBybSAtZiAiJGRlcGZpbGUiCisgIGNhdCA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgIHNlZCAnMSwyZCcgIiR0bXBkZXBmaWxlIiB8IHRyICcgJyAnCisnIHwgXAorIyMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyMjIGNvcnJlY3RseS4gIEJyZWFraW5nIGl0IGludG8gdHdvIHNlZCBpbnZvY2F0aW9ucyBpcyBhIHdvcmthcm91bmQuCisgICAgc2VkIC1lICdzL15cXCQvLycgLWUgJy9eJC9kJyAtZSAnLzokL2QnIHwgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIgIiR0bXBkZXBmaWxlIi5iYWsKKyAgOzsKKworY3BwKQorICAjIEltcG9ydGFudCBub3RlOiBpbiBvcmRlciB0byBzdXBwb3J0IHRoaXMgbW9kZSwgYSBjb21waWxlciAqbXVzdCoKKyAgIyBhbHdheXMgd3JpdGUgdGhlIHByZXByb2Nlc3NlZCBmaWxlIHRvIHN0ZG91dC4KKyAgIiRAIiB8fCBleGl0ICQ/CisKKyAgIyBSZW1vdmUgdGhlIGNhbGwgdG8gTGlidG9vbC4KKyAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgICAgc2hpZnQKKyAgICBkb25lCisgICAgc2hpZnQKKyAgZmkKKworICAjIFJlbW92ZSBgLW8gJG9iamVjdCcuCisgIElGUz0iICIKKyAgZm9yIGFyZworICBkbworICAgIGNhc2UgJGFyZyBpbgorICAgIC1vKQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgJG9iamVjdCkKKyAgICAgIHNoaWZ0CisgICAgICA7OworICAgICopCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyIKKyAgICAgIHNoaWZ0ICMgZm5vcmQKKyAgICAgIHNoaWZ0ICMgJGFyZworICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAiJEAiIC1FIHwKKyAgICBzZWQgLW4gLWUgJy9eIyBbMC05XVswLTldKiAiXChbXiJdKlwpIi4qLyBzOjogXDEgXFw6cCcgXAorICAgICAgIC1lICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLiovIHM6OiBcMSBcXDpwJyB8CisgICAgc2VkICckIHM6IFxcJDo6JyA+ICIkdG1wZGVwZmlsZSIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBlY2hvICIkb2JqZWN0IDogXFwiID4gIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgc2VkIDwgIiR0bXBkZXBmaWxlIiAnL14kL2Q7cy9eIC8vO3MvIFxcJC8vO3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCittc3Zpc3VhbGNwcCkKKyAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQsIHJlZ2FyZGxlc3Mgb2YgLW8sCisgICMgYmVjYXVzZSB3ZSBtdXN0IHVzZSAtbyB3aGVuIHJ1bm5pbmcgbGlidG9vbC4KKyAgIiRAIiB8fCBleGl0ICQ/CisgIElGUz0iICIKKyAgZm9yIGFyZworICBkbworICAgIGNhc2UgIiRhcmciIGluCisgICAgIi1HbSJ8Ii9HbSJ8Ii1HaSJ8Ii9HaSJ8Ii1aSSJ8Ii9aSSIpCisJc2V0IGZub3JkICIkQCIKKwlzaGlmdAorCXNoaWZ0CisJOzsKKyAgICAqKQorCXNldCBmbm9yZCAiJEAiICIkYXJnIgorCXNoaWZ0CisJc2hpZnQKKwk7OworICAgIGVzYWMKKyAgZG9uZQorICAiJEAiIC1FIHwKKyAgc2VkIC1uICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLyBzOjplY2hvICJgY3lncGF0aCAtdSBcXCJcMVxcImAiOnAnIHwgc29ydCB8IHVuaXEgPiAiJHRtcGRlcGZpbGUiCisgIHJtIC1mICIkZGVwZmlsZSIKKyAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKKyAgLiAiJHRtcGRlcGZpbGUiIHwgc2VkICdzJSAlXFwgJWcnIHwgc2VkIC1uICcvXlwoLipcKSQvIHM6OglcMSBcXDpwJyA+PiAiJGRlcGZpbGUiCisgIGVjaG8gIgkiID4+ICIkZGVwZmlsZSIKKyAgLiAiJHRtcGRlcGZpbGUiIHwgc2VkICdzJSAlXFwgJWcnIHwgc2VkIC1uICcvXlwoLipcKSQvIHM6OlwxXDo6cCcgPj4gIiRkZXBmaWxlIgorICBybSAtZiAiJHRtcGRlcGZpbGUiCisgIDs7CisKK25vbmUpCisgIGV4ZWMgIiRAIgorICA7OworCisqKQorICBlY2hvICJVbmtub3duIGRlcG1vZGUgJGRlcG1vZGUiIDE+JjIKKyAgZXhpdCAxCisgIDs7Citlc2FjCisKK2V4aXQgMAorCisjIExvY2FsIFZhcmlhYmxlczoKKyMgbW9kZTogc2hlbGwtc2NyaXB0CisjIHNoLWluZGVudGF0aW9uOiAyCisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyBFbmQ6CmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L2RldnRyZWUuYyBiL3VzYnV0aWxzLTAuODYvZGV2dHJlZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzY2I5MDAKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L2RldnRyZWUuYwpAQCAtMCwwICsxLDMzNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogICAgICBkZXZ0cmVlLmMgIC0tICBVU0IgZGV2aWNlIHRyZWUuCisgKgorICogICAgICBDb3B5cmlnaHQgKEMpIDE5OTkgVGhvbWFzIFNhaWxlciwgc2FpbGVyQGlmZS5lZS5ldGh6LmNoCisgKgorICogICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICoKKyAqICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBHUEwgYWxsb3dzIHlvdSB0byB1c2UgdGhlIGRyaXZlciwgTk9UIHRoZSByYWRpby4KKyAqICBJbiBvcmRlciB0byB1c2UgdGhlIHJhZGlvLCB5b3UgbmVlZCBhIGxpY2Vuc2UgZnJvbSB0aGUgY29tbXVuaWNhdGlvbnMKKyAqICBhdXRob3JpdHkgb2YgeW91ciBjb3VudHJ5LgorICoKKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgImRldnRyZWUuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitMSVNUX0hFQUQodXNiYnVzbGlzdCk7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIHZvaWQgZnJlZWRldihzdHJ1Y3QgdXNiZGV2bm9kZSAqZGV2KQoreworCWZyZWUoZGV2KTsKK30KKworc3RhdGljIHZvaWQgZnJlZWJ1cyhzdHJ1Y3QgdXNiYnVzbm9kZSAqYnVzKQoreworCWZyZWUoYnVzKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgdm9pZCBtYXJrZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCit7CisJc3RydWN0IHVzYmRldm5vZGUgKmRldjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0MjsKKworCWZvciAobGlzdDIgPSBsaXN0LT5uZXh0OyBsaXN0MiAhPSBsaXN0OyBsaXN0MiA9IGxpc3QyLT5uZXh0KSB7CisJCWRldiA9IGxpc3RfZW50cnkobGlzdDIsIHN0cnVjdCB1c2JkZXZub2RlLCBsaXN0KTsKKwkJZGV2LT5mbGFncyB8PSBVU0JGTEdfREVMRVRFRDsKKwkJbWFya2RlbCgmZGV2LT5jaGlsZGxpc3QpOworCX0KK30KKwordm9pZCBkZXZ0cmVlX21hcmtkZWxldGVkKHZvaWQpCit7CisJc3RydWN0IHVzYmJ1c25vZGUgKmJ1czsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0OworCQorCWZvcihsaXN0ID0gdXNiYnVzbGlzdC5uZXh0OyBsaXN0ICE9ICZ1c2JidXNsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkgeworCQlidXMgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB1c2JidXNub2RlLCBsaXN0KTsKKwkJbWFya2RlbCgmYnVzLT5jaGlsZGxpc3QpOworCX0KK30KKworc3RydWN0IHVzYmJ1c25vZGUgKmRldnRyZWVfZmluZGJ1cyh1bnNpZ25lZCBpbnQgYnVzbikKK3sKKwlzdHJ1Y3QgdXNiYnVzbm9kZSAqYnVzOworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7CisJCisJZm9yKGxpc3QgPSB1c2JidXNsaXN0Lm5leHQ7IGxpc3QgIT0gJnVzYmJ1c2xpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisJCWJ1cyA9IGxpc3RfZW50cnkobGlzdCwgc3RydWN0IHVzYmJ1c25vZGUsIGxpc3QpOworCQlpZiAoYnVzLT5idXNudW0gPT0gYnVzbikKKwkJCXJldHVybiBidXM7CisJfQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgc3RydWN0IHVzYmRldm5vZGUgKmZpbmRzdWJkZXZpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgdW5zaWduZWQgaW50IGRldm4pCit7CisJc3RydWN0IHVzYmRldm5vZGUgKmRldiwgKmRldjI7CisJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDI7CisKKwlmb3IgKGxpc3QyID0gbGlzdC0+bmV4dDsgbGlzdDIgIT0gbGlzdDsgbGlzdDIgPSBsaXN0Mi0+bmV4dCkgeworCQlkZXYgPSBsaXN0X2VudHJ5KGxpc3QyLCBzdHJ1Y3QgdXNiZGV2bm9kZSwgbGlzdCk7CisJCWlmIChkZXYtPmRldm51bSA9PSBkZXZuKQorCQkJcmV0dXJuIGRldjsKKwkJZGV2MiA9IGZpbmRzdWJkZXZpY2UoJmRldi0+Y2hpbGRsaXN0LCBkZXZuKTsKKwkJaWYgKGRldjIpCisJCQlyZXR1cm4gZGV2MjsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0cnVjdCB1c2JkZXZub2RlICpkZXZ0cmVlX2ZpbmRkZXZpY2Uoc3RydWN0IHVzYmJ1c25vZGUgKmJ1cywgdW5zaWduZWQgaW50IGRldm4pCit7CisJcmV0dXJuIGZpbmRzdWJkZXZpY2UoJmJ1cy0+Y2hpbGRsaXN0LCBkZXZuKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIGRldnRyZWVfcGFyc2VkZXZmaWxlKGludCBmZCkKK3sKKwljaGFyIGJ1ZlsxNjM4NF07CisJY2hhciAqc3RhcnQsICplbmQsICpsaW5lZW5kLCAqY3A7CisJaW50IHJldDsKKwl1bnNpZ25lZCBpbnQgZGV2bnVtID0gMCwgYnVzbnVtID0gMCwgcGFyZW50ZGV2bnVtID0gMCwgbGV2ZWwgPSAwOworCXVuc2lnbmVkIGludCBjbGFzcyA9IDB4ZmYsIHZlbmRvciA9IDB4ZmZmZiwgcHJvZGlkID0gMHhmZmZmLCBzcGVlZCA9IDA7CisJc3RydWN0IHVzYmJ1c25vZGUgKmJ1czsKKwlzdHJ1Y3QgdXNiZGV2bm9kZSAqZGV2LCAqZGV2MjsKKworCWRldnRyZWVfbWFya2RlbGV0ZWQoKTsKKwlpZiAobHNlZWsoZmQsIDAsIFNFRUtfU0VUKSA9PSAob2ZmX3QpLTEpCisJCWxwcmludGYoMCwgImxzZWVrOiAlcyAoJWQpXG4iLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwlyZXQgPSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpLTEpOworCWlmIChyZXQgPT0gLTEpCisJCWxwcmludGYoMCwgInJlYWQ6ICVzICglZClcbiIsIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworCWVuZCA9IGJ1ZiArIHJldDsKKwkqZW5kID0gMDsKKwlzdGFydCA9IGJ1ZjsKKwl3aGlsZSAoc3RhcnQgPCBlbmQpIHsKKwkJbGluZWVuZCA9IHN0cmNocihzdGFydCwgJ1xuJyk7CisJCWlmICghbGluZWVuZCkKKwkJCWJyZWFrOworCQkqbGluZWVuZCA9IDA7CisJCXN3aXRjaCAoc3RhcnRbMF0pIHsKKwkJY2FzZSAnVCc6ICAvKiB0b3BvbG9neSBsaW5lICovCisJCQlpZiAoKGNwID0gc3Ryc3RyKHN0YXJ0LCAiRGV2Iz0iKSkpIHsKKwkJCQlkZXZudW0gPSBzdHJ0b3VsKGNwICsgNSwgTlVMTCwgMCk7CisJCQl9IGVsc2UKKwkJCQlkZXZudW0gPSAwOworCQkJaWYgKChjcCA9IHN0cnN0cihzdGFydCwgIkJ1cz0iKSkpIHsKKwkJCQlidXNudW0gPSBzdHJ0b3VsKGNwICsgNCwgTlVMTCwgMTApOworCQkJfSBlbHNlCisJCQkJYnVzbnVtID0gMDsKKwkJCWlmICgoY3AgPSBzdHJzdHIoc3RhcnQsICJQcm50PSIpKSkgeworCQkJCXBhcmVudGRldm51bSA9IHN0cnRvdWwoY3AgKyA1LCBOVUxMLCAxMCk7CisJCQl9IGVsc2UKKwkJCQlwYXJlbnRkZXZudW0gPSAwOworCQkJaWYgKChjcCA9IHN0cnN0cihzdGFydCwgIkxldj0iKSkpIHsKKwkJCQlsZXZlbCA9IHN0cnRvdWwoY3AgKyA0LCBOVUxMLCAxMCk7CisJCQl9IGVsc2UKKwkJCQlsZXZlbCA9IDA7CisJCQlpZiAoc3Ryc3RyKHN0YXJ0LCAiU3BkPTEuNSIpKQorCQkJCXNwZWVkID0gMTsKKwkJCWVsc2UgaWYgKHN0cnN0cihzdGFydCwgIlNwZD0xMiIpKQorCQkJCXNwZWVkID0gMjsKKwkJCWVsc2UgCisJCQkJc3BlZWQgPSAwOworCQkJYnJlYWs7CisKKwkJY2FzZSAnRCc6CisJCQlpZiAoKGNwID0gc3Ryc3RyKHN0YXJ0LCAiQ2xzPSIpKSkgeworCQkJCWNsYXNzID0gc3RydG91bChjcCArIDQsIE5VTEwsIDE2KTsKKwkJCX0gZWxzZQorCQkJCWNsYXNzID0gMHhmZjsKKwkJCWJyZWFrOworCisJCWNhc2UgJ1AnOgorCQkJaWYgKChjcCA9IHN0cnN0cihzdGFydCwgIlZlbmRvcj0iKSkpIHsKKwkJCQl2ZW5kb3IgPSBzdHJ0b3VsKGNwICsgNywgTlVMTCwgMTYpOworCQkJfSBlbHNlCisJCQkJdmVuZG9yID0gMHhmZmZmOworCQkJaWYgKChjcCA9IHN0cnN0cihzdGFydCwgIlByb2RJRD0iKSkpIHsKKwkJCQlwcm9kaWQgPSBzdHJ0b3VsKGNwICsgNywgTlVMTCwgMTYpOworCQkJfSBlbHNlCisJCQkJcHJvZGlkID0gMHhmZmZmOworCQkJLyogcHJpbnQgZGV2aWNlICovCisjaWYgMAorCQkJcHJpbnRmKCJEZXZpY2UgJTNkIFZlbmRvciAlMDR4IFByb2R1Y3QgSUQgJTA0eCBDbGFzcyAlMDJ4IFNwZWVkICVzXG4iLAorCQkJICAgICAgIGRldm51bSwgdmVuZG9yLCBwcm9kaWQsIGNsYXNzLCBzcGVlZCA9PSAyID8gIjEyIE1CUFMiIDogc3BlZWQgPT0gMSA/ICIxLjUgTUJQUyIgOiAidW5rbm93biIpOworI2VuZGlmCisJCQlpZiAoIShidXMgPSBkZXZ0cmVlX2ZpbmRidXMoYnVzbnVtKSkpIHsKKwkJCQlpZiAoIShidXMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB1c2JidXNub2RlKSkpKQorCQkJCQlscHJpbnRmKDAsICJPdXQgb2YgbWVtb3J5XG4iKTsKKwkJCQlidXMtPmJ1c251bSA9IGJ1c251bTsKKwkJCQlidXMtPmZsYWdzID0gVVNCRkxHX05FVzsKKwkJCQlJTklUX0xJU1RfSEVBRCgmYnVzLT5jaGlsZGxpc3QpOworCQkJCWxpc3RfYWRkX3RhaWwoJmJ1cy0+bGlzdCwgJnVzYmJ1c2xpc3QpOworCQkJfSBlbHNlIHsKKwkJCQlidXMtPmZsYWdzICY9IH5VU0JGTEdfREVMRVRFRDsKKwkJCX0KKwkJCWlmICghKGRldiA9IGRldnRyZWVfZmluZGRldmljZShidXMsIGRldm51bSkpIHx8IGRldi0+dmVuZG9yaWQgIT0gdmVuZG9yIHx8IGRldi0+cHJvZHVjdGlkICE9IHByb2RpZCkgeworCQkJCWlmICghKGRldiA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHVzYmRldm5vZGUpKSkpCisJCQkJCWxwcmludGYoMCwgIk91dCBvZiBtZW1vcnlcbiIpOworCQkJCWRldi0+ZGV2bnVtID0gZGV2bnVtOworCQkJCWRldi0+ZmxhZ3MgPSBVU0JGTEdfTkVXOworCQkJCWRldi0+YnVzID0gYnVzOworCQkJCWRldi0+dmVuZG9yaWQgPSB2ZW5kb3I7CisJCQkJZGV2LT5wcm9kdWN0aWQgPSBwcm9kaWQ7CisJCQkJSU5JVF9MSVNUX0hFQUQoJmRldi0+Y2hpbGRsaXN0KTsKKwkJCQlpZiAobGV2ZWwgPT0gMCAmJiBwYXJlbnRkZXZudW0gPT0gMCkgeworCQkJCQlsaXN0X2FkZF90YWlsKCZkZXYtPmxpc3QsICZidXMtPmNoaWxkbGlzdCk7CisJCQkJCWRldi0+cGFyZW50ID0gTlVMTDsKKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoIShkZXYyID0gZGV2dHJlZV9maW5kZGV2aWNlKGJ1cywgcGFyZW50ZGV2bnVtKSkpCisJCQkJCQlscHJpbnRmKDAsICJCdXMgJWQgRGV2aWNlICVkIFBhcmVudCBEZXZpY2UgJWQgbm90IGZvdW5kXG4iLCBidXNudW0sIGRldm51bSwgcGFyZW50ZGV2bnVtKTsKKwkJCQkJZGV2LT5wYXJlbnQgPSBkZXYyOworCQkJCQlsaXN0X2FkZF90YWlsKCZkZXYtPmxpc3QsICZkZXYyLT5jaGlsZGxpc3QpOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJZGV2LT5mbGFncyAmPSB+VVNCRkxHX0RFTEVURUQ7CisJCQl9CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKyNpZiAwCisJCXByaW50ZigibGluZTogJXNcbiIsIHN0YXJ0KTsKKyNlbmRpZgorCQlzdGFydCA9IGxpbmVlbmQgKyAxOworCX0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgdm9pZCBkZWxldGV0cmVlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHVuc2lnbmVkIGludCBmb3JjZSkKK3sKKwlzdHJ1Y3QgdXNiZGV2bm9kZSAqZGV2OworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QyOworCisJZm9yIChsaXN0MiA9IGxpc3QtPm5leHQ7IGxpc3QyICE9IGxpc3Q7KSB7CisJCWRldiA9IGxpc3RfZW50cnkobGlzdDIsIHN0cnVjdCB1c2JkZXZub2RlLCBsaXN0KTsKKwkJbGlzdDIgPSBsaXN0Mi0+bmV4dDsKKwkJZGVsZXRldHJlZSgmZGV2LT5jaGlsZGxpc3QsIGZvcmNlIHx8IGRldi0+ZmxhZ3MgJiBVU0JGTEdfREVMRVRFRCk7CisJCWlmICghZm9yY2UgJiYgIShkZXYtPmZsYWdzICYgVVNCRkxHX0RFTEVURUQpKQorCQkJY29udGludWU7CisJCWxpc3RfZGVsKCZkZXYtPmxpc3QpOworCQlJTklUX0xJU1RfSEVBRCgmZGV2LT5saXN0KTsKKwkJZGV2dHJlZV9kZXZkaXNjb25uZWN0KGRldik7CisJCWZyZWVkZXYoZGV2KTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG5ld3RyZWUoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKK3sKKwlzdHJ1Y3QgdXNiZGV2bm9kZSAqZGV2OworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QyOworCisJZm9yIChsaXN0MiA9IGxpc3QtPm5leHQ7IGxpc3QyICE9IGxpc3Q7IGxpc3QyID0gbGlzdDItPm5leHQpIHsKKwkJZGV2ID0gbGlzdF9lbnRyeShsaXN0Miwgc3RydWN0IHVzYmRldm5vZGUsIGxpc3QpOworCQlpZiAoZGV2LT5mbGFncyAmIFVTQkZMR19ORVcpCisJCQlkZXZ0cmVlX2RldmNvbm5lY3QoZGV2KTsKKwkJZGV2LT5mbGFncyAmPSB+VVNCRkxHX05FVzsKKwkJbmV3dHJlZSgmZGV2LT5jaGlsZGxpc3QpOworCX0KK30KKwordm9pZCBkZXZ0cmVlX3Byb2Nlc3NjaGFuZ2VzKHZvaWQpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKKwlzdHJ1Y3QgdXNiYnVzbm9kZSAqYnVzOworCisJZm9yIChsaXN0ID0gdXNiYnVzbGlzdC5uZXh0OyBsaXN0ICE9ICZ1c2JidXNsaXN0OykgeworCQlidXMgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB1c2JidXNub2RlLCBsaXN0KTsKKwkJbGlzdCA9IGxpc3QtPm5leHQ7CisJCWRlbGV0ZXRyZWUoJmJ1cy0+Y2hpbGRsaXN0LCBidXMtPmZsYWdzICYgVVNCRkxHX0RFTEVURUQpOworCQlpZiAoIShidXMtPmZsYWdzICYgVVNCRkxHX0RFTEVURUQpKQorCQkJY29udGludWU7CisJCWxpc3RfZGVsKCZidXMtPmxpc3QpOworCQlJTklUX0xJU1RfSEVBRCgmYnVzLT5saXN0KTsKKwkJZGV2dHJlZV9idXNkaXNjb25uZWN0KGJ1cyk7CisJCWZyZWVidXMoYnVzKTsKKwl9CisJZm9yIChsaXN0ID0gdXNiYnVzbGlzdC5uZXh0OyBsaXN0ICE9ICZ1c2JidXNsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkgeworCQlidXMgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB1c2JidXNub2RlLCBsaXN0KTsKKwkJaWYgKGJ1cy0+ZmxhZ3MgJiBVU0JGTEdfTkVXKQorCQkJZGV2dHJlZV9idXNjb25uZWN0KGJ1cyk7CisJCWJ1cy0+ZmxhZ3MgJj0gflVTQkZMR19ORVc7CisJCW5ld3RyZWUoJmJ1cy0+Y2hpbGRsaXN0KTsKKwl9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIHZvaWQgZHVtcGRldmxpc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgdW5zaWduZWQgaW50IGxldmVsLCB1bnNpZ25lZCBpbnQgbWFzaykKK3sKKwlzdHJ1Y3QgdXNiZGV2bm9kZSAqZGV2OworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QyOworCWNoYXIgYnVmWzUxMl07CisJY2hhciAqY3A7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGxpc3QyID0gbGlzdC0+bmV4dDsgbGlzdDIgIT0gbGlzdDsgKSB7CisJCWRldiA9IGxpc3RfZW50cnkobGlzdDIsIHN0cnVjdCB1c2JkZXZub2RlLCBsaXN0KTsKKwkJbGlzdDIgPSBsaXN0Mi0+bmV4dDsKKwkJZm9yIChjcCA9IGJ1ZiwgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7CisJCQkqY3ArKyA9IChtYXNrICYgKDEgPDwgaSkpID8gJ3wnIDogJyAnOworCQkJKmNwKysgPSAnICc7CisJCX0KKwkJaWYgKGxpc3QyICE9IGxpc3QpIHsKKwkJCW1hc2sgfD0gKDEgPDwgbGV2ZWwpOworCQkJKmNwKysgPSAnfCc7CisJCX0gZWxzZSB7CisJCQltYXNrICY9IH4oMSA8PCBsZXZlbCk7CisJCQkqY3ArKyA9ICdgJzsKKwkJfQorCQkqY3ArKyA9ICctJzsKKwkJc25wcmludGYoY3AsIGJ1ZiArIHNpemVvZihidWYpIC0gY3AsICJEZXYjICUzZCBWZW5kb3IgMHglMDR4IFByb2R1Y3QgMHglMDR4IiwKKwkJCSBkZXYtPmRldm51bSwgZGV2LT52ZW5kb3JpZCwgZGV2LT5wcm9kdWN0aWQpOworCQlscHJpbnRmKDEsICIlc1xuIiwgYnVmKTsKKwkJZHVtcGRldmxpc3QoJmRldi0+Y2hpbGRsaXN0LCBsZXZlbCsxLCBtYXNrKTsKKwl9Cit9CisKK3ZvaWQgZGV2dHJlZV9kdW1wKHZvaWQpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKKwlzdHJ1Y3QgdXNiYnVzbm9kZSAqYnVzOworCisJZm9yIChsaXN0ID0gdXNiYnVzbGlzdC5uZXh0OyBsaXN0ICE9ICZ1c2JidXNsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkgeworCQlidXMgPSBsaXN0X2VudHJ5KGxpc3QsIHN0cnVjdCB1c2JidXNub2RlLCBsaXN0KTsKKwkJbHByaW50ZigxLCAiQnVzIyAlMmRcbiIsIGJ1cy0+YnVzbnVtKTsKKwkJZHVtcGRldmxpc3QoJmJ1cy0+Y2hpbGRsaXN0LCAwLCAwKTsKKwl9Cit9CmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L2RldnRyZWUuaCBiL3VzYnV0aWxzLTAuODYvZGV2dHJlZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNDUzYjMKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L2RldnRyZWUuaApAQCAtMCwwICsxLDg3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiAgICAgIGRldnRyZWUuaCAgLS0gIFVTQiBkZXZpY2UgdHJlZS4KKyAqCisgKiAgICAgIENvcHlyaWdodCAoQykgMTk5OSBUaG9tYXMgU2FpbGVyLCBzYWlsZXJAaWZlLmVlLmV0aHouY2gKKyAqCisgKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICAgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICAgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogICAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICAgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKgorICogIFBsZWFzZSBub3RlIHRoYXQgdGhlIEdQTCBhbGxvd3MgeW91IHRvIHVzZSB0aGUgZHJpdmVyLCBOT1QgdGhlIHJhZGlvLgorICogIEluIG9yZGVyIHRvIHVzZSB0aGUgcmFkaW8sIHlvdSBuZWVkIGEgbGljZW5zZSBmcm9tIHRoZSBjb21tdW5pY2F0aW9ucworICogIGF1dGhvcml0eSBvZiB5b3VyIGNvdW50cnkuCisgKgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfREVWVFJFRV9ICisjZGVmaW5lIF9ERVZUUkVFX0gKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJsaXN0LmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBVU0JGTEdfREVMRVRFRCAgICAxCisjZGVmaW5lIFVTQkZMR19ORVcgICAgICAgIDIKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdHJ1Y3QgdXNiYnVzbm9kZSB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBsaXN0X2hlYWQgY2hpbGRsaXN0OworCXVuc2lnbmVkIGludCBmbGFnczsKKworCXVuc2lnbmVkIGludCBidXNudW07Cit9OworCitzdHJ1Y3QgdXNiZGV2bm9kZSB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBsaXN0X2hlYWQgY2hpbGRsaXN0OworCXVuc2lnbmVkIGludCBmbGFnczsKKworCXN0cnVjdCB1c2JidXNub2RlICpidXM7CisJc3RydWN0IHVzYmRldm5vZGUgKnBhcmVudDsKKworCXVuc2lnbmVkIGludCBkZXZudW07CisJdW5zaWduZWQgaW50IHZlbmRvcmlkOworCXVuc2lnbmVkIGludCBwcm9kdWN0aWQ7Cit9OworCitleHRlcm4gc3RydWN0IGxpc3RfaGVhZCB1c2JidXNsaXN0OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2V4dGVybiB2b2lkIGRldnRyZWVfbWFya2RlbGV0ZWQodm9pZCk7CitleHRlcm4gc3RydWN0IHVzYmJ1c25vZGUgKmRldnRyZWVfZmluZGJ1cyh1bnNpZ25lZCBpbnQgYnVzbik7CitleHRlcm4gc3RydWN0IHVzYmRldm5vZGUgKmRldnRyZWVfZmluZGRldmljZShzdHJ1Y3QgdXNiYnVzbm9kZSAqYnVzLCB1bnNpZ25lZCBpbnQgZGV2bik7CitleHRlcm4gdm9pZCBkZXZ0cmVlX3BhcnNlZGV2ZmlsZShpbnQgZmQpOworZXh0ZXJuIHZvaWQgZGV2dHJlZV9idXNjb25uZWN0KHN0cnVjdCB1c2JidXNub2RlICpidXMpOworZXh0ZXJuIHZvaWQgZGV2dHJlZV9idXNkaXNjb25uZWN0KHN0cnVjdCB1c2JidXNub2RlICpidXMpOworZXh0ZXJuIHZvaWQgZGV2dHJlZV9kZXZjb25uZWN0KHN0cnVjdCB1c2JkZXZub2RlICpkZXYpOworZXh0ZXJuIHZvaWQgZGV2dHJlZV9kZXZkaXNjb25uZWN0KHN0cnVjdCB1c2JkZXZub2RlICpkZXYpOworZXh0ZXJuIHZvaWQgZGV2dHJlZV9wcm9jZXNzY2hhbmdlcyh2b2lkKTsKK2V4dGVybiB2b2lkIGRldnRyZWVfZHVtcCh2b2lkKTsKKworZXh0ZXJuIGludCBscHJpbnRmKHVuc2lnbmVkIGludCB2bCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworI2VuZGlmIC8qIF9ERVZUUkVFX0ggKi8KZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvaW5zdGFsbC1zaCBiL3VzYnV0aWxzLTAuODYvaW5zdGFsbC1zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNTg5N2RlCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9pbnN0YWxsLXNoCkBAIC0wLDAgKzEsNTE5IEBACisjIS9iaW4vc2gKKyMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCisKK3NjcmlwdHZlcnNpb249MjAwNi0xMi0yNS4wMAorCisjIFRoaXMgb3JpZ2luYXRlcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLCB3aGljaCB3YXMKKyMgbGF0ZXIgcmVsZWFzZWQgaW4gWDExUjYgKHhjL2NvbmZpZy91dGlsL2luc3RhbGwuc2gpIHdpdGggdGhlCisjIGZvbGxvd2luZyBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UuCisjCisjIENvcHlyaWdodCAoQykgMTk5NCBYIENvbnNvcnRpdW0KKyMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyMgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyMgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisjIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBYIENPTlNPUlRJVU0gQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQy0KKyMgVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyMKKyMgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgdGhlIFggQ29uc29ydGl1bSBzaGFsbCBub3QKKyMgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWwtCisjIGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBmcm9tIHRoZSBYIENvbnNvci0KKyMgdGl1bS4KKyMKKyMKKyMgRlNGIGNoYW5nZXMgdG8gdGhpcyBmaWxlIGFyZSBpbiB0aGUgcHVibGljIGRvbWFpbi4KKyMKKyMgQ2FsbGluZyB0aGlzIHNjcmlwdCBpbnN0YWxsLXNoIGlzIHByZWZlcnJlZCBvdmVyIGluc3RhbGwuc2gsIHRvIHByZXZlbnQKKyMgYG1ha2UnIGltcGxpY2l0IHJ1bGVzIGZyb20gY3JlYXRpbmcgYSBmaWxlIGNhbGxlZCBpbnN0YWxsIGZyb20gaXQKKyMgd2hlbiB0aGVyZSBpcyBubyBNYWtlZmlsZS4KKyMKKyMgVGhpcyBzY3JpcHQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBCU0QgaW5zdGFsbCBzY3JpcHQsIGJ1dCB3YXMgd3JpdHRlbgorIyBmcm9tIHNjcmF0Y2guCisKK25sPScKKycKK0lGUz0iICIiCSRubCIKKworIyBzZXQgRE9JVFBST0cgdG8gZWNobyB0byB0ZXN0IHRoaXMgc2NyaXB0CisKKyMgRG9uJ3QgdXNlIDotIHNpbmNlIDQuM0JTRCBhbmQgZWFybGllciBzaGVsbHMgZG9uJ3QgbGlrZSBpdC4KK2RvaXQ9JHtET0lUUFJPRy19CitpZiB0ZXN0IC16ICIkZG9pdCI7IHRoZW4KKyAgZG9pdF9leGVjPWV4ZWMKK2Vsc2UKKyAgZG9pdF9leGVjPSRkb2l0CitmaQorCisjIFB1dCBpbiBhYnNvbHV0ZSBmaWxlIG5hbWVzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOworIyBvciB1c2UgZW52aXJvbm1lbnQgdmFycy4KKworY2hncnBwcm9nPSR7Q0hHUlBQUk9HLWNoZ3JwfQorY2htb2Rwcm9nPSR7Q0hNT0RQUk9HLWNobW9kfQorY2hvd25wcm9nPSR7Q0hPV05QUk9HLWNob3dufQorY21wcHJvZz0ke0NNUFBST0ctY21wfQorY3Bwcm9nPSR7Q1BQUk9HLWNwfQorbWtkaXJwcm9nPSR7TUtESVJQUk9HLW1rZGlyfQorbXZwcm9nPSR7TVZQUk9HLW12fQorcm1wcm9nPSR7Uk1QUk9HLXJtfQorc3RyaXBwcm9nPSR7U1RSSVBQUk9HLXN0cmlwfQorCitwb3NpeF9nbG9iPSc/JworaW5pdGlhbGl6ZV9wb3NpeF9nbG9iPScKKyAgdGVzdCAiJHBvc2l4X2dsb2IiICE9ICI/IiB8fCB7CisgICAgaWYgKHNldCAtZikgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIHBvc2l4X2dsb2I9CisgICAgZWxzZQorICAgICAgcG9zaXhfZ2xvYj06CisgICAgZmkKKyAgfQorJworCitwb3NpeF9ta2Rpcj0KKworIyBEZXNpcmVkIG1vZGUgb2YgaW5zdGFsbGVkIGZpbGUuCittb2RlPTA3NTUKKworY2hncnBjbWQ9CitjaG1vZGNtZD0kY2htb2Rwcm9nCitjaG93bmNtZD0KK212Y21kPSRtdnByb2cKK3JtY21kPSIkcm1wcm9nIC1mIgorc3RyaXBjbWQ9CisKK3NyYz0KK2RzdD0KK2Rpcl9hcmc9Citkc3RfYXJnPQorCitjb3B5X29uX2NoYW5nZT1mYWxzZQorbm9fdGFyZ2V0X2RpcmVjdG9yeT0KKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbLVRdIFNSQ0ZJTEUgRFNURklMRQorICAgb3I6ICQwIFtPUFRJT05dLi4uIFNSQ0ZJTEVTLi4uIERJUkVDVE9SWQorICAgb3I6ICQwIFtPUFRJT05dLi4uIC10IERJUkVDVE9SWSBTUkNGSUxFUy4uLgorICAgb3I6ICQwIFtPUFRJT05dLi4uIC1kIERJUkVDVE9SSUVTLi4uCisKK0luIHRoZSAxc3QgZm9ybSwgY29weSBTUkNGSUxFIHRvIERTVEZJTEUuCitJbiB0aGUgMm5kIGFuZCAzcmQsIGNvcHkgYWxsIFNSQ0ZJTEVTIHRvIERJUkVDVE9SWS4KK0luIHRoZSA0dGgsIGNyZWF0ZSBESVJFQ1RPUklFUy4KKworT3B0aW9uczoKKyAgICAgLS1oZWxwICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdC4KKyAgICAgLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKworICAtYyAgICAgICAgICAgIChpZ25vcmVkKQorICAtQyAgICAgICAgICAgIGluc3RhbGwgb25seSBpZiBkaWZmZXJlbnQgKHByZXNlcnZlIHRoZSBsYXN0IGRhdGEgbW9kaWZpY2F0aW9uIHRpbWUpCisgIC1kICAgICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KKyAgLWcgR1JPVVAgICAgICAkY2hncnBwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBHUk9VUC4KKyAgLW0gTU9ERSAgICAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgorICAtbyBVU0VSICAgICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCisgIC1zICAgICAgICAgICAgJHN0cmlwcHJvZyBpbnN0YWxsZWQgZmlsZXMuCisgIC10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KKyAgLVQgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KKworRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgorICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDTVBQUk9HIENQUFJPRyBNS0RJUlBST0cgTVZQUk9HCisgIFJNUFJPRyBTVFJJUFBST0cKKyIKKword2hpbGUgdGVzdCAkIyAtbmUgMDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC1jKSA7OworCisgICAgLUMpIGNvcHlfb25fY2hhbmdlPXRydWU7OworCisgICAgLWQpIGRpcl9hcmc9dHJ1ZTs7CisKKyAgICAtZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCisJc2hpZnQ7OworCisgICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0ICQ/OzsKKworICAgIC1tKSBtb2RlPSQyCisJY2FzZSAkbW9kZSBpbgorCSAgKicgJyogfCAqJwknKiB8IConCisnKgkgIHwgKicqJyogfCAqJz8nKiB8IConWycqKQorCSAgICBlY2hvICIkMDogaW52YWxpZCBtb2RlOiAkbW9kZSIgPiYyCisJICAgIGV4aXQgMTs7CisJZXNhYworCXNoaWZ0OzsKKworICAgIC1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKKwlzaGlmdDs7CisKKyAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZzs7CisKKyAgICAtdCkgZHN0X2FyZz0kMgorCXNoaWZ0OzsKKworICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWU7OworCisgICAgLS12ZXJzaW9uKSBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgJD87OworCisgICAgLS0pCXNoaWZ0CisJYnJlYWs7OworCisgICAgLSopCWVjaG8gIiQwOiBpbnZhbGlkIG9wdGlvbjogJDEiID4mMgorCWV4aXQgMTs7CisKKyAgICAqKSAgYnJlYWs7OworICBlc2FjCisgIHNoaWZ0Citkb25lCisKK2lmIHRlc3QgJCMgLW5lIDAgJiYgdGVzdCAteiAiJGRpcl9hcmckZHN0X2FyZyI7IHRoZW4KKyAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCisgICMgV2hlbiAtdCBpcyB1c2VkLCB0aGUgZGVzdGluYXRpb24gaXMgYWxyZWFkeSBzcGVjaWZpZWQuCisgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KKyAgZm9yIGFyZworICBkbworICAgIGlmIHRlc3QgLW4gIiRkc3RfYXJnIjsgdGhlbgorICAgICAgIyAkQCBpcyBub3QgZW1wdHk6IGl0IGNvbnRhaW5zIGF0IGxlYXN0ICRhcmcuCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdF9hcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgZmkKKyAgICBzaGlmdCAjIGFyZworICAgIGRzdF9hcmc9JGFyZworICBkb25lCitmaQorCitpZiB0ZXN0ICQjIC1lcSAwOyB0aGVuCisgIGlmIHRlc3QgLXogIiRkaXJfYXJnIjsgdGhlbgorICAgIGVjaG8gIiQwOiBubyBpbnB1dCBmaWxlIHNwZWNpZmllZC4iID4mMgorICAgIGV4aXQgMQorICBmaQorICAjIEl0J3MgT0sgdG8gY2FsbCBgaW5zdGFsbC1zaCAtZCcgd2l0aG91dCBhcmd1bWVudC4KKyAgIyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBjcmVhdGluZyBjb25kaXRpb25hbCBkaXJlY3Rvcmllcy4KKyAgZXhpdCAwCitmaQorCitpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKKworICAjIFNldCB1bWFzayBzbyBhcyBub3QgdG8gY3JlYXRlIHRlbXBzIHdpdGggdG9vLWdlbmVyb3VzIG1vZGVzLgorICAjIEhvd2V2ZXIsICdzdHJpcCcgcmVxdWlyZXMgYm90aCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gdGVtcHMuCisgIGNhc2UgJG1vZGUgaW4KKyAgICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKyAgICAqNjQ0KSBjcF91bWFzaz0xMzM7OworICAgICo3NTUpIGNwX3VtYXNrPTIyOzsKKworICAgICpbMC03XSkKKyAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KKwl1X3BsdXNfcnc9CisgICAgICBlbHNlCisJdV9wbHVzX3J3PSclIDIwMCcKKyAgICAgIGZpCisgICAgICBjcF91bWFzaz1gZXhwciAnKCcgNzc3IC0gJG1vZGUgJSAxMDAwICcpJyAkdV9wbHVzX3J3YDs7CisgICAgKikKKyAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KKwl1X3BsdXNfcnc9CisgICAgICBlbHNlCisJdV9wbHVzX3J3PSx1K3J3CisgICAgICBmaQorICAgICAgY3BfdW1hc2s9JG1vZGUkdV9wbHVzX3J3OzsKKyAgZXNhYworZmkKKworZm9yIHNyYworZG8KKyAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICBjYXNlICRzcmMgaW4KKyAgICAtKikgc3JjPS4vJHNyYzs7CisgIGVzYWMKKworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICBkc3Q9JHNyYworICAgIGRzdGRpcj0kZHN0CisgICAgdGVzdCAtZCAiJGRzdGRpciIKKyAgICBkc3RkaXJfc3RhdHVzPSQ/CisgIGVsc2UKKworICAgICMgV2FpdGluZyBmb3IgdGhpcyB0byBiZSBkZXRlY3RlZCBieSB0aGUgIiRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kCisgICAgIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZAorICAgICMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgorICAgIGlmIHRlc3QgISAtZiAiJHNyYyIgJiYgdGVzdCAhIC1kICIkc3JjIjsgdGhlbgorICAgICAgZWNobyAiJDA6ICRzcmMgZG9lcyBub3QgZXhpc3QuIiA+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC16ICIkZHN0X2FyZyI7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiBubyBkZXN0aW5hdGlvbiBzcGVjaWZpZWQuIiA+JjIKKyAgICAgIGV4aXQgMQorICAgIGZpCisKKyAgICBkc3Q9JGRzdF9hcmcKKyAgICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCisgICAgY2FzZSAkZHN0IGluCisgICAgICAtKikgZHN0PS4vJGRzdDs7CisgICAgZXNhYworCisgICAgIyBJZiBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSwgYXBwZW5kIHRoZSBpbnB1dCBmaWxlbmFtZTsgd29uJ3Qgd29yaworICAgICMgaWYgZG91YmxlIHNsYXNoZXMgYXJlbid0IGlnbm9yZWQuCisgICAgaWYgdGVzdCAtZCAiJGRzdCI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRub190YXJnZXRfZGlyZWN0b3J5IjsgdGhlbgorCWVjaG8gIiQwOiAkZHN0X2FyZzogSXMgYSBkaXJlY3RvcnkiID4mMgorCWV4aXQgMQorICAgICAgZmkKKyAgICAgIGRzdGRpcj0kZHN0CisgICAgICBkc3Q9JGRzdGRpci9gYmFzZW5hbWUgIiRzcmMiYAorICAgICAgZHN0ZGlyX3N0YXR1cz0wCisgICAgZWxzZQorICAgICAgIyBQcmVmZXIgZGlybmFtZSwgYnV0IGZhbGwgYmFjayBvbiBhIHN1YnN0aXR1dGUgaWYgZGlybmFtZSBmYWlscy4KKyAgICAgIGRzdGRpcj1gCisJKGRpcm5hbWUgIiRkc3QiKSAyPi9kZXYvbnVsbCB8fAorCWV4cHIgWCIkZHN0IiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvL1wpJCcgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKwllY2hvIFgiJGRzdCIgfAorCSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wvXClbXi9dLioveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wvXCkkL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cKS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIHMvLiovLi87IHEnCisgICAgICBgCisKKyAgICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgICBkc3RkaXJfc3RhdHVzPSQ/CisgICAgZmkKKyAgZmkKKworICBvYnNvbGV0ZV9ta2Rpcl91c2VkPWZhbHNlCisKKyAgaWYgdGVzdCAkZHN0ZGlyX3N0YXR1cyAhPSAwOyB0aGVuCisgICAgY2FzZSAkcG9zaXhfbWtkaXIgaW4KKyAgICAgICcnKQorCSMgQ3JlYXRlIGludGVybWVkaWF0ZSBkaXJzIHVzaW5nIG1vZGUgNzU1IGFzIG1vZGlmaWVkIGJ5IHRoZSB1bWFzay4KKwkjIFRoaXMgaXMgbGlrZSBGcmVlQlNEICdpbnN0YWxsJyBhcyBvZiAxOTk3LTEwLTI4LgorCXVtYXNrPWB1bWFza2AKKwljYXNlICRzdHJpcGNtZC4kdW1hc2sgaW4KKwkgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorCSAgKlsyMzY3XVsyMzY3XSkgbWtkaXJfdW1hc2s9JHVtYXNrOzsKKwkgIC4qMFswMl1bMDJdIHwgLlswMl1bMDJdIHwgLlswMl0pIG1rZGlyX3VtYXNrPTIyOzsKKworCSAgKlswLTddKQorCSAgICBta2Rpcl91bWFzaz1gZXhwciAkdW1hc2sgKyAyMiBcCisJICAgICAgLSAkdW1hc2sgJSAxMDAgJSA0MCArICR1bWFzayAlIDIwIFwKKwkgICAgICAtICR1bWFzayAlIDEwICUgNCArICR1bWFzayAlIDIKKwkgICAgYDs7CisJICAqKSBta2Rpcl91bWFzaz0kdW1hc2ssZ28tdzs7CisJZXNhYworCisJIyBXaXRoIC1kLCBjcmVhdGUgdGhlIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUgdXNlci1zcGVjaWZpZWQgbW9kZS4KKwkjIE90aGVyd2lzZSwgcmVseSBvbiAkbWtkaXJfdW1hc2suCisJaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisJICBta2Rpcl9tb2RlPS1tJG1vZGUKKwllbHNlCisJICBta2Rpcl9tb2RlPQorCWZpCisKKwlwb3NpeF9ta2Rpcj1mYWxzZQorCWNhc2UgJHVtYXNrIGluCisJICAqWzEyMzU2N11bMC03XVswLTddKQorCSAgICAjIFBPU0lYIG1rZGlyIC1wIHNldHMgdSt3eCBiaXRzIHJlZ2FyZGxlc3Mgb2YgdW1hc2ssIHdoaWNoCisJICAgICMgaXMgaW5jb21wYXRpYmxlIHdpdGggRnJlZUJTRCAnaW5zdGFsbCcgd2hlbiAodW1hc2sgJiAzMDApICE9IDAuCisJICAgIDs7CisJICAqKQorCSAgICB0bXBkaXI9JHtUTVBESVItL3RtcH0vaW5zJFJBTkRPTS0kJAorCSAgICB0cmFwICdyZXQ9JD87IHJtZGlyICIkdG1wZGlyL2QiICIkdG1wZGlyIiAyPi9kZXYvbnVsbDsgZXhpdCAkcmV0JyAwCisKKwkgICAgaWYgKHVtYXNrICRta2Rpcl91bWFzayAmJgorCQlleGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiR0bXBkaXIvZCIpID4vZGV2L251bGwgMj4mMQorCSAgICB0aGVuCisJICAgICAgaWYgdGVzdCAteiAiJGRpcl9hcmciIHx8IHsKKwkJICAgIyBDaGVjayBmb3IgUE9TSVggaW5jb21wYXRpYmlsaXRpZXMgd2l0aCAtbS4KKwkJICAgIyBIUC1VWCAxMS4yMyBhbmQgSVJJWCA2LjUgbWtkaXIgLW0gLXAgc2V0cyBncm91cC0gb3IKKwkJICAgIyBvdGhlci13cml0ZWFibGUgYml0IG9mIHBhcmVudCBkaXJlY3Rvcnkgd2hlbiBpdCBzaG91bGRuJ3QuCisJCSAgICMgRnJlZUJTRCA2LjEgbWtkaXIgLW0gLXAgc2V0cyBtb2RlIG9mIGV4aXN0aW5nIGRpcmVjdG9yeS4KKwkJICAgbHNfbGRfdG1wZGlyPWBscyAtbGQgIiR0bXBkaXIiYAorCQkgICBjYXNlICRsc19sZF90bXBkaXIgaW4KKwkJICAgICBkPz8/Py0/ci0qKSBkaWZmZXJlbnRfbW9kZT03MDA7OworCQkgICAgIGQ/Pz8/LT8tLSopIGRpZmZlcmVudF9tb2RlPTc1NTs7CisJCSAgICAgKikgZmFsc2U7OworCQkgICBlc2FjICYmCisJCSAgICRta2RpcnByb2cgLW0kZGlmZmVyZW50X21vZGUgLXAgLS0gIiR0bXBkaXIiICYmIHsKKwkJICAgICBsc19sZF90bXBkaXJfMT1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgICB0ZXN0ICIkbHNfbGRfdG1wZGlyIiA9ICIkbHNfbGRfdG1wZGlyXzEiCisJCSAgIH0KKwkJIH0KKwkgICAgICB0aGVuIHBvc2l4X21rZGlyPToKKwkgICAgICBmaQorCSAgICAgIHJtZGlyICIkdG1wZGlyL2QiICIkdG1wZGlyIgorCSAgICBlbHNlCisJICAgICAgIyBSZW1vdmUgYW55IGRpcnMgbGVmdCBiZWhpbmQgYnkgYW5jaWVudCBta2RpciBpbXBsZW1lbnRhdGlvbnMuCisJICAgICAgcm1kaXIgLi8kbWtkaXJfbW9kZSAuLy1wIC4vLS0gMj4vZGV2L251bGwKKwkgICAgZmkKKwkgICAgdHJhcCAnJyAwOzsKKwllc2FjOzsKKyAgICBlc2FjCisKKyAgICBpZgorICAgICAgJHBvc2l4X21rZGlyICYmICgKKwl1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiCisgICAgICApCisgICAgdGhlbiA6CisgICAgZWxzZQorCisgICAgICAjIFRoZSB1bWFzayBpcyByaWRpY3Vsb3VzLCBvciBta2RpciBkb2VzIG5vdCBjb25mb3JtIHRvIFBPU0lYLAorICAgICAgIyBvciBpdCBmYWlsZWQgcG9zc2libHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24uICBDcmVhdGUgdGhlCisgICAgICAjIGRpcmVjdG9yeSB0aGUgc2xvdyB3YXksIHN0ZXAgYnkgc3RlcCwgY2hlY2tpbmcgZm9yIHJhY2VzIGFzIHdlIGdvLgorCisgICAgICBjYXNlICRkc3RkaXIgaW4KKwkvKikgcHJlZml4PScvJzs7CisJLSopIHByZWZpeD0nLi8nOzsKKwkqKSAgcHJlZml4PScnOzsKKyAgICAgIGVzYWMKKworICAgICAgZXZhbCAiJGluaXRpYWxpemVfcG9zaXhfZ2xvYiIKKworICAgICAgb0lGUz0kSUZTCisgICAgICBJRlM9LworICAgICAgJHBvc2l4X2dsb2Igc2V0IC1mCisgICAgICBzZXQgZm5vcmQgJGRzdGRpcgorICAgICAgc2hpZnQKKyAgICAgICRwb3NpeF9nbG9iIHNldCArZgorICAgICAgSUZTPSRvSUZTCisKKyAgICAgIHByZWZpeGVzPQorCisgICAgICBmb3IgZAorICAgICAgZG8KKwl0ZXN0IC16ICIkZCIgJiYgY29udGludWUKKworCXByZWZpeD0kcHJlZml4JGQKKwlpZiB0ZXN0IC1kICIkcHJlZml4IjsgdGhlbgorCSAgcHJlZml4ZXM9CisJZWxzZQorCSAgaWYgJHBvc2l4X21rZGlyOyB0aGVuCisJICAgICh1bWFzaz0kbWtkaXJfdW1hc2sgJiYKKwkgICAgICRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIpICYmIGJyZWFrCisJICAgICMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkgICAgdGVzdCAtZCAiJHByZWZpeCIgfHwgZXhpdCAxCisJICBlbHNlCisJICAgIGNhc2UgJHByZWZpeCBpbgorCSAgICAgICpcJyopIHFwcmVmaXg9YGVjaG8gIiRwcmVmaXgiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsKKwkgICAgICAqKSBxcHJlZml4PSRwcmVmaXg7OworCSAgICBlc2FjCisJICAgIHByZWZpeGVzPSIkcHJlZml4ZXMgJyRxcHJlZml4JyIKKwkgIGZpCisJZmkKKwlwcmVmaXg9JHByZWZpeC8KKyAgICAgIGRvbmUKKworICAgICAgaWYgdGVzdCAtbiAiJHByZWZpeGVzIjsgdGhlbgorCSMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJIGV2YWwgIlwkZG9pdF9leGVjIFwkbWtkaXJwcm9nICRwcmVmaXhlcyIpIHx8CisJICB0ZXN0IC1kICIkZHN0ZGlyIiB8fCBleGl0IDEKKwlvYnNvbGV0ZV9ta2Rpcl91c2VkPXRydWUKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKKworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0ICIkb2Jzb2xldGVfbWtkaXJfdXNlZCRjaG93bmNtZCRjaGdycGNtZCIgPSBmYWxzZSB8fAorICAgICAgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3QiOyB9IHx8IGV4aXQgMQorICBlbHNlCisKKyAgICAjIE1ha2UgYSBjb3VwbGUgb2YgdGVtcCBmaWxlIG5hbWVzIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5LgorICAgIGRzdHRtcD0kZHN0ZGlyL19pbnN0LiQkXworICAgIHJtdG1wPSRkc3RkaXIvX3JtLiQkXworCisgICAgIyBUcmFwIHRvIGNsZWFuIHVwIHRob3NlIHRlbXAgZmlsZXMgYXQgZXhpdC4KKyAgICB0cmFwICdyZXQ9JD87IHJtIC1mICIkZHN0dG1wIiAiJHJtdG1wIiAmJiBleGl0ICRyZXQnIDAKKworICAgICMgQ29weSB0aGUgZmlsZSBuYW1lIHRvIHRoZSB0ZW1wIG5hbWUuCisgICAgKHVtYXNrICRjcF91bWFzayAmJiAkZG9pdF9leGVjICRjcHByb2cgIiRzcmMiICIkZHN0dG1wIikgJiYKKworICAgICMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cy4KKyAgICAjCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bworICAgICMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQorICAgICMgZXJyb3JzIGZyb20gdGhlIGFib3ZlICIkZG9pdCAkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KKyAgICAjCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAkbW9kZSAiJGRzdHRtcCI7IH0gJiYKKworICAgICMgSWYgLUMsIGRvbid0IGJvdGhlciB0byBjb3B5IGlmIGl0IHdvdWxkbid0IGNoYW5nZSB0aGUgZmlsZS4KKyAgICBpZiAkY29weV9vbl9jaGFuZ2UgJiYKKyAgICAgICBvbGQ9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3QiCTI+L2Rldi9udWxsYCAmJgorICAgICAgIG5ldz1gTENfQUxMPUMgbHMgLWRsTCAiJGRzdHRtcCIJMj4vZGV2L251bGxgICYmCisKKyAgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCAtZiAmJgorICAgICAgIHNldCBYICRvbGQgJiYgb2xkPTokMjokNDokNTokNiAmJgorICAgICAgIHNldCBYICRuZXcgJiYgbmV3PTokMjokNDokNTokNiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCArZiAmJgorCisgICAgICAgdGVzdCAiJG9sZCIgPSAiJG5ldyIgJiYKKyAgICAgICAkY21wcHJvZyAiJGRzdCIgIiRkc3R0bXAiID4vZGV2L251bGwgMj4mMQorICAgIHRoZW4KKyAgICAgIHJtIC1mICIkZHN0dG1wIgorICAgIGVsc2UKKyAgICAgICMgUmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorICAgICAgJGRvaXQgJG12Y21kIC1mICIkZHN0dG1wIiAiJGRzdCIgMj4vZGV2L251bGwgfHwKKworICAgICAgIyBUaGUgcmVuYW1lIGZhaWxlZCwgcGVyaGFwcyBiZWNhdXNlIG12IGNhbid0IHJlbmFtZSBzb21ldGhpbmcgZWxzZQorICAgICAgIyB0byBpdHNlbGYsIG9yIHBlcmhhcHMgYmVjYXVzZSBtdiBpcyBzbyBhbmNpZW50IHRoYXQgaXQgZG9lcyBub3QKKyAgICAgICMgc3VwcG9ydCAtZi4KKyAgICAgIHsKKwkjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCisJIyBXZSB0cnkgdGhpcyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUKKwkjIHN5c3RlbXMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG1pZ2h0IGJlIGJ1c3kgZm9yIG90aGVyCisJIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xlYW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3CisJIyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KKwl7CisJICB0ZXN0ICEgLWYgIiRkc3QiIHx8CisJICAkZG9pdCAkcm1jbWQgLWYgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisJICB7ICRkb2l0ICRtdmNtZCAtZiAiJGRzdCIgIiRybXRtcCIgMj4vZGV2L251bGwgJiYKKwkgICAgeyAkZG9pdCAkcm1jbWQgLWYgIiRybXRtcCIgMj4vZGV2L251bGw7IDo7IH0KKwkgIH0gfHwKKwkgIHsgZWNobyAiJDA6IGNhbm5vdCB1bmxpbmsgb3IgcmVuYW1lICRkc3QiID4mMgorCSAgICAoZXhpdCAxKTsgZXhpdCAxCisJICB9CisJfSAmJgorCisJIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorCSRkb2l0ICRtdmNtZCAiJGRzdHRtcCIgIiRkc3QiCisgICAgICB9CisgICAgZmkgfHwgZXhpdCAxCisKKyAgICB0cmFwICcnIDAKKyAgZmkKK2RvbmUKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyBFbmQ6CmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L2xpc3QuaCBiL3VzYnV0aWxzLTAuODYvbGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDAzZjMKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L2xpc3QuaApAQCAtMCwwICsxLDEwNSBAQAorI2lmbmRlZiBfTElOVVhfTElTVF9ICisjZGVmaW5lIF9MSU5VWF9MSVNUX0gKKworLyoKKyAqIFNpbXBsZSBkb3VibHkgbGlua2VkIGxpc3QgaW1wbGVtZW50YXRpb24uCisgKgorICogU29tZSBvZiB0aGUgaW50ZXJuYWwgZnVuY3Rpb25zICgiX194eHgiKSBhcmUgdXNlZnVsIHdoZW4KKyAqIG1hbmlwdWxhdGluZyB3aG9sZSBsaXN0cyByYXRoZXIgdGhhbiBzaW5nbGUgZW50cmllcywgYXMKKyAqIHNvbWV0aW1lcyB3ZSBhbHJlYWR5IGtub3cgdGhlIG5leHQvcHJldiBlbnRyaWVzIGFuZCB3ZSBjYW4KKyAqIGdlbmVyYXRlIGJldHRlciBjb2RlIGJ5IHVzaW5nIHRoZW0gZGlyZWN0bHkgcmF0aGVyIHRoYW4KKyAqIHVzaW5nIHRoZSBnZW5lcmljIHNpbmdsZS1lbnRyeSByb3V0aW5lcy4KKyAqLworCitzdHJ1Y3QgbGlzdF9oZWFkIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsKK307CisKKyNkZWZpbmUgTElTVF9IRUFEX0lOSVQobmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KKworI2RlZmluZSBMSVNUX0hFQUQobmFtZSkgXAorCXN0cnVjdCBsaXN0X2hlYWQgbmFtZSA9IExJU1RfSEVBRF9JTklUKG5hbWUpCisKKyNkZWZpbmUgSU5JVF9MSVNUX0hFQUQocHRyKSBkbyB7IFwKKwkocHRyKS0+bmV4dCA9IChwdHIpOyAocHRyKS0+cHJldiA9IChwdHIpOyBcCit9IHdoaWxlICgwKQorCisvKgorICogSW5zZXJ0IGEgbmV3IGVudHJ5IGJldHdlZW4gdHdvIGtub3duIGNvbnNlY3V0aXZlIGVudHJpZXMuIAorICoKKyAqIFRoaXMgaXMgb25seSBmb3IgaW50ZXJuYWwgbGlzdCBtYW5pcHVsYXRpb24gd2hlcmUgd2Uga25vdworICogdGhlIHByZXYvbmV4dCBlbnRyaWVzIGFscmVhZHkhCisgKi8KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICogbmV3LAorCXN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAorCXN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQoreworCW5leHQtPnByZXYgPSBuZXc7CisJbmV3LT5uZXh0ID0gbmV4dDsKKwluZXctPnByZXYgPSBwcmV2OworCXByZXYtPm5leHQgPSBuZXc7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBuZXcgZW50cnkgYWZ0ZXIgdGhlIHNwZWNpZmllZCBoZWFkLi4KKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3IGVudHJ5IGJlZm9yZSB0aGUgc3BlY2lmaWVkIGhlYWQuLgorICovCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfYWRkX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCV9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKK30KKworLyoKKyAqIERlbGV0ZSBhIGxpc3QgZW50cnkgYnkgbWFraW5nIHRoZSBwcmV2L25leHQgZW50cmllcworICogcG9pbnQgdG8gZWFjaCBvdGhlci4KKyAqCisgKiBUaGlzIGlzIG9ubHkgZm9yIGludGVybmFsIGxpc3QgbWFuaXB1bGF0aW9uIHdoZXJlIHdlIGtub3cKKyAqIHRoZSBwcmV2L25leHQgZW50cmllcyBhbHJlYWR5IQorICovCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCisJCQkJICBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKK3sKKwluZXh0LT5wcmV2ID0gcHJldjsKKwlwcmV2LT5uZXh0ID0gbmV4dDsKK30KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKK3sKKwlfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJcmV0dXJuIGhlYWQtPm5leHQgPT0gaGVhZDsKK30KKworLyoKKyAqIFNwbGljZSBpbiAibGlzdCIgaW50byAiaGVhZCIKKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKKworCWlmIChmaXJzdCAhPSBsaXN0KSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OworCQlzdHJ1Y3QgbGlzdF9oZWFkICphdCA9IGhlYWQtPm5leHQ7CisKKwkJZmlyc3QtPnByZXYgPSBoZWFkOworCQloZWFkLT5uZXh0ID0gZmlyc3Q7CisKKwkJbGFzdC0+bmV4dCA9IGF0OworCQlhdC0+cHJldiA9IGxhc3Q7CisJfQorfQorCisjZGVmaW5lIGxpc3RfZW50cnkocHRyLCB0eXBlLCBtZW1iZXIpIFwKKwkoKHR5cGUgKikoKGNoYXIgKikocHRyKS0odW5zaWduZWQgbG9uZykoJigodHlwZSAqKTApLT5tZW1iZXIpKSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L2xzdXNiLXQuYyBiL3VzYnV0aWxzLTAuODYvbHN1c2ItdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MDQxNTUKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L2xzdXNiLXQuYwpAQCAtMCwwICsxLDcxMCBAQAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlICJsaXN0LmgiCisKKyNkZWZpbmUgTVlfU1lTRlNfRklMRU5BTUVfTEVOIDI1NQorI2RlZmluZSBNWV9QQVRIX01BWCA0MDk2CisKK3N0cnVjdCB1c2JpbnRlcmZhY2UgeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlzdHJ1Y3QgdXNiaW50ZXJmYWNlICpuZXh0OworCXN0cnVjdCB1c2JkZXZpY2UgKnBhcmVudDsKKwl1bnNpZ25lZCBpbnQgY29uZmlndXJhdGlvbjsKKwl1bnNpZ25lZCBpbnQgaWZudW07CisKKwl1bnNpZ25lZCBpbnQgYkFsdGVybmF0ZVNldHRpbmc7CisJdW5zaWduZWQgaW50IGJJbnRlcmZhY2VDbGFzczsKKwl1bnNpZ25lZCBpbnQgYkludGVyZmFjZU51bWJlcjsKKwl1bnNpZ25lZCBpbnQgYkludGVyZmFjZVByb3RvY29sOworCXVuc2lnbmVkIGludCBiSW50ZXJmYWNlU3ViQ2xhc3M7CisJdW5zaWduZWQgaW50IGJOdW1FbmRwb2ludHM7CisKKwljaGFyIG5hbWVbTVlfU1lTRlNfRklMRU5BTUVfTEVOXTsKKwljaGFyIGRyaXZlcltNWV9TWVNGU19GSUxFTkFNRV9MRU5dOworfTsKKworc3RydWN0IHVzYmRldmljZSB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwkvKiBjb25uZWN0IGRldmljZXMgaW5kZXBlbmRhbnQgb2YgdGhlIGJ1cyAqLworCXN0cnVjdCB1c2JkZXZpY2UgKm5leHQ7CS8qIG5leHQgcG9ydCBvbiB0aGlzIGh1YiAqLworCXN0cnVjdCB1c2JpbnRlcmZhY2UgKmZpcnN0X2ludGVyZmFjZTsJLyogbGlzdCBvZiBpbnRlcmZhY2VzICovCisJc3RydWN0IHVzYmRldmljZSAqZmlyc3RfY2hpbGQ7CS8qIGNvbm5lY3QgZGV2aWNlcyBvbiB0aGlzIHBvcnQgKi8KKwlzdHJ1Y3QgdXNiZGV2aWNlICpwYXJlbnQ7CS8qIGh1YiB0aGlzIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gKi8KKwl1bnNpZ25lZCBpbnQgYnVzbnVtOworCXVuc2lnbmVkIGludCBwYXJlbnRfcG9ydG51bTsKKwl1bnNpZ25lZCBpbnQgcG9ydG51bTsKKworCXVuc2lnbmVkIGludCBiQ29uZmlndXJhdGlvblZhbHVlOworCXVuc2lnbmVkIGludCBiRGV2aWNlQ2xhc3M7CisJdW5zaWduZWQgaW50IGJEZXZpY2VQcm90b2NvbDsKKwl1bnNpZ25lZCBpbnQgYkRldmljZVN1YkNsYXNzOworCXVuc2lnbmVkIGludCBiTWF4UGFja2V0U2l6ZTA7CisJY2hhciBiTWF4UG93ZXJbNjRdOworCXVuc2lnbmVkIGludCBiTnVtQ29uZmlndXJhdGlvbnM7CisJdW5zaWduZWQgaW50IGJOdW1JbnRlcmZhY2VzOworCXVuc2lnbmVkIGludCBiY2REZXZpY2U7CisJdW5zaWduZWQgaW50IGJtQXR0cmlidXRlczsKKwl1bnNpZ25lZCBpbnQgY29uZmlndXJhdGlvbjsKKwl1bnNpZ25lZCBpbnQgZGV2bnVtOworCXVuc2lnbmVkIGludCBpZFByb2R1Y3Q7CisJdW5zaWduZWQgaW50IGlkVmVuZG9yOworCXVuc2lnbmVkIGludCBtYXhjaGlsZDsKKwljaGFyIG1hbnVmYWN0dXJlcls2NF07CisJY2hhciBwcm9kdWN0WzY0XTsKKwljaGFyIHNlcmlhbFs2NF07CisJY2hhciB2ZXJzaW9uWzY0XTsKKwljaGFyIHNwZWVkWzQgKyAxXTsJLyogJzEuNScsJzEyJywnNDgwJyArICdcbicgKi8KKworCWNoYXIgbmFtZVtNWV9TWVNGU19GSUxFTkFNRV9MRU5dOworCWNoYXIgZHJpdmVyW01ZX1NZU0ZTX0ZJTEVOQU1FX0xFTl07Cit9OworCitzdHJ1Y3QgdXNiYnVzbm9kZSB7CisJc3RydWN0IHVzYmJ1c25vZGUgKm5leHQ7CisJc3RydWN0IHVzYmludGVyZmFjZSAqZmlyc3RfaW50ZXJmYWNlOwkvKiBsaXN0IG9mIGludGVyZmFjZXMgKi8KKwlzdHJ1Y3QgdXNiZGV2aWNlICpmaXJzdF9jaGlsZDsJLyogY29ubmVjdCBjaGlsZHMgYmVsb25naW5nIHRvIHRoaXMgYnVzICovCisJdW5zaWduZWQgaW50IGJ1c251bTsKKworCXVuc2lnbmVkIGludCBiRGV2aWNlQ2xhc3M7CisJdW5zaWduZWQgaW50IGRldm51bTsKKwl1bnNpZ25lZCBpbnQgbWF4Y2hpbGQ7CisJY2hhciBzcGVlZFs0ICsgMV07CS8qICcxLjUnLCcxMicsJzQ4MCcgKyAnXG4nICovCisKKwljaGFyIGRyaXZlcltNWV9TWVNGU19GSUxFTkFNRV9MRU5dOworfTsKKworI2RlZmluZSBTWVNGU19JTlR1KGRlLHRndCwgbmFtZSkgZG8geyB0Z3QtPm5hbWUgPSByZWFkX3N5c2ZzX2ZpbGVfaW50KGRlLCNuYW1lLDEwKTsgfSB3aGlsZSgwKQorI2RlZmluZSBTWVNGU19JTlR4KGRlLHRndCwgbmFtZSkgZG8geyB0Z3QtPm5hbWUgPSByZWFkX3N5c2ZzX2ZpbGVfaW50KGRlLCNuYW1lLDE2KTsgfSB3aGlsZSgwKQorI2RlZmluZSBTWVNGU19TVFIoZGUsdGd0LCBuYW1lKSBkbyB7IHJlYWRfc3lzZnNfZmlsZV9zdHJpbmcoZGUsICNuYW1lLCB0Z3QtPm5hbWUsIE1ZX1NZU0ZTX0ZJTEVOQU1FX0xFTik7IH0gd2hpbGUoMCkKKworTElTVF9IRUFEKGludGVyZmFjZWxpc3QpOworTElTVF9IRUFEKHVzYmRldmxpc3QpOworc3RhdGljIHN0cnVjdCB1c2JidXNub2RlICp1c2JidXNsaXN0OworCitzdGF0aWMgY29uc3QgY2hhciBzeXNfYnVzX3VzYl9kZXZpY2VzW10gPSAiL3N5cy9idXMvdXNiL2RldmljZXMiOworc3RhdGljIGludCBpbmRlbnQ7CisKKyNpZiAwCitzdGF0aWMgdm9pZCBkdW1wX3VzYmJ1c25vZGUoc3RydWN0IHVzYmJ1c25vZGUgKmIpCit7CisJcHJpbnRmKCIgQiAlcDonJXUnOiBuICVwIGZpICVwIGZjICVwIGRyaXZlciAnJXMnXG4iLCBiLCBiLT5idXNudW0sIGItPm5leHQsIGItPmZpcnN0X2ludGVyZmFjZSwgYi0+Zmlyc3RfY2hpbGQsIGItPmRyaXZlcik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfdXNiZGV2aWNlKHN0cnVjdCB1c2JkZXZpY2UgKmQpCit7CisJcHJpbnRmCisJICAgICgiIEQgJXA6JyVzJzogbiAlcCBmaSAlcCBmYyAlcCBibiAldSBwcG4gJXUgcG4gJXUgcCAlcCBiQ1YgJXUgYkRDICUwMnggYkRQICUwMnggYkRTQyAlMDJ4IGJNUFMgJTAyeCBiTVAgJyVzJyBiTkMgJXUgYk5JICV1IGJjZEQgJTAyeCBibUEgJTAyeCBjICV1IGRuICV1IGlkUCAlMDR4IGlkViAlMDR4IG1jICV1IG0gJyVzJyBwICclcycgcyAnJXMnIHYgJyVzJyBzcCAnJXMnIGRyaXZlciAnJXMnXG4iLAorCSAgICAgZCwgZC0+bmFtZSwgZC0+bmV4dCwgZC0+Zmlyc3RfaW50ZXJmYWNlLCBkLT5maXJzdF9jaGlsZCwgZC0+YnVzbnVtLCBkLT5wYXJlbnRfcG9ydG51bSwgZC0+cG9ydG51bSwgZC0+cGFyZW50LCBkLT5iQ29uZmlndXJhdGlvblZhbHVlLCBkLT5iRGV2aWNlQ2xhc3MsCisJICAgICBkLT5iRGV2aWNlUHJvdG9jb2wsIGQtPmJEZXZpY2VTdWJDbGFzcywgZC0+Yk1heFBhY2tldFNpemUwLCBkLT5iTWF4UG93ZXIsIGQtPmJOdW1Db25maWd1cmF0aW9ucywgZC0+Yk51bUludGVyZmFjZXMsIGQtPmJjZERldmljZSwgZC0+Ym1BdHRyaWJ1dGVzLAorCSAgICAgZC0+Y29uZmlndXJhdGlvbiwgZC0+ZGV2bnVtLCBkLT5pZFByb2R1Y3QsIGQtPmlkVmVuZG9yLCBkLT5tYXhjaGlsZCwgZC0+bWFudWZhY3R1cmVyLCBkLT5wcm9kdWN0LCBkLT5zZXJpYWwsIGQtPnZlcnNpb24sIGQtPnNwZWVkLCBkLT5kcml2ZXIpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX3VzYmludGVyZmFjZShzdHJ1Y3QgdXNiaW50ZXJmYWNlICppKQoreworCXByaW50ZigiIEkgJXA6JyVzJzogbiAlcCBjICV1IGlmICV1IGJBUyAldSBiSUMgJTAyeCBiSU4gJTAyeCBiSVAgJTAyeCBiSVNDICUwMnggYk5FICV1IGQgJyVzJ1xuIiwgaSwgaS0+bmFtZSwgaS0+bmV4dCwgaS0+Y29uZmlndXJhdGlvbiwgaS0+aWZudW0sCisJICAgICAgIGktPmJBbHRlcm5hdGVTZXR0aW5nLCBpLT5iSW50ZXJmYWNlQ2xhc3MsIGktPmJJbnRlcmZhY2VOdW1iZXIsIGktPmJJbnRlcmZhY2VQcm90b2NvbCwgaS0+YkludGVyZmFjZVN1YkNsYXNzLCBpLT5iTnVtRW5kcG9pbnRzLCBpLT5kcml2ZXIpOworfQorI2VuZGlmCisKK3N0YXRpYyBjaGFyIHRtcF9zdHJbMTI4XTsKK3N0YXRpYyBjb25zdCBjaGFyICpiSW50ZXJmYWNlQ2xhc3NfdG9fc3RyKHVuc2lnbmVkIGludCBkYykKK3sKKwljb25zdCBjaGFyICpzOworCXN3aXRjaCAoZGMpIHsKKwljYXNlIDA6CisJCXMgPSAiPmlmYyI7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcyA9ICJhdWRpbyI7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJcyA9ICJjb21tLiI7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJcyA9ICJISUQiOworCQlicmVhazsKKwljYXNlIDU6CisJCXMgPSAiUElEIjsKKwkJYnJlYWs7CisJY2FzZSA2OgorCQlzID0gInN0aWxsIjsKKwkJYnJlYWs7CisJY2FzZSA3OgorCQlzID0gInByaW50IjsKKwkJYnJlYWs7CisJY2FzZSA4OgorCQlzID0gInN0b3IuIjsKKwkJYnJlYWs7CisJY2FzZSA5OgorCQlzID0gImh1YiI7CisJCWJyZWFrOworCWNhc2UgMTA6CisJCXMgPSAiZGF0YSI7CisJCWJyZWFrOworCWNhc2UgMTE6CisJCXMgPSAic2NhcmQiOworCQlicmVhazsKKwljYXNlIDEzOgorCQlzID0gImMtc2VjIjsKKwkJYnJlYWs7CisJY2FzZSAyNTQ6CisJCXMgPSAiYXBwLiI7CisJCWJyZWFrOworCWNhc2UgMjU1OgorCQlzID0gInZlbmQuIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJc25wcmludGYodG1wX3N0ciwgMTI4LCAiJ2JJbnRlcmZhY2VDbGFzcyAweCUwMnggbm90IHlldCBoYW5kbGVkJyIsIGRjKTs7CisJCXMgPSB0bXBfc3RyOworCX0KKwlyZXR1cm4gczsKK30KK3N0YXRpYyBjb25zdCBjaGFyICpiRGV2aWNlQ2xhc3NfdG9fc3RyKHVuc2lnbmVkIGludCBkYykKK3sKKwljb25zdCBjaGFyICpzOworCXN3aXRjaCAoZGMpIHsKKwljYXNlIDk6CisJCXMgPSAicm9vdF9odWIiOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlzbnByaW50Zih0bXBfc3RyLCAxMjgsICInYkRldmljZUNsYXNzIDB4JTAyeCBub3QgeWV0IGhhbmRsZWQnIiwgZGMpOzsKKwkJcyA9IHRtcF9zdHI7CisJfQorCXJldHVybiBzOworfQorc3RhdGljIHZvaWQgcHJpbnRfdXNiYnVzbm9kZShzdHJ1Y3QgdXNiYnVzbm9kZSAqYikKK3sKKwlwcmludGYoIi86ICBCdXMgJTAydS5Qb3J0ICV1OiBEZXYgJXUsIENsYXNzPSVzLCBEcml2ZXI9JXMvJXVwLCAlc01cbiIsIGItPmJ1c251bSwgMSwKKwkgICAgICAgYi0+ZGV2bnVtLCBiRGV2aWNlQ2xhc3NfdG9fc3RyKGItPmJEZXZpY2VDbGFzcyksIGItPmRyaXZlciwgYi0+bWF4Y2hpbGQsIGItPnNwZWVkKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdXNiZGV2aWNlKHN0cnVjdCB1c2JkZXZpY2UgKmQsIHN0cnVjdCB1c2JpbnRlcmZhY2UgKmkpCit7CisJaWYgKGktPmJJbnRlcmZhY2VDbGFzcyA9PSA5KQorCQlwcmludGYoIlBvcnQgJXU6IERldiAldSwgSWYgJXUsIENsYXNzPSVzLCBEcml2ZXI9JXMvJXVwLCAlc01cbiIsIGQtPnBvcnRudW0sIGQtPmRldm51bSwgaS0+aWZudW0sIGJJbnRlcmZhY2VDbGFzc190b19zdHIoaS0+YkludGVyZmFjZUNsYXNzKSwKKwkJICAgICAgIGktPmRyaXZlciwgZC0+bWF4Y2hpbGQsIGQtPnNwZWVkKTsKKwllbHNlCisJCXByaW50ZigiUG9ydCAldTogRGV2ICV1LCBJZiAldSwgQ2xhc3M9JXMsIERyaXZlcj0lcywgJXNNXG4iLCBkLT5wb3J0bnVtLCBkLT5kZXZudW0sIGktPmlmbnVtLCBiSW50ZXJmYWNlQ2xhc3NfdG9fc3RyKGktPmJJbnRlcmZhY2VDbGFzcyksIGktPmRyaXZlciwKKwkJICAgICAgIGQtPnNwZWVkKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCByZWFkX3N5c2ZzX2ZpbGVfaW50KGNvbnN0IGNoYXIgKmRfbmFtZSwgY29uc3QgY2hhciAqZmlsZSwgaW50IGJhc2UpCit7CisJY2hhciBidWZbMTJdLCBwYXRoW01ZX1BBVEhfTUFYXTsKKwlpbnQgZmQ7CisJc3NpemVfdCByOworCXVuc2lnbmVkIGxvbmcgcmV0OworCXNucHJpbnRmKHBhdGgsIE1ZX1BBVEhfTUFYLCAiJXMvJXMvJXMiLCBzeXNfYnVzX3VzYl9kZXZpY2VzLCBkX25hbWUsIGZpbGUpOworCXBhdGhbTVlfUEFUSF9NQVggLSAxXSA9ICdcMCc7CisJZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCQlnb3RvIGVycm9yOworCW1lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKwlyID0gcmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworCWNsb3NlKGZkKTsKKwlpZiAociA8IDApCisJCWdvdG8gZXJyb3I7CisJYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOworCXJldCA9IHN0cnRvdWwoYnVmLCBOVUxMLCBiYXNlKTsKKwlyZXR1cm4gKHVuc2lnbmVkIGludClyZXQ7CisKKyAgICAgIGVycm9yOgorCXBlcnJvcihwYXRoKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmVhZF9zeXNmc19maWxlX3N0cmluZyhjb25zdCBjaGFyICpkX25hbWUsIGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwljaGFyIHBhdGhbTVlfUEFUSF9NQVhdOworCWludCBmZDsKKwlzc2l6ZV90IHI7CisJZmQgPSBzbnByaW50ZihwYXRoLCBNWV9QQVRIX01BWCwgIiVzLyVzLyVzIiwgc3lzX2J1c191c2JfZGV2aWNlcywgZF9uYW1lLCBmaWxlKTsKKwlpZiAoZmQgPCAwIHx8IGZkID49IE1ZX1BBVEhfTUFYKQorCQlnb3RvIGVycm9yOworCXBhdGhbZmRdID0gJ1wwJzsKKwlmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOworCWlmIChmZCA8IDApCisJCWdvdG8gZXJyb3I7CisJciA9IHJlYWQoZmQsIGJ1ZiwgbGVuKTsKKwljbG9zZShmZCk7CisJaWYgKHIgPj0gMCAmJiByIDwgbGVuKSB7CisJCWJ1ZltyXSA9ICdcMCc7CisJCXItLTsKKwkJd2hpbGUgKGJ1ZltyXSA9PSAnXG4nKSB7CisJCQlidWZbcl0gPSAnXDAnOworCQkJci0tOworCQl9CisJCXdoaWxlIChyKSB7CisJCQlpZiAoYnVmW3JdID09ICdcbicpCisJCQkJYnVmW3JdID0gJyAnOworCQkJci0tOworCQl9CisJCXJldHVybjsKKwl9CisgICAgICBlcnJvcjoKKwlidWZbMF0gPSAnXDAnOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmRfZGV2X2ludGVyZmFjZShzdHJ1Y3QgdXNiaW50ZXJmYWNlICppLCBzdHJ1Y3QgdXNiaW50ZXJmYWNlICpuZXcpCit7CisJd2hpbGUgKGktPm5leHQpCisJCWkgPSBpLT5uZXh0OworCWktPm5leHQgPSBuZXc7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZF9kZXZfc2libGluZyhzdHJ1Y3QgdXNiZGV2aWNlICpkLCBzdHJ1Y3QgdXNiZGV2aWNlICpuZXcpCit7CisJd2hpbGUgKGQtPm5leHQpCisJCWQgPSBkLT5uZXh0OworCWQtPm5leHQgPSBuZXc7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZF9idXNpbnRlcmZhY2UodW5zaWduZWQgaW50IGJ1c251bSwgc3RydWN0IHVzYmludGVyZmFjZSAqbmV3KQoreworCXN0cnVjdCB1c2JidXNub2RlICpiID0gdXNiYnVzbGlzdDsKKwlzdHJ1Y3QgdXNiaW50ZXJmYWNlICppOworCXdoaWxlIChiKSB7CisJCWlmIChiLT5idXNudW0gPT0gYnVzbnVtKSB7CisJCQlpID0gYi0+Zmlyc3RfaW50ZXJmYWNlOworCQkJaWYgKGkpIHsKKwkJCQl3aGlsZSAoaS0+bmV4dCkKKwkJCQkJaSA9IGktPm5leHQ7CisJCQkJaS0+bmV4dCA9IG5ldzsKKwkJCX0gZWxzZQorCQkJCWItPmZpcnN0X2ludGVyZmFjZSA9IG5ldzsKKwkJCWJyZWFrOworCQl9CisJCWIgPSBiLT5uZXh0OworCX0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kX2J1c25vZGUoc3RydWN0IHVzYmJ1c25vZGUgKm5ldykKK3sKKwlzdHJ1Y3QgdXNiYnVzbm9kZSAqYiA9IHVzYmJ1c2xpc3Q7CisJaWYgKGIpIHsKKwkJd2hpbGUgKGItPm5leHQpCisJCQliID0gYi0+bmV4dDsKKwkJYi0+bmV4dCA9IG5ldzsKKwl9IGVsc2UKKwkJdXNiYnVzbGlzdCA9IG5ldzsKK30KKworc3RhdGljIHZvaWQgYWRkX3VzYl9pbnRlcmZhY2UoY29uc3QgY2hhciAqZF9uYW1lKQoreworCXN0cnVjdCB1c2JpbnRlcmZhY2UgKmU7CisJY29uc3QgY2hhciAqcDsKKwljaGFyICpwbiwgbGlua1tNWV9QQVRIX01BWF07CisJdW5zaWduZWQgbG9uZyBpOworCWludCBsOworCXAgPSBzdHJjaHIoZF9uYW1lLCAnOicpOworCXArKzsKKwlpID0gc3RydG91bChwLCAmcG4sIDEwKTsKKwlpZiAoIXBuIHx8IHAgPT0gcG4pCisJCXJldHVybjsKKwllID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgdXNiaW50ZXJmYWNlKSk7CisJaWYgKCFlKQorCQlyZXR1cm47CisJbWVtc2V0KGUsIDAsIHNpemVvZihzdHJ1Y3QgdXNiaW50ZXJmYWNlKSk7CisJZS0+Y29uZmlndXJhdGlvbiA9IGk7CisJcCA9IHBuICsgMTsKKwlpID0gc3RydG91bChwLCAmcG4sIDEwKTsKKwlpZiAoIXBuIHx8IHAgPT0gcG4pCisJCXJldHVybjsKKwllLT5pZm51bSA9IGk7CisJaWYgKHNucHJpbnRmKGUtPm5hbWUsIE1ZX1NZU0ZTX0ZJTEVOQU1FX0xFTiwgIiVzIiwgZF9uYW1lKSA+PSBNWV9TWVNGU19GSUxFTkFNRV9MRU4pCisJCXByaW50Zigid2FybmluZzogJyVzJyB0cnVuY2F0ZWQgdG8gJyVzJ1xuIiwgZS0+bmFtZSwgZF9uYW1lKTsKKwlTWVNGU19JTlR1KGRfbmFtZSwgZSwgYkFsdGVybmF0ZVNldHRpbmcpOworCVNZU0ZTX0lOVHgoZF9uYW1lLCBlLCBiSW50ZXJmYWNlQ2xhc3MpOworCVNZU0ZTX0lOVHgoZF9uYW1lLCBlLCBiSW50ZXJmYWNlTnVtYmVyKTsKKwlTWVNGU19JTlR4KGRfbmFtZSwgZSwgYkludGVyZmFjZVByb3RvY29sKTsKKwlTWVNGU19JTlR4KGRfbmFtZSwgZSwgYkludGVyZmFjZVN1YkNsYXNzKTsKKwlTWVNGU19JTlR4KGRfbmFtZSwgZSwgYk51bUVuZHBvaW50cyk7CisJbCA9IHNucHJpbnRmKGxpbmssIE1ZX1BBVEhfTUFYLCAiJXMvJXMvZHJpdmVyIiwgc3lzX2J1c191c2JfZGV2aWNlcywgZF9uYW1lKTsKKwlpZiAobCA+IDAgJiYgbCA8IE1ZX1BBVEhfTUFYKSB7CisJCWwgPSByZWFkbGluayhsaW5rLCBsaW5rLCBNWV9QQVRIX01BWCk7CisJCWlmIChsIDwgMCkKKwkJCXBlcnJvcihkX25hbWUpOworCQllbHNlIHsKKwkJCWlmIChsIDwgTVlfUEFUSF9NQVggLSAxKQorCQkJCWxpbmtbbF0gPSAnXDAnOworCQkJZWxzZQorCQkJCWxpbmtbMF0gPSAnXDAnOworCQkJcCA9IHN0cnJjaHIobGluaywgJy8nKTsKKwkJCWlmIChwKQorCQkJCXNucHJpbnRmKGUtPmRyaXZlciwgc2l6ZW9mKGUtPmRyaXZlciksICIlcyIsIHAgKyAxKTsKKwkJfQorCX0gZWxzZQorCQlwcmludGYoIkNhbiBub3QgcmVhZCBkcml2ZXIgbGluayBmb3IgJyVzJzogJWRcbiIsIGRfbmFtZSwgbCk7CisJbGlzdF9hZGRfdGFpbCgmZS0+bGlzdCwgJmludGVyZmFjZWxpc3QpOworfQorCitzdGF0aWMgdm9pZCBhZGRfdXNiX2RldmljZShjb25zdCBjaGFyICpkX25hbWUpCit7CisJc3RydWN0IHVzYmRldmljZSAqZDsKKwljb25zdCBjaGFyICpwOworCWNoYXIgKnBuLCBsaW5rW01ZX1BBVEhfTUFYXTsKKwl1bnNpZ25lZCBsb25nIGk7CisJaW50IGw7CisJcCA9IGRfbmFtZTsKKwlpID0gc3RydG91bChwLCAmcG4sIDEwKTsKKwlpZiAoIXBuIHx8IHAgPT0gcG4pCisJCXJldHVybjsKKwlkID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgdXNiZGV2aWNlKSk7CisJaWYgKCFkKQorCQlyZXR1cm47CisJbWVtc2V0KGQsIDAsIHNpemVvZihzdHJ1Y3QgdXNiZGV2aWNlKSk7CisJZC0+YnVzbnVtID0gaTsKKwl3aGlsZSAocG4pIHsKKwkJcCA9IHBuICsgMTsKKwkJaSA9IHN0cnRvdWwocCwgJnBuLCAxMCk7CisJCWlmIChwID09IHBuKQorCQkJYnJlYWs7CisJCWQtPnBhcmVudF9wb3J0bnVtID0gZC0+cG9ydG51bTsKKwkJZC0+cG9ydG51bSA9IGk7CisJfQorCWlmIChzbnByaW50ZihkLT5uYW1lLCBNWV9TWVNGU19GSUxFTkFNRV9MRU4sICIlcyIsIGRfbmFtZSkgPj0gTVlfU1lTRlNfRklMRU5BTUVfTEVOKQorCQlwcmludGYoIndhcm5pbmc6ICclcycgdHJ1bmNhdGVkIHRvICclcydcbiIsIGQtPm5hbWUsIGRfbmFtZSk7CisJU1lTRlNfSU5UdShkX25hbWUsIGQsIGJDb25maWd1cmF0aW9uVmFsdWUpOworCVNZU0ZTX0lOVHgoZF9uYW1lLCBkLCBiRGV2aWNlQ2xhc3MpOworCVNZU0ZTX0lOVHgoZF9uYW1lLCBkLCBiRGV2aWNlUHJvdG9jb2wpOworCVNZU0ZTX0lOVHgoZF9uYW1lLCBkLCBiRGV2aWNlU3ViQ2xhc3MpOworCVNZU0ZTX0lOVHgoZF9uYW1lLCBkLCBiTWF4UGFja2V0U2l6ZTApOworCVNZU0ZTX1NUUihkX25hbWUsIGQsIGJNYXhQb3dlcik7CisJU1lTRlNfSU5UdShkX25hbWUsIGQsIGJOdW1Db25maWd1cmF0aW9ucyk7CisJU1lTRlNfSU5UeChkX25hbWUsIGQsIGJOdW1JbnRlcmZhY2VzKTsKKwlTWVNGU19JTlR4KGRfbmFtZSwgZCwgYmNkRGV2aWNlKTsKKwlTWVNGU19JTlR4KGRfbmFtZSwgZCwgYm1BdHRyaWJ1dGVzKTsKKwlTWVNGU19JTlR1KGRfbmFtZSwgZCwgY29uZmlndXJhdGlvbik7CisJU1lTRlNfSU5UdShkX25hbWUsIGQsIGRldm51bSk7CisJU1lTRlNfSU5UeChkX25hbWUsIGQsIGlkUHJvZHVjdCk7CisJU1lTRlNfSU5UeChkX25hbWUsIGQsIGlkVmVuZG9yKTsKKwlTWVNGU19JTlR1KGRfbmFtZSwgZCwgbWF4Y2hpbGQpOworCVNZU0ZTX1NUUihkX25hbWUsIGQsIG1hbnVmYWN0dXJlcik7CisJU1lTRlNfU1RSKGRfbmFtZSwgZCwgcHJvZHVjdCk7CisJU1lTRlNfU1RSKGRfbmFtZSwgZCwgc2VyaWFsKTsKKwlTWVNGU19TVFIoZF9uYW1lLCBkLCB2ZXJzaW9uKTsKKwlTWVNGU19TVFIoZF9uYW1lLCBkLCBzcGVlZCk7CisJbCA9IHNucHJpbnRmKGxpbmssIE1ZX1BBVEhfTUFYLCAiJXMvJXMvZHJpdmVyIiwgc3lzX2J1c191c2JfZGV2aWNlcywgZF9uYW1lKTsKKwlpZiAobCA+IDAgJiYgbCA8IE1ZX1BBVEhfTUFYKSB7CisJCWwgPSByZWFkbGluayhsaW5rLCBsaW5rLCBNWV9QQVRIX01BWCk7CisJCWlmIChsIDwgMCkKKwkJCXBlcnJvcihkX25hbWUpOworCQllbHNlIHsKKwkJCWlmIChsIDwgTVlfUEFUSF9NQVggLSAxKQorCQkJCWxpbmtbbF0gPSAnXDAnOworCQkJZWxzZQorCQkJCWxpbmtbMF0gPSAnXDAnOworCQkJcCA9IHN0cnJjaHIobGluaywgJy8nKTsKKwkJCWlmIChwKQorCQkJCXNucHJpbnRmKGQtPmRyaXZlciwgc2l6ZW9mKGQtPmRyaXZlciksICIlcyIsIHAgKyAxKTsKKwkJfQorCX0gZWxzZQorCQlwcmludGYoIkNhbiBub3QgcmVhZCBkcml2ZXIgbGluayBmb3IgJyVzJzogJWRcbiIsIGRfbmFtZSwgbCk7CisJbGlzdF9hZGRfdGFpbCgmZC0+bGlzdCwgJnVzYmRldmxpc3QpOworfQorCitzdGF0aWMgdm9pZCBnZXRfcm9vdGh1Yl9kcml2ZXIoc3RydWN0IHVzYmJ1c25vZGUgKmIsIGNvbnN0IGNoYXIgKmRfbmFtZSkKK3sKKwljaGFyICpwLCBwYXRoW01ZX1BBVEhfTUFYXTsKKwlpbnQgbDsKKwlsID0gc25wcmludGYocGF0aCwgTVlfUEFUSF9NQVgsICIlcy8lcy8uLi9kcml2ZXIiLCBzeXNfYnVzX3VzYl9kZXZpY2VzLCBkX25hbWUpOworCWlmIChsID4gMCAmJiBsIDwgTVlfUEFUSF9NQVgpIHsKKwkJbCA9IHJlYWRsaW5rKHBhdGgsIHBhdGgsIE1ZX1BBVEhfTUFYKTsKKwkJaWYgKGwgPCAwKQorCQkJcGVycm9yKGRfbmFtZSk7CisJCWVsc2UgeworCQkJaWYgKGwgPCBNWV9QQVRIX01BWCAtIDEpCisJCQkJcGF0aFtsXSA9ICdcMCc7CisJCQllbHNlCisJCQkJcGF0aFswXSA9ICdcMCc7CisJCQlwID0gc3RycmNocihwYXRoLCAnLycpOworCQkJaWYgKHApCisJCQkJc25wcmludGYoYi0+ZHJpdmVyLCBzaXplb2YoYi0+ZHJpdmVyKSwgIiVzIiwgcCArIDEpOworCQl9CisJfSBlbHNlCisJCXByaW50ZigiQ2FuIG5vdCByZWFkIGRyaXZlciBsaW5rIGZvciAnJXMnOiAlZFxuIiwgZF9uYW1lLCBsKTsKK30KKworc3RhdGljIHZvaWQgYWRkX3VzYl9idXMoY29uc3QgY2hhciAqZF9uYW1lKQoreworCXN0cnVjdCB1c2JidXNub2RlICpidXM7CisJYnVzID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgdXNiYnVzbm9kZSkpOworCWlmIChidXMpIHsKKwkJbWVtc2V0KGJ1cywgMCwgc2l6ZW9mKHN0cnVjdCB1c2JidXNub2RlKSk7CisJCWJ1cy0+YnVzbnVtID0gc3RydG91bChkX25hbWUgKyAzLCBOVUxMLCAxMCk7CisJCVNZU0ZTX0lOVHUoZF9uYW1lLCBidXMsIGRldm51bSk7CisJCVNZU0ZTX0lOVHgoZF9uYW1lLCBidXMsIGJEZXZpY2VDbGFzcyk7CisJCVNZU0ZTX0lOVHUoZF9uYW1lLCBidXMsIG1heGNoaWxkKTsKKwkJU1lTRlNfU1RSKGRfbmFtZSwgYnVzLCBzcGVlZCk7CisJCWFwcGVuZF9idXNub2RlKGJ1cyk7CisJCWdldF9yb290aHViX2RyaXZlcihidXMsIGRfbmFtZSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBpbnNwZWN0X2J1c19lbnRyeShjb25zdCBjaGFyICpkX25hbWUpCit7CisJaWYgKGRfbmFtZVswXSA9PSAnLicgJiYgKCFkX25hbWVbMV0gfHwgKGRfbmFtZVsxXSA9PSAnLicgJiYgIWRfbmFtZVsyXSkpKQorCQlyZXR1cm47CisJaWYgKGRfbmFtZVswXSA9PSAndScgJiYgZF9uYW1lWzFdID09ICdzJyAmJiBkX25hbWVbMl0gPT0gJ2InICYmIGlzZGlnaXQoZF9uYW1lWzNdKSkgeworCQlhZGRfdXNiX2J1cyhkX25hbWUpOworCX0gZWxzZSBpZiAoaXNkaWdpdChkX25hbWVbMF0pKSB7CisJCWlmIChzdHJjaHIoZF9uYW1lLCAnOicpKQorCQkJYWRkX3VzYl9pbnRlcmZhY2UoZF9uYW1lKTsKKwkJZWxzZQorCQkJYWRkX3VzYl9kZXZpY2UoZF9uYW1lKTsKKwl9IGVsc2UKKwkJZnByaW50ZihzdGRlcnIsICJpZ25vcmluZyAnJXMnXG4iLCBkX25hbWUpOworfQorCitzdGF0aWMgdm9pZCB3YWxrX3VzYl9kZXZpY2VzKERJUiAqIHNidWQpCit7CisJc3RydWN0IGRpcmVudCAqZGU7CisJd2hpbGUgKChkZSA9IHJlYWRkaXIoc2J1ZCkpKQorCQlpbnNwZWN0X2J1c19lbnRyeShkZS0+ZF9uYW1lKTsKK30KKworc3RhdGljIHZvaWQgYXNzaWduX2Rldl90b19idXMoc3RydWN0IHVzYmRldmljZSAqZCkKK3sKKwlzdHJ1Y3QgdXNiYnVzbm9kZSAqYiA9IHVzYmJ1c2xpc3Q7CisJd2hpbGUgKGIpIHsKKwkJaWYgKGItPmJ1c251bSA9PSBkLT5idXNudW0pIHsKKwkJCWlmIChiLT5maXJzdF9jaGlsZCkKKwkJCQlhcHBlbmRfZGV2X3NpYmxpbmcoYi0+Zmlyc3RfY2hpbGQsIGQpOworCQkJZWxzZQorCQkJCWItPmZpcnN0X2NoaWxkID0gZDsKKwkJfQorCQliID0gYi0+bmV4dDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGFzc2lnbl9kZXZfdG9fcGFyZW50KHN0cnVjdCB1c2JkZXZpY2UgKmQpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqbDsKKwlzdHJ1Y3QgdXNiZGV2aWNlICpwZDsKKwljaGFyIG5bTVlfU1lTRlNfRklMRU5BTUVfTEVOXSwgKnA7CisJZm9yIChsID0gdXNiZGV2bGlzdC5uZXh0OyBsICE9ICZ1c2JkZXZsaXN0OyBsID0gbC0+bmV4dCkgeworCQlwZCA9IGxpc3RfZW50cnkobCwgc3RydWN0IHVzYmRldmljZSwgbGlzdCk7CisJCWlmIChwZCA9PSBkKQorCQkJY29udGludWU7CisJCWlmIChwZC0+YnVzbnVtID09IGQtPmJ1c251bSAmJiBwZC0+cG9ydG51bSA9PSBkLT5wYXJlbnRfcG9ydG51bSkgeworCQkJc3RyY3B5KG4sIGQtPm5hbWUpOworCQkJcCA9IHN0cnJjaHIobiwgJy4nKTsKKwkJCWlmIChwKSB7CisJCQkJKnAgPSAnXDAnOworCQkJCWlmIChzdHJjbXAobiwgcGQtPm5hbWUpKSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQlkLT5wYXJlbnQgPSBwZDsKKwkJCQlpZiAocGQtPmZpcnN0X2NoaWxkKQorCQkJCQlhcHBlbmRfZGV2X3NpYmxpbmcocGQtPmZpcnN0X2NoaWxkLCBkKTsKKwkJCQllbHNlCisJCQkJCXBkLT5maXJzdF9jaGlsZCA9IGQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIGFzc2lnbl9pbnRlcmZhY2VfdG9fcGFyZW50KHN0cnVjdCB1c2JkZXZpY2UgKmQsIHN0cnVjdCB1c2JpbnRlcmZhY2UgKmkpCit7CisJY29uc3QgY2hhciAqcDsKKwljaGFyICpwbiwgbmFtZVtNWV9TWVNGU19GSUxFTkFNRV9MRU5dOworCXB0cmRpZmZfdCBsOworCXVuc2lnbmVkIGludCBidXNudW07CisKKwlwID0gc3RyY2hyKGktPm5hbWUsICc6Jyk7CisJaWYgKHApIHsKKwkJbCA9IHAgLSBpLT5uYW1lOworCQlpZiAobCA8IE1ZX1NZU0ZTX0ZJTEVOQU1FX0xFTikgeworCQkJbWVtY3B5KG5hbWUsIGktPm5hbWUsIGwpOworCQkJbmFtZVtsXSA9ICdcMCc7CisJCX0gZWxzZQorCQkJbmFtZVswXSA9ICdcMCc7CisJCWlmIChzdHJjbXAoZC0+bmFtZSwgbmFtZSkgPT0gMCkgeworCQkJaS0+cGFyZW50ID0gZDsKKwkJCWlmIChkLT5maXJzdF9pbnRlcmZhY2UpCisJCQkJYXBwZW5kX2Rldl9pbnRlcmZhY2UoZC0+Zmlyc3RfaW50ZXJmYWNlLCBpKTsKKwkJCWVsc2UKKwkJCQlkLT5maXJzdF9pbnRlcmZhY2UgPSBpOworCQl9IGVsc2UgeworCQkJYnVzbnVtID0gc3RydG91bChuYW1lLCAmcG4sIDEwKTsKKwkJCWlmIChwbiAmJiBwbiAhPSBuYW1lKSB7CisJCQkJaWYgKHBbMV0gPT0gJzAnKQorCQkJCQlhcHBlbmRfYnVzaW50ZXJmYWNlKGJ1c251bSwgaSk7CisJCQl9CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNvbm5lY3RfZGV2aWNlcyh2b2lkKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmxkLCAqbGk7CisJc3RydWN0IHVzYmRldmljZSAqZDsKKwlzdHJ1Y3QgdXNiaW50ZXJmYWNlICplOworCWZvciAobGQgPSB1c2JkZXZsaXN0Lm5leHQ7IGxkICE9ICZ1c2JkZXZsaXN0OyBsZCA9IGxkLT5uZXh0KSB7CisJCWQgPSBsaXN0X2VudHJ5KGxkLCBzdHJ1Y3QgdXNiZGV2aWNlLCBsaXN0KTsKKwkJaWYgKGQtPnBhcmVudF9wb3J0bnVtKQorCQkJYXNzaWduX2Rldl90b19wYXJlbnQoZCk7CisJCWVsc2UKKwkJCWFzc2lnbl9kZXZfdG9fYnVzKGQpOworCQlmb3IgKGxpID0gaW50ZXJmYWNlbGlzdC5uZXh0OyBsaSAhPSAmaW50ZXJmYWNlbGlzdDsgbGkgPSBsaS0+bmV4dCkgeworCQkJZSA9IGxpc3RfZW50cnkobGksIHN0cnVjdCB1c2JpbnRlcmZhY2UsIGxpc3QpOworCQkJaWYgKCFlLT5wYXJlbnQpCisJCQkJYXNzaWduX2ludGVyZmFjZV90b19wYXJlbnQoZCwgZSk7CisJCX0KKwl9CisJZm9yIChsaSA9IGludGVyZmFjZWxpc3QubmV4dDsgbGkgIT0gJmludGVyZmFjZWxpc3Q7IGxpID0gbGktPm5leHQpIHsKKwkJZSA9IGxpc3RfZW50cnkobGksIHN0cnVjdCB1c2JpbnRlcmZhY2UsIGxpc3QpOworCX0KK30KKworc3RhdGljIHZvaWQgc29ydF9kZXZfaW50ZXJmYWNlcyhzdHJ1Y3QgdXNiaW50ZXJmYWNlICoqaSkKK3sKKwlzdHJ1Y3QgdXNiaW50ZXJmYWNlICp0LCAqcCwgKipwcDsKKwlpbnQgc3dhcHBlZDsKKwlwID0gKmk7CisJcHAgPSBpOworCWRvIHsKKwkJcCA9ICppOworCQlwcCA9IGk7CisJCXN3YXBwZWQgPSAwOworCQl3aGlsZSAocC0+bmV4dCkgeworCQkJaWYgKHAtPmNvbmZpZ3VyYXRpb24gPiBwLT5uZXh0LT5jb25maWd1cmF0aW9uKSB7CisJCQkJdCA9IHAtPm5leHQ7CisJCQkJcC0+bmV4dCA9IHQtPm5leHQ7CisJCQkJdC0+bmV4dCA9IHA7CisJCQkJKnBwID0gdDsKKwkJCQlzd2FwcGVkID0gMTsKKwkJCQlwID0gdDsKKwkJCX0KKwkJCWlmIChwLT5pZm51bSA+IHAtPm5leHQtPmlmbnVtKSB7CisJCQkJdCA9IHAtPm5leHQ7CisJCQkJcC0+bmV4dCA9IHQtPm5leHQ7CisJCQkJdC0+bmV4dCA9IHA7CisJCQkJKnBwID0gdDsKKwkJCQlzd2FwcGVkID0gMTsKKwkJCQlwID0gdDsKKwkJCX0KKwkJCXBwID0gJnAtPm5leHQ7CisJCQlwID0gcC0+bmV4dDsKKwkJfQorCX0gd2hpbGUgKHN3YXBwZWQpOworfQorCitzdGF0aWMgdm9pZCBzb3J0X2Rldl9zaWJsaW5ncyhzdHJ1Y3QgdXNiZGV2aWNlICoqZCkKK3sKKwlzdHJ1Y3QgdXNiZGV2aWNlICp0LCAqcCwgKipwcDsKKwlpbnQgc3dhcHBlZDsKKwlwID0gKmQ7CisJcHAgPSBkOworCWlmIChwLT5maXJzdF9jaGlsZCkKKwkJc29ydF9kZXZfc2libGluZ3MoJnAtPmZpcnN0X2NoaWxkKTsKKwlpZiAocC0+Zmlyc3RfaW50ZXJmYWNlKQorCQlzb3J0X2Rldl9pbnRlcmZhY2VzKCZwLT5maXJzdF9pbnRlcmZhY2UpOworCWRvIHsKKwkJcCA9ICpkOworCQlwcCA9IGQ7CisJCXN3YXBwZWQgPSAwOworCQl3aGlsZSAocC0+bmV4dCkgeworCQkJaWYgKHAtPnBvcnRudW0gPiBwLT5uZXh0LT5wb3J0bnVtKSB7CisJCQkJdCA9IHAtPm5leHQ7CisJCQkJcC0+bmV4dCA9IHQtPm5leHQ7CisJCQkJdC0+bmV4dCA9IHA7CisJCQkJKnBwID0gdDsKKwkJCQlzd2FwcGVkID0gMTsKKwkJCQlwID0gdDsKKwkJCX0KKwkJCXBwID0gJnAtPm5leHQ7CisJCQlwID0gcC0+bmV4dDsKKwkJfQorCX0gd2hpbGUgKHN3YXBwZWQpOworfQorCitzdGF0aWMgdm9pZCBzb3J0X2RldmljZXModm9pZCkKK3sKKwlzdHJ1Y3QgdXNiYnVzbm9kZSAqYiA9IHVzYmJ1c2xpc3Q7CisJd2hpbGUgKGIpIHsKKwkJaWYgKGItPmZpcnN0X2NoaWxkKQorCQkJc29ydF9kZXZfc2libGluZ3MoJmItPmZpcnN0X2NoaWxkKTsKKwkJYiA9IGItPm5leHQ7CisJfQorfQorCitzdGF0aWMgdm9pZCBzb3J0X2J1c3Nlcyh2b2lkKQoreworCS8qIG5lZWQgdG8gcmV2ZXJzZSBzb3J0IGJ1cyBudW1iZXJzICovCisJc3RydWN0IHVzYmJ1c25vZGUgKnQsICpwLCAqKnBwOworCWludCBzd2FwcGVkOworCWRvIHsKKwkJcCA9IHVzYmJ1c2xpc3Q7CisJCXBwID0gJnVzYmJ1c2xpc3Q7CisJCXN3YXBwZWQgPSAwOworCQl3aGlsZSAocC0+bmV4dCkgeworCQkJaWYgKHAtPmJ1c251bSA8IHAtPm5leHQtPmJ1c251bSkgeworCQkJCXQgPSBwLT5uZXh0OworCQkJCXAtPm5leHQgPSB0LT5uZXh0OworCQkJCXQtPm5leHQgPSBwOworCQkJCSpwcCA9IHQ7CisJCQkJc3dhcHBlZCA9IDE7CisJCQkJcCA9IHQ7CisJCQl9CisJCQlwcCA9ICZwLT5uZXh0OworCQkJcCA9IHAtPm5leHQ7CisJCX0KKwl9IHdoaWxlIChzd2FwcGVkKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdHJlZV9kZXZfaW50ZXJmYWNlKHN0cnVjdCB1c2JkZXZpY2UgKmQsIHN0cnVjdCB1c2JpbnRlcmZhY2UgKmkpCit7CisJaW5kZW50ICs9IDM7CisJd2hpbGUgKGkpIHsKKwkJcHJpbnRmKCIgJSpzIiwgaW5kZW50LCAifF9fICIpOworCQlwcmludF91c2JkZXZpY2UoZCwgaSk7CisJCWkgPSBpLT5uZXh0OworCX0KKwlpbmRlbnQgLT0gMzsKK30KK3N0YXRpYyB2b2lkIHByaW50X3RyZWVfZGV2X2NoaWxkcmVuKHN0cnVjdCB1c2JkZXZpY2UgKmQpCit7CisJaW5kZW50ICs9IDQ7CisJd2hpbGUgKGQpIHsKKwkJcHJpbnRfdHJlZV9kZXZfaW50ZXJmYWNlKGQsIGQtPmZpcnN0X2ludGVyZmFjZSk7CisJCXByaW50X3RyZWVfZGV2X2NoaWxkcmVuKGQtPmZpcnN0X2NoaWxkKTsKKwkJZCA9IGQtPm5leHQ7CisJfQorCWluZGVudCAtPSA0OworfQorCitzdGF0aWMgdm9pZCBwcmludF90cmVlKHZvaWQpCit7CisJc3RydWN0IHVzYmJ1c25vZGUgKmIgPSB1c2JidXNsaXN0OworCXdoaWxlIChiKSB7CisJCXByaW50X3VzYmJ1c25vZGUoYik7CisJCWlmIChiLT5maXJzdF9jaGlsZCkKKwkJCXByaW50X3RyZWVfZGV2X2NoaWxkcmVuKGItPmZpcnN0X2NoaWxkKTsKKwkJYiA9IGItPm5leHQ7CisJfQorfQorCitpbnQgbHN1c2JfdCh2b2lkKQoreworCURJUiAqc2J1ZCA9IG9wZW5kaXIoc3lzX2J1c191c2JfZGV2aWNlcyk7CisJaWYgKHNidWQpIHsKKwkJd2Fsa191c2JfZGV2aWNlcyhzYnVkKTsKKwkJY2xvc2VkaXIoc2J1ZCk7CisJCWNvbm5lY3RfZGV2aWNlcygpOworCQlzb3J0X2RldmljZXMoKTsKKwkJc29ydF9idXNzZXMoKTsKKwkJcHJpbnRfdHJlZSgpOworCX0gZWxzZQorCQlwZXJyb3Ioc3lzX2J1c191c2JfZGV2aWNlcyk7CisJcmV0dXJuIHNidWQgPT0gTlVMTDsKK30KZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvbHN1c2IuOC5pbiBiL3VzYnV0aWxzLTAuODYvbHN1c2IuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzgxNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9sc3VzYi44LmluCkBAIC0wLDAgKzEsNjcgQEAKKy5USCBsc3VzYiA4ICI2IE1heSAyMDA5IiAidXNidXRpbHMtVkVSU0lPTiIgIkxpbnV4IFVTQiBVdGlsaXRpZXMiCisuSVggbHN1c2IKKy5TSCBOQU1FCitsc3VzYiBcLSBsaXN0IFVTQiBkZXZpY2VzCisuU0ggU1lOT1BTSVMKKy5CIGxzdXNiCitbCisuSSBvcHRpb25zCitdCisuU0ggREVTQ1JJUFRJT04KKy5CIGxzdXNiCitpcyBhIHV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQgVVNCIGJ1c2VzIGluIHRoZSBzeXN0ZW0gYW5kCit0aGUgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlbS4KKworLlNIIE9QVElPTlMKKy5UUAorLkIgXC12LCBcLVwtdmVyYm9zZQorVGVsbHMKKy5JIGxzdXNiCit0byBiZSB2ZXJib3NlIGFuZCBkaXNwbGF5IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2VzIHNob3duLgorVGhpcyBpbmNsdWRlcyBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3JzIGZvciB0aGUgZGV2aWNlJ3MgY3VycmVudCBzcGVlZC4KK0NsYXNzIGRlc2NyaXB0b3JzIHdpbGwgYmUgc2hvd24sIHdoZW4gYXZhaWxhYmxlLCBmb3IgVVNCIGRldmljZSBjbGFzc2VzCitpbmNsdWRpbmcgaHViLCBhdWRpbywgSElELCBjb21tdW5pY2F0aW9ucywgYW5kIGNoaXBjYXJkLgorLlRQCitcZkJcLXNcZlAgW1tcZklidXNcZlBdXGZCOlxmUF1bXGZJZGV2bnVtXGZQXQorU2hvdyBvbmx5IGRldmljZXMgaW4gc3BlY2lmaWVkCisuSSBidXMKK2FuZC9vcgorLkkgZGV2bnVtLgorQm90aCBJRCdzIGFyZSBnaXZlbiBpbiBkZWNpbWFsIGFuZCBtYXkgYmUgb21pdHRlZC4KKy5UUAorXGZCXC1kXGZQIFtcZkl2ZW5kb3JcZlBdXGZCOlxmUFtcZklwcm9kdWN0XGZQXQorU2hvdyBvbmx5IGRldmljZXMgd2l0aCB0aGUgc3BlY2lmaWVkIHZlbmRvciBhbmQgcHJvZHVjdCBJRC4KK0JvdGggSUQncyBhcmUgZ2l2ZW4gaW4gaGV4YWRlY2ltYWwuCisuVFAKKy5CIFwtRCBcZklkZXZpY2VcZlAKK0RvIG5vdCBzY2FuIHRoZSAvZGV2L2J1cy91c2IgZGlyZWN0b3J5LAoraW5zdGVhZCBkaXNwbGF5IG9ubHkgaW5mb3JtYXRpb24KK2Fib3V0IHRoZSBkZXZpY2Ugd2hvc2UgZGV2aWNlIGZpbGUgaXMgZ2l2ZW4uCitUaGUgZGV2aWNlIGZpbGUgc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlIC9kZXYvYnVzL3VzYi8wMDEvMDAxLgorVGhpcyBvcHRpb24gZGlzcGxheXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gbGlrZSB0aGUgXGZCdlxmUCBvcHRpb247Cit5b3UgbXVzdCBiZSByb290IHRvIGRvIHRoaXMuCisuVFAKKy5CIFwtdAorVGVsbHMKKy5JIGxzdXNiCit0byBkdW1wIHRoZSBwaHlzaWNhbCBVU0IgZGV2aWNlIGhpZXJhcmNoeSBhcyBhIHRyZWUuIFRoaXMgb3ZlcnJpZGVzIHRoZQorXGZCdlxmUCBvcHRpb24uCisuVFAKKy5CIFwtViwgXC1cLXZlcnNpb24KK1ByaW50ICB2ZXJzaW9uIGluZm9ybWF0aW9uIG9uIHN0YW5kYXJkIG91dHB1dCwKK3RoZW4gZXhpdCBzdWNjZXNzZnVsbHkuCisKKy5TSCBSRVRVUk4gVkFMVUUKK0lmIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzIG5vdCBmb3VuZCwgYSBub24temVybyBleGl0IGNvZGUgaXMgcmV0dXJuZWQuCisKKy5TSCBGSUxFUworLlRQCisuQiBAdXNiaWRzQAorQSBsaXN0IG9mIGFsbCBrbm93biBVU0IgSUQncyAodmVuZG9ycywgcHJvZHVjdHMsIGNsYXNzZXMsIHN1YmNsYXNzZXMgYW5kIHByb3RvY29scykuCisKKy5TSCBTRUUgQUxTTworLkJSIGxzcGNpICg4KSwKKy5CUiB1c2J2aWV3ICg4KS4KKworLlNIIEFVVEhPUgorVGhvbWFzIFNhaWxlciwgPHNhaWxlckBpZmUuZWUuZXRoei5jaD4uCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L2xzdXNiLmMgYi91c2J1dGlscy0wLjg2L2xzdXNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlMmYwNgotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvbHN1c2IuYwpAQCAtMCwwICsxLDMwNzkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqICAgICAgbHN1c2IuYyAgLS0gIGxzcGNpIGxpa2UgdXRpbGl0eSBmb3IgdGhlIFVTQiBidXMKKyAqCisgKiAgICAgIENvcHlyaWdodCAoQykgMTk5OS0yMDAxLCAyMDAzCisgKiAgICAgICAgVGhvbWFzIFNhaWxlciAodC5zYWlsZXJAYWx1bW5pLmV0aHouY2gpCisgKiAgICAgIENvcHlyaWdodCAoQykgMjAwMy0yMDA1IERhdmlkIEJyb3duZWxsCisgKgorICogICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyNpbmNsdWRlIDx1c2IuaD4KKworI2luY2x1ZGUgIm5hbWVzLmgiCisjaW5jbHVkZSAiZGV2dHJlZS5oIgorI2luY2x1ZGUgInVzYm1pc2MuaCIKKworI2luY2x1ZGUgPGdldG9wdC5oPgorCisjaWYgKF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCisgICNkZWZpbmUgbGUxNl90b19jcHUoeCkgKHgpCisjZWxpZiAoX19CWVRFX09SREVSID09IF9fQklHX0VORElBTikKKyAgI2RlZmluZSBsZTE2X3RvX2NwdSh4KSBic3dhcF8xNih4KQorI2Vsc2UKKyAgI2Vycm9yIG1pc3NpbmcgQllURV9PUkRFUgorI2VuZGlmCisKKy8qIGZyb20gVVNCIDIuMCBzcGVjIGFuZCB1cGRhdGVzICovCisjZGVmaW5lIFVTQl9EVF9ERVZJQ0VfUVVBTElGSUVSCQkweDA2CisjZGVmaW5lIFVTQl9EVF9PVEhFUl9TUEVFRF9DT05GSUcJMHgwNworI2RlZmluZSBVU0JfRFRfT1RHCQkJMHgwOQorI2RlZmluZSBVU0JfRFRfREVCVUcJCQkweDBhCisjZGVmaW5lIFVTQl9EVF9JTlRFUkZBQ0VfQVNTT0NJQVRJT04JMHgwYgorI2RlZmluZSBVU0JfRFRfU0VDVVJJVFkJCQkweDBjCisjZGVmaW5lIFVTQl9EVF9LRVkJCQkweDBkCisjZGVmaW5lIFVTQl9EVF9FTkNSWVBUSU9OX1RZUEUJCTB4MGUKKyNkZWZpbmUgVVNCX0RUX0JPUwkJCTB4MGYKKyNkZWZpbmUgVVNCX0RUX0RFVklDRV9DQVBBQklMSVRZCTB4MTAKKyNkZWZpbmUgVVNCX0RUX1dJUkVMRVNTX0VORFBPSU5UX0NPTVAJMHgxMQorI2RlZmluZSBVU0JfRFRfV0lSRV9BREFQVEVSCQkweDIxCisjZGVmaW5lIFVTQl9EVF9SUElQRQkJCTB4MjIKKworI2RlZmluZSBVU0JfRFRfUkNfSU5URVJGQUNFCQkweDIzCisKKy8qIENvbnZlbnRpb25hbCBjb2RlcyBmb3IgY2xhc3Mtc3BlY2lmaWMgZGVzY3JpcHRvcnMuICBUaGUgY29udmVudGlvbiBpcworICogZGVmaW5lZCBpbiB0aGUgVVNCICJDb21tb24gQ2xhc3MiIFNwZWMgKDMuMTEpLiAgSW5kaXZpZHVhbCBjbGFzcyBzcGVjcworICogYXJlIGF1dGhvcml0YXRpdmUgZm9yIHRoZWlyIHVzYWdlLCBub3QgdGhlICJjb21tb24gY2xhc3MiIHdyaXRldXAuCisgKi8KKyNkZWZpbmUgVVNCX0RUX0NTX0RFVklDRQkJKFVTQl9UWVBFX0NMQVNTIHwgVVNCX0RUX0RFVklDRSkKKyNkZWZpbmUgVVNCX0RUX0NTX0NPTkZJRwkJKFVTQl9UWVBFX0NMQVNTIHwgVVNCX0RUX0NPTkZJRykKKyNkZWZpbmUgVVNCX0RUX0NTX1NUUklORwkJKFVTQl9UWVBFX0NMQVNTIHwgVVNCX0RUX1NUUklORykKKyNkZWZpbmUgVVNCX0RUX0NTX0lOVEVSRkFDRQkJKFVTQl9UWVBFX0NMQVNTIHwgVVNCX0RUX0lOVEVSRkFDRSkKKyNkZWZpbmUgVVNCX0RUX0NTX0VORFBPSU5UCQkoVVNCX1RZUEVfQ0xBU1MgfCBVU0JfRFRfRU5EUE9JTlQpCisKKworI2lmbmRlZiBVU0JfQ0xBU1NfVklERU8KKyNkZWZpbmUgVVNCX0NMQVNTX1ZJREVPCQkJMHgwZQorI2VuZGlmCisKKyNpZm5kZWYgVVNCX0NMQVNTX0FQUExJQ0FUSU9OCisjZGVmaW5lIFVTQl9DTEFTU19BUFBMSUNBVElPTgkgICAgICAgCTB4ZmUKKyNlbmRpZgorCisjZGVmaW5lIFZFUkJMRVZFTF9ERUZBVUxUIDAJLyogMCBnaXZlcyBsc3BjaSBiZWhhdmlvdXI7IDEsIGxzdXNiLTAuOSAqLworCisjZGVmaW5lIENUUkxfUkVUUklFUwkgMgorI2RlZmluZSBDVFJMX1RJTUVPVVQJKDUqMTAwMCkJLyogbWlsbGlzZWNvbmRzICovCisKKyNkZWZpbmUJSFVCX1NUQVRVU19CWVRFTEVOCTMJLyogbWF4IDMgYnl0ZXMgc3RhdHVzID0gaHViICsgMjMgcG9ydHMgKi8KKworZXh0ZXJuIGludCBsc3VzYl90KHZvaWQpOworc3RhdGljIGNvbnN0IGNoYXIgKnByb2NidXN1c2IgPSAiL3Byb2MvYnVzL3VzYiI7CitzdGF0aWMgdW5zaWduZWQgaW50IHZlcmJsZXZlbCA9IFZFUkJMRVZFTF9ERUZBVUxUOworc3RhdGljIGludCBkb19yZXBvcnRfZGVzYyA9IDE7CitzdGF0aWMgY29uc3QgY2hhciAqZW5jcnlwdGlvbl90eXBlW10gPSB7IlVOU0VDVVJFIiwgIldJUkVEIiwgIkNDTV8xIiwgIlJTQV8xIiwgIlJFU0VSVkVEIn07CisKK3N0YXRpYyB2b2lkIGR1bXBfaW50ZXJmYWNlKHN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKTsKK3N0YXRpYyB2b2lkIGR1bXBfZW5kcG9pbnQoc3RydWN0IHVzYl9kZXZfaGFuZGxlICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgKmludGVyZmFjZSwgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludCk7CitzdGF0aWMgdm9pZCBkdW1wX2F1ZGlvY29udHJvbF9pbnRlcmZhY2Uoc3RydWN0IHVzYl9kZXZfaGFuZGxlICpkZXYsIHVuc2lnbmVkIGNoYXIgKmJ1Zik7CitzdGF0aWMgdm9pZCBkdW1wX2F1ZGlvc3RyZWFtaW5nX2ludGVyZmFjZSh1bnNpZ25lZCBjaGFyICpidWYpOworc3RhdGljIHZvaWQgZHVtcF9taWRpc3RyZWFtaW5nX2ludGVyZmFjZShzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmKTsKK3N0YXRpYyB2b2lkIGR1bXBfdmlkZW9jb250cm9sX2ludGVyZmFjZShzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmKTsKK3N0YXRpYyB2b2lkIGR1bXBfdmlkZW9zdHJlYW1pbmdfaW50ZXJmYWNlKHVuc2lnbmVkIGNoYXIgKmJ1Zik7CitzdGF0aWMgdm9pZCBkdW1wX2RmdV9pbnRlcmZhY2UodW5zaWduZWQgY2hhciAqYnVmKTsKK3N0YXRpYyBjaGFyICpkdW1wX2NvbW1fZGVzY3JpcHRvcihzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmLCBjaGFyICppbmRlbnQpOworc3RhdGljIHZvaWQgZHVtcF9oaWRfZGV2aWNlKHN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yICppbnRlcmZhY2UsIHVuc2lnbmVkIGNoYXIgKmJ1Zik7CitzdGF0aWMgdm9pZCBkdW1wX2F1ZGlvc3RyZWFtaW5nX2VuZHBvaW50KHVuc2lnbmVkIGNoYXIgKmJ1Zik7CitzdGF0aWMgdm9pZCBkdW1wX21pZGlzdHJlYW1pbmdfZW5kcG9pbnQodW5zaWduZWQgY2hhciAqYnVmKTsKK3N0YXRpYyB2b2lkIGR1bXBfaHViKGNoYXIgKnByZWZpeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGhhc190dCk7CitzdGF0aWMgdm9pZCBkdW1wX2NjaWRfZGV2aWNlKHVuc2lnbmVkIGNoYXIgKmJ1Zik7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIHVuc2lnbmVkIGludCBjb252ZXJ0X2xlX3UzMiAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXJldHVybiBidWZbMF0gfCAoYnVmWzFdIDw8IDgpIHwgKGJ1ZlsyXSA8PCAxNikgfCAoYnVmWzNdIDw8IDI0KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiB3b3JrYXJvdW5kIGxpYnVzYiBBUEkgZ29vZnM6ICAiYnl0ZSIgc2hvdWxkIG5ldmVyIGJlIHNpZ24gZXh0ZW5kZWQ7CisgKiB1c2luZyAiY2hhciIgaXMgdHJvdWJsZS4gIExpa2V3aXNlLCBzaXplcyBzaG91bGQgbmV2ZXIgYmUgbmVnYXRpdmUuCisgKi8KKworc3RhdGljIGlubGluZSBpbnQgdHlwZXNhZmVfY29udHJvbF9tc2codXNiX2Rldl9oYW5kbGUgKmRldiwKKwl1bnNpZ25lZCBjaGFyIHJlcXVlc3R0eXBlLCB1bnNpZ25lZCBjaGFyIHJlcXVlc3QsCisJaW50IHZhbHVlLCBpbnQgaW5kZXgsCisJdW5zaWduZWQgY2hhciAqYnl0ZXMsIHVuc2lnbmVkIHNpemUsIGludCB0aW1lb3V0KQoreworCXJldHVybiB1c2JfY29udHJvbF9tc2coZGV2LCByZXF1ZXN0dHlwZSwgcmVxdWVzdCwgdmFsdWUsIGluZGV4LAorCQkoY2hhciAqKSBieXRlcywgKGludCkgc2l6ZSwgdGltZW91dCk7Cit9CisKKyNkZWZpbmUgdXNiX2NvbnRyb2xfbXNnCQl0eXBlc2FmZV9jb250cm9sX21zZworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBscHJpbnRmKHVuc2lnbmVkIGludCB2bCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKwlpbnQgcjsKKworCWlmICh2bCA+IHZlcmJsZXZlbCkKKwkJcmV0dXJuIDA7CisJdmFfc3RhcnQoYXAsIGZvcm1hdCk7CisJciA9IHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcCk7CisJdmFfZW5kKGFwKTsKKwlpZiAoIXZsKQorCQlleGl0KDEpOworCXJldHVybiByOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBpbnQgZ2V0X3N0cmluZyhzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgY2hhciogYnVmLCBzaXplX3Qgc2l6ZSwgdV9pbnQ4X3QgaWQpCit7CisJaW50IHJldDsKKworCWlmICghZGV2KSB7CisJCWJ1ZlswXSA9IDA7CisJCXJldHVybiAwOworCX0KKworCWlmIChpZCkgeworCQlyZXQgPSB1c2JfZ2V0X3N0cmluZ19zaW1wbGUoZGV2LCBpZCwgYnVmLCBzaXplKTsKKwkJaWYgKHJldCA8PSAwKSB7CisJCQlidWZbMF0gPSAwOworCQkJcmV0dXJuIDA7CisJCX0KKwkJZWxzZQorCQkJcmV0dXJuIHJldDsKKworCX0KKwllbHNlIHsKKwkJYnVmWzBdID0gMDsKKwkJcmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMgaW50IGdldF92ZW5kb3Jfc3RyaW5nKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHVfaW50MTZfdCB2aWQpCit7CisJY29uc3QgY2hhciAqY3A7CisKKwlpZiAoc2l6ZSA8IDEpCisJCXJldHVybiAwOworCSpidWYgPSAwOworCWlmICghKGNwID0gbmFtZXNfdmVuZG9yKHZpZCkpKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gc25wcmludGYoYnVmLCBzaXplLCAiJXMiLCBjcCk7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X3Byb2R1Y3Rfc3RyaW5nKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHVfaW50MTZfdCB2aWQsIHVfaW50MTZfdCBwaWQpCit7CisJY29uc3QgY2hhciAqY3A7CisKKwlpZiAoc2l6ZSA8IDEpCisJCXJldHVybiAwOworCSpidWYgPSAwOworCWlmICghKGNwID0gbmFtZXNfcHJvZHVjdCh2aWQsIHBpZCkpKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gc25wcmludGYoYnVmLCBzaXplLCAiJXMiLCBjcCk7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X2NsYXNzX3N0cmluZyhjaGFyICpidWYsIHNpemVfdCBzaXplLCB1X2ludDhfdCBjbHMpCit7CisJY29uc3QgY2hhciAqY3A7CisKKwlpZiAoc2l6ZSA8IDEpCisJCXJldHVybiAwOworCSpidWYgPSAwOworCWlmICghKGNwID0gbmFtZXNfY2xhc3MoY2xzKSkpCisJCXJldHVybiAwOworCXJldHVybiBzbnByaW50ZihidWYsIHNpemUsICIlcyIsIGNwKTsKK30KKworc3RhdGljIGludCBnZXRfc3ViY2xhc3Nfc3RyaW5nKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHVfaW50OF90IGNscywgdV9pbnQ4X3Qgc3ViY2xzKQoreworCWNvbnN0IGNoYXIgKmNwOworCisJaWYgKHNpemUgPCAxKQorCQlyZXR1cm4gMDsKKwkqYnVmID0gMDsKKwlpZiAoIShjcCA9IG5hbWVzX3N1YmNsYXNzKGNscywgc3ViY2xzKSkpCisJCXJldHVybiAwOworCXJldHVybiBzbnByaW50ZihidWYsIHNpemUsICIlcyIsIGNwKTsKK30KKworc3RhdGljIGludCBnZXRfcHJvdG9jb2xfc3RyaW5nKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHVfaW50OF90IGNscywgdV9pbnQ4X3Qgc3ViY2xzLCB1X2ludDhfdCBwcm90bykKK3sKKwljb25zdCBjaGFyICpjcDsKKworCWlmIChzaXplIDwgMSkKKwkJcmV0dXJuIDA7CisJKmJ1ZiA9IDA7CisJaWYgKCEoY3AgPSBuYW1lc19wcm90b2NvbChjbHMsIHN1YmNscywgcHJvdG8pKSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVzIiwgY3ApOworfQorCitzdGF0aWMgaW50IGdldF9hdWRpb3Rlcm1pbmFsX3N0cmluZyhjaGFyICpidWYsIHNpemVfdCBzaXplLCB1X2ludDE2X3QgdGVybXQpCit7CisJY29uc3QgY2hhciAqY3A7CisKKwlpZiAoc2l6ZSA8IDEpCisJCXJldHVybiAwOworCSpidWYgPSAwOworCWlmICghKGNwID0gbmFtZXNfYXVkaW90ZXJtaW5hbCh0ZXJtdCkpKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gc25wcmludGYoYnVmLCBzaXplLCAiJXMiLCBjcCk7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X3ZpZGVvdGVybWluYWxfc3RyaW5nKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHVfaW50MTZfdCB0ZXJtdCkKK3sKKwljb25zdCBjaGFyICpjcDsKKworCWlmIChzaXplIDwgMSkKKwkJcmV0dXJuIDA7CisJKmJ1ZiA9IDA7CisJaWYgKCEoY3AgPSBuYW1lc192aWRlb3Rlcm1pbmFsKHRlcm10KSkpCisJCXJldHVybiAwOworCXJldHVybiBzbnByaW50ZihidWYsIHNpemUsICIlcyIsIGNwKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmdldF9ndWlkKHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdGF0aWMgY2hhciBndWlkWzM5XTsKKworCS8qIE5PVEU6ICBzZWUgUkZDIDQxMjIgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgR1VJRC9VVUlECisJICogc3RydWN0dXJlLiAgVGhlIGZpcnN0IGZpZWxkcyBmaWVsZHMgYXJlIGhpc3RvcmljYWxseSBiaWcKKwkgKiBlbmRpYW4gbnVtYmVycywgZGF0aW5nIGZyb20gQXBvbGxvIG1jNjgwMDAgd29ya3N0YXRpb25zLgorCSAqLworCXNwcmludGYoZ3VpZCwgInslMDJ4JTAyeCUwMnglMDJ4IgorCQkJIi0lMDJ4JTAyeCIKKwkJCSItJTAyeCUwMngiCisJCQkiLSUwMnglMDJ4IgorCQkJIi0lMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnh9IiwKKwkgICAgICAgYnVmWzBdLCBidWZbMV0sIGJ1ZlsyXSwgYnVmWzNdLAorCSAgICAgICBidWZbNF0sIGJ1Zls1XSwKKwkgICAgICAgYnVmWzZdLCBidWZbN10sCisJICAgICAgIGJ1Zls4XSwgYnVmWzldLAorCSAgICAgICBidWZbMTBdLCBidWZbMTFdLCBidWZbMTJdLCBidWZbMTNdLCBidWZbMTRdLCBidWZbMTVdKTsKKwlyZXR1cm4gZ3VpZDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgdm9pZCBkdW1wX2J5dGVzKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKwkJcHJpbnRmKCIgJTAyeCIsIGJ1ZltpXSk7CisJcHJpbnRmKCJcbiIpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2p1bmsodW5zaWduZWQgY2hhciAqYnVmLCBjb25zdCBjaGFyICppbmRlbnQsIHVuc2lnbmVkIGludCBsZW4pCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlpZiAoYnVmWzBdIDw9IGxlbikKKwkJcmV0dXJuOworCXByaW50ZigiJXNqdW5rIGF0IGRlc2NyaXB0b3IgZW5kOiIsIGluZGVudCk7CisJZm9yIChpID0gbGVuOyBpIDwgYnVmWzBdOyBpKyspCisJCXByaW50ZigiICUwMngiLCBidWZbaV0pOworCXByaW50ZigiXG4iKTsKK30KKworLyoKKyAqIEdlbmVyYWwgY29uZmlnIGRlc2NyaXB0b3IgZHVtcAorICovCisKK3N0YXRpYyB2b2lkIGR1bXBfZGV2aWNlKAorCXN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZGV2LAorCXN0cnVjdCB1c2JfZGV2aWNlX2Rlc2NyaXB0b3IgKmRlc2NyaXB0b3IKKykKK3sKKwljaGFyIHZlbmRvclsxMjhdLCBwcm9kdWN0WzEyOF07CisJY2hhciBjbHNbMTI4XSwgc3ViY2xzWzEyOF0sIHByb3RvWzEyOF07CisJY2hhciBtZmdbMTI4XSwgcHJvZFsxMjhdLCBzZXJpYWxbMTI4XTsKKworCWdldF92ZW5kb3Jfc3RyaW5nKHZlbmRvciwgc2l6ZW9mKHZlbmRvciksIGRlc2NyaXB0b3ItPmlkVmVuZG9yKTsKKwlnZXRfcHJvZHVjdF9zdHJpbmcocHJvZHVjdCwgc2l6ZW9mKHByb2R1Y3QpLAorCQkJZGVzY3JpcHRvci0+aWRWZW5kb3IsIGRlc2NyaXB0b3ItPmlkUHJvZHVjdCk7CisJZ2V0X2NsYXNzX3N0cmluZyhjbHMsIHNpemVvZihjbHMpLCBkZXNjcmlwdG9yLT5iRGV2aWNlQ2xhc3MpOworCWdldF9zdWJjbGFzc19zdHJpbmcoc3ViY2xzLCBzaXplb2Yoc3ViY2xzKSwKKwkJCWRlc2NyaXB0b3ItPmJEZXZpY2VDbGFzcywgZGVzY3JpcHRvci0+YkRldmljZVN1YkNsYXNzKTsKKwlnZXRfcHJvdG9jb2xfc3RyaW5nKHByb3RvLCBzaXplb2YocHJvdG8pLCBkZXNjcmlwdG9yLT5iRGV2aWNlQ2xhc3MsCisJCQlkZXNjcmlwdG9yLT5iRGV2aWNlU3ViQ2xhc3MsIGRlc2NyaXB0b3ItPmJEZXZpY2VQcm90b2NvbCk7CisJZ2V0X3N0cmluZyhkZXYsIG1mZywgc2l6ZW9mKG1mZyksIGRlc2NyaXB0b3ItPmlNYW51ZmFjdHVyZXIpOworCWdldF9zdHJpbmcoZGV2LCBwcm9kLCBzaXplb2YocHJvZCksIGRlc2NyaXB0b3ItPmlQcm9kdWN0KTsKKwlnZXRfc3RyaW5nKGRldiwgc2VyaWFsLCBzaXplb2Yoc2VyaWFsKSwgZGVzY3JpcHRvci0+aVNlcmlhbE51bWJlcik7CisJcHJpbnRmKCJEZXZpY2UgRGVzY3JpcHRvcjpcbiIKKwkgICAgICAgIiAgYkxlbmd0aCAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgYkRlc2NyaXB0b3JUeXBlICAgICAlNXVcbiIKKwkgICAgICAgIiAgYmNkVVNCICAgICAgICAgICAgICAlMnguJTAyeFxuIgorCSAgICAgICAiICBiRGV2aWNlQ2xhc3MgICAgICAgICU1dSAlc1xuIgorCSAgICAgICAiICBiRGV2aWNlU3ViQ2xhc3MgICAgICU1dSAlc1xuIgorCSAgICAgICAiICBiRGV2aWNlUHJvdG9jb2wgICAgICU1dSAlc1xuIgorCSAgICAgICAiICBiTWF4UGFja2V0U2l6ZTAgICAgICU1dVxuIgorCSAgICAgICAiICBpZFZlbmRvciAgICAgICAgICAgMHglMDR4ICVzXG4iCisJICAgICAgICIgIGlkUHJvZHVjdCAgICAgICAgICAweCUwNHggJXNcbiIKKwkgICAgICAgIiAgYmNkRGV2aWNlICAgICAgICAgICAlMnguJTAyeFxuIgorCSAgICAgICAiICBpTWFudWZhY3R1cmVyICAgICAgICU1dSAlc1xuIgorCSAgICAgICAiICBpUHJvZHVjdCAgICAgICAgICAgICU1dSAlc1xuIgorCSAgICAgICAiICBpU2VyaWFsICAgICAgICAgICAgICU1dSAlc1xuIgorCSAgICAgICAiICBiTnVtQ29uZmlndXJhdGlvbnMgICU1dVxuIiwKKwkgICAgICAgZGVzY3JpcHRvci0+Ykxlbmd0aCwgZGVzY3JpcHRvci0+YkRlc2NyaXB0b3JUeXBlLAorCSAgICAgICBkZXNjcmlwdG9yLT5iY2RVU0IgPj4gOCwgZGVzY3JpcHRvci0+YmNkVVNCICYgMHhmZiwKKwkgICAgICAgZGVzY3JpcHRvci0+YkRldmljZUNsYXNzLCBjbHMsCisJICAgICAgIGRlc2NyaXB0b3ItPmJEZXZpY2VTdWJDbGFzcywgc3ViY2xzLAorCSAgICAgICBkZXNjcmlwdG9yLT5iRGV2aWNlUHJvdG9jb2wsIHByb3RvLAorCSAgICAgICBkZXNjcmlwdG9yLT5iTWF4UGFja2V0U2l6ZTAsCisJICAgICAgIGRlc2NyaXB0b3ItPmlkVmVuZG9yLCB2ZW5kb3IsIGRlc2NyaXB0b3ItPmlkUHJvZHVjdCwgcHJvZHVjdCwKKwkgICAgICAgZGVzY3JpcHRvci0+YmNkRGV2aWNlID4+IDgsIGRlc2NyaXB0b3ItPmJjZERldmljZSAmIDB4ZmYsCisJICAgICAgIGRlc2NyaXB0b3ItPmlNYW51ZmFjdHVyZXIsIG1mZywKKwkgICAgICAgZGVzY3JpcHRvci0+aVByb2R1Y3QsIHByb2QsCisJICAgICAgIGRlc2NyaXB0b3ItPmlTZXJpYWxOdW1iZXIsIHNlcmlhbCwKKwkgICAgICAgZGVzY3JpcHRvci0+Yk51bUNvbmZpZ3VyYXRpb25zKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF93aXJlX2FkYXB0ZXIodW5zaWduZWQgY2hhciAqYnVmKQoreworCisJcHJpbnRmKCAiICAgICAgV2lyZSBBZGFwdGVyIENsYXNzIERlc2NyaXB0b3I6XG4iCisJCSIgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJCSIgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJCSIgICAgICAgIGJjZFdBVmVyc2lvbiAgICAgICAgJTJ4LiUwMnhcbiIKKwkJIgkgYk51bVBvcnRzCSAgICAgJTV1XG4iCisJCSIJIGJtQXR0cmlidXRlcwkgICAgICU1dVxuIgorCQkiCSB3TnVtUlBSaXBlcwkgICAgICU1dVxuIgorCQkiCSB3UlBpcGVNYXhCbG9jawkgICAgICU1dVxuIgorCQkiCSBiUlBpcGVCbG9ja1NpemUgICAgICU1dVxuIgorCQkiCSBiUHdyT24yUHdyR29vZAkgICAgICU1dVxuIgorCQkiCSBiTnVtTU1DSUVzCSAgICAgJTV1XG4iCisJCSIJIERldmljZVJlbW92YWJsZSAgICAgJTV1XG4iLAorCQlidWZbMF0sIGJ1ZlsxXSwgYnVmWzNdLAorCQlidWZbMl0sIGJ1Zls0XSwgYnVmWzVdLAorCQkoIGJ1Zls2XSB8IGJ1Zls3XSA8PCA4ICksCisJCSggYnVmWzhdIHwgYnVmWzldIDw8IDggKSwKKwkJYnVmWzEwXSwgYnVmWzExXSwgYnVmWzEyXSwgYnVmWzEzXSk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfcmNfaW50ZXJmYWNlKHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlwcmludGYoICIgICAgICBSYWRpbyBDb250cm9sIEludGVyZmFjZSBDbGFzcyBEZXNjcmlwdG9yOlxuIgorCQkiICAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICU1dVxuIgorCQkiICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICU1dVxuIgorCQkiICAgICAgICBiY2RSQ0lWZXJzaW9uICAgICAgICUyeC4lMDJ4XG4iLAorCQlidWZbMF0sIGJ1ZlsxXSwgYnVmWzNdLCBidWZbMl0pOworCit9CisKK3N0YXRpYyB2b2lkIGR1bXBfc2VjdXJpdHkodW5zaWduZWQgY2hhciAqYnVmKQoreworCXByaW50ZiggIiAgICBTZWN1cml0eSBEZXNjcmlwdG9yOlxuIgorCQkiICAgICAgYkxlbmd0aCAgICAgICAgICAgICAlNXVcbiIKKwkJIiAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJCSIgICAgICB3VG90YWxMZW5ndGggICAgICAgICU1dVxuIgorCQkiICAgICAgYk51bUVuY3J5cHRpb25UeXBlcyAlNXVcbiIsCisJCWJ1ZlswXSwgYnVmWzFdLAorCQkoYnVmWzNdPDwgOCB8IGJ1ZlsyXSksCisJCWJ1Zls0XSk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfZW5jcnlwdGlvbl90eXBlKHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlpbnQgYl9lbmNyeXB0aW9uX3R5cGUgPSBidWZbMl0gJiAweDQ7CisKKwlwcmludGYoICIgICAgRW5jcnlwdGlvbiBUeXBlIERlc2NyaXB0b3I6XG4iCisJCSIgICAgICBiTGVuZ3RoICAgICAgICAgICAgICU1dVxuIgorCQkiICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAlNXVcbiIKKwkJIiAgICAgIGJFbmNyeXB0aW9uVHlwZSAgICAgJTV1ICVzXG4iCisJCSIgICAgICBiRW5jcnlwdGlvblZhbHVlICAgICU1dVxuIgorCQkiICAgICAgYkF1dGhLZXlJbmRleCAgICAgICAlNXVcbiIsCisJCWJ1ZlswXSwgYnVmWzFdLAorCQlidWZbMl0sIGVuY3J5cHRpb25fdHlwZVtiX2VuY3J5cHRpb25fdHlwZV0sCisJCWJ1ZlszXSwgYnVmWzRdKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9hc3NvY2lhdGlvbihzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmKQoreworCWNoYXIgY2xzWzEyOF0sIHN1YmNsc1sxMjhdLCBwcm90b1sxMjhdOworCWNoYXIgZnVuY1sxMjhdOworCisJZ2V0X2NsYXNzX3N0cmluZyhjbHMsIHNpemVvZihjbHMpLCBidWZbNF0pOworCWdldF9zdWJjbGFzc19zdHJpbmcoc3ViY2xzLCBzaXplb2Yoc3ViY2xzKSwgYnVmWzRdLCBidWZbNV0pOworCWdldF9wcm90b2NvbF9zdHJpbmcocHJvdG8sIHNpemVvZihwcm90byksIGJ1Zls0XSwgYnVmWzVdLCBidWZbNl0pOworCWdldF9zdHJpbmcoZGV2LCBmdW5jLCBzaXplb2YoZnVuYyksIGJ1Zls3XSk7CisJcHJpbnRmKCIgICAgSW50ZXJmYWNlIEFzc29jaWF0aW9uOlxuIgorCSAgICAgICAiICAgICAgYkxlbmd0aCAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJICAgICAgICIgICAgICBiRmlyc3RJbnRlcmZhY2UgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgYkludGVyZmFjZUNvdW50ICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgIGJGdW5jdGlvbkNsYXNzICAgICAgJTV1ICVzXG4iCisJICAgICAgICIgICAgICBiRnVuY3Rpb25TdWJDbGFzcyAgICU1dSAlc1xuIgorCSAgICAgICAiICAgICAgYkZ1bmN0aW9uUHJvdG9jb2wgICAlNXUgJXNcbiIKKwkgICAgICAgIiAgICAgIGlGdW5jdGlvbiAgICAgICAgICAgJTV1ICVzXG4iLAorCSAgICAgICBidWZbMF0sIGJ1ZlsxXSwKKwkgICAgICAgYnVmWzJdLCBidWZbM10sCisJICAgICAgIGJ1Zls0XSwgY2xzLAorCSAgICAgICBidWZbNV0sIHN1YmNscywKKwkgICAgICAgYnVmWzZdLCBwcm90bywKKwkgICAgICAgYnVmWzddLCBmdW5jKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9jb25maWcoc3RydWN0IHVzYl9kZXZfaGFuZGxlICpkZXYsIHN0cnVjdCB1c2JfY29uZmlnX2Rlc2NyaXB0b3IgKmNvbmZpZykKK3sKKwljaGFyIGNmZ1sxMjhdOworCWludCBpOworCisJZ2V0X3N0cmluZyhkZXYsIGNmZywgc2l6ZW9mKGNmZyksIGNvbmZpZy0+aUNvbmZpZ3VyYXRpb24pOworCXByaW50ZigiICBDb25maWd1cmF0aW9uIERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgYkxlbmd0aCAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICBiRGVzY3JpcHRvclR5cGUgICAgICU1dVxuIgorCSAgICAgICAiICAgIHdUb3RhbExlbmd0aCAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgYk51bUludGVyZmFjZXMgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICBiQ29uZmlndXJhdGlvblZhbHVlICU1dVxuIgorCSAgICAgICAiICAgIGlDb25maWd1cmF0aW9uICAgICAgJTV1ICVzXG4iCisJICAgICAgICIgICAgYm1BdHRyaWJ1dGVzICAgICAgICAgMHglMDJ4XG4iLAorCSAgICAgICBjb25maWctPmJMZW5ndGgsIGNvbmZpZy0+YkRlc2NyaXB0b3JUeXBlLAorCSAgICAgICBsZTE2X3RvX2NwdShjb25maWctPndUb3RhbExlbmd0aCksCisJICAgICAgIGNvbmZpZy0+Yk51bUludGVyZmFjZXMsIGNvbmZpZy0+YkNvbmZpZ3VyYXRpb25WYWx1ZSwKKwkgICAgICAgY29uZmlnLT5pQ29uZmlndXJhdGlvbiwKKwkgICAgICAgY2ZnLCBjb25maWctPmJtQXR0cmlidXRlcyk7CisJaWYgKCEoY29uZmlnLT5ibUF0dHJpYnV0ZXMgJiAweDgwKSkKKwkJcHJpbnRmKCIgICAgICAoTWlzc2luZyBtdXN0LWJlLXNldCBiaXQhKVxuIik7CisJaWYgKGNvbmZpZy0+Ym1BdHRyaWJ1dGVzICYgMHg0MCkKKwkJcHJpbnRmKCIgICAgICBTZWxmIFBvd2VyZWRcbiIpOworCWVsc2UKKwkJcHJpbnRmKCIgICAgICAoQnVzIFBvd2VyZWQpXG4iKTsKKwlpZiAoY29uZmlnLT5ibUF0dHJpYnV0ZXMgJiAweDIwKQorCQlwcmludGYoIiAgICAgIFJlbW90ZSBXYWtldXBcbiIpOworCWlmIChjb25maWctPmJtQXR0cmlidXRlcyAmIDB4MTApCisJCXByaW50ZigiICAgICAgQmF0dGVyeSBQb3dlcmVkXG4iKTsKKwlwcmludGYoIiAgICBNYXhQb3dlciAgICAgICAgICAgICU1dW1BXG4iLCBjb25maWctPk1heFBvd2VyICogMik7CisKKwkvKiBhdm9pZCByZS1vcmRlcmluZyBvciBoaWRpbmcgZGVzY3JpcHRvcnMgZm9yIGRpc3BsYXkgKi8KKwlpZiAoY29uZmlnLT5leHRyYWxlbikgeworCQlpbnQJCXNpemUgPSBjb25maWctPmV4dHJhbGVuOworCQl1bnNpZ25lZCBjaGFyCSpidWYgPSBjb25maWctPmV4dHJhOworCisJCXdoaWxlIChzaXplID49IDIpIHsKKwkJCWlmIChidWZbMF0gPCAyKSB7CisJCQkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgc2l6ZSk7CisJCQkJYnJlYWs7CisJCQl9CisJCQlzd2l0Y2ggKGJ1ZlsxXSkgeworCQkJY2FzZSBVU0JfRFRfT1RHOgorCQkJCS8qIGhhbmRsZWQgc2VwYXJhdGVseSAqLworCQkJCWJyZWFrOworCQkJY2FzZSBVU0JfRFRfSU5URVJGQUNFX0FTU09DSUFUSU9OOgorCQkJCWR1bXBfYXNzb2NpYXRpb24oZGV2LCBidWYpOworCQkJCWJyZWFrOworCQkJY2FzZSBVU0JfRFRfU0VDVVJJVFk6CisJCQkJZHVtcF9zZWN1cml0eShidWYpOworCQkJCWJyZWFrOworCQkJY2FzZSBVU0JfRFRfRU5DUllQVElPTl9UWVBFOgorCQkJCWR1bXBfZW5jcnlwdGlvbl90eXBlKGJ1Zik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIG9mdGVuIGEgbWlzcGxhY2VkIGNsYXNzIGRlc2NyaXB0b3IgKi8KKwkJCQlwcmludGYoIiAgICAqKiBVTlJFQ09HTklaRUQ6ICIpOworCQkJCWR1bXBfYnl0ZXMoYnVmLCBidWZbMF0pOworCQkJCWJyZWFrOworCQkJfQorCQkJc2l6ZSAtPSBidWZbMF07CisJCQlidWYgKz0gYnVmWzBdOworCQl9CisJfQorCWZvciAoaSA9IDAgOyBpIDwgY29uZmlnLT5iTnVtSW50ZXJmYWNlcyA7IGkrKykKKwkJZHVtcF9pbnRlcmZhY2UoZGV2LCAmY29uZmlnLT5pbnRlcmZhY2VbaV0pOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2FsdHNldHRpbmcoc3RydWN0IHVzYl9kZXZfaGFuZGxlICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgKmludGVyZmFjZSkKK3sKKwljaGFyIGNsc1sxMjhdLCBzdWJjbHNbMTI4XSwgcHJvdG9bMTI4XTsKKwljaGFyIGlmc3RyWzEyOF07CisKKwl1bnNpZ25lZCBjaGFyICpidWY7CisJdW5zaWduZWQgc2l6ZSwgaTsKKworCWdldF9jbGFzc19zdHJpbmcoY2xzLCBzaXplb2YoY2xzKSwgaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MpOworCWdldF9zdWJjbGFzc19zdHJpbmcoc3ViY2xzLCBzaXplb2Yoc3ViY2xzKSwgaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MsIGludGVyZmFjZS0+YkludGVyZmFjZVN1YkNsYXNzKTsKKwlnZXRfcHJvdG9jb2xfc3RyaW5nKHByb3RvLCBzaXplb2YocHJvdG8pLCBpbnRlcmZhY2UtPmJJbnRlcmZhY2VDbGFzcywgaW50ZXJmYWNlLT5iSW50ZXJmYWNlU3ViQ2xhc3MsIGludGVyZmFjZS0+YkludGVyZmFjZVByb3RvY29sKTsKKwlnZXRfc3RyaW5nKGRldiwgaWZzdHIsIHNpemVvZihpZnN0ciksIGludGVyZmFjZS0+aUludGVyZmFjZSk7CisJcHJpbnRmKCIgICAgSW50ZXJmYWNlIERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgICBiTGVuZ3RoICAgICAgICAgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgIGJJbnRlcmZhY2VOdW1iZXIgICAgJTV1XG4iCisJICAgICAgICIgICAgICBiQWx0ZXJuYXRlU2V0dGluZyAgICU1dVxuIgorCSAgICAgICAiICAgICAgYk51bUVuZHBvaW50cyAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgIGJJbnRlcmZhY2VDbGFzcyAgICAgJTV1ICVzXG4iCisJICAgICAgICIgICAgICBiSW50ZXJmYWNlU3ViQ2xhc3MgICU1dSAlc1xuIgorCSAgICAgICAiICAgICAgYkludGVyZmFjZVByb3RvY29sICAlNXUgJXNcbiIKKwkgICAgICAgIiAgICAgIGlJbnRlcmZhY2UgICAgICAgICAgJTV1ICVzXG4iLAorCSAgICAgICBpbnRlcmZhY2UtPmJMZW5ndGgsIGludGVyZmFjZS0+YkRlc2NyaXB0b3JUeXBlLCBpbnRlcmZhY2UtPmJJbnRlcmZhY2VOdW1iZXIsCisJICAgICAgIGludGVyZmFjZS0+YkFsdGVybmF0ZVNldHRpbmcsIGludGVyZmFjZS0+Yk51bUVuZHBvaW50cywgaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MsIGNscywKKwkgICAgICAgaW50ZXJmYWNlLT5iSW50ZXJmYWNlU3ViQ2xhc3MsIHN1YmNscywgaW50ZXJmYWNlLT5iSW50ZXJmYWNlUHJvdG9jb2wsIHByb3RvLAorCSAgICAgICBpbnRlcmZhY2UtPmlJbnRlcmZhY2UsIGlmc3RyKTsKKworCS8qIGF2b2lkIHJlLW9yZGVyaW5nIG9yIGhpZGluZyBkZXNjcmlwdG9ycyBmb3IgZGlzcGxheSAqLworCWlmIChpbnRlcmZhY2UtPmV4dHJhbGVuKQorCXsKKwkJc2l6ZSA9IGludGVyZmFjZS0+ZXh0cmFsZW47CisJCWJ1ZiA9IGludGVyZmFjZS0+ZXh0cmE7CisJCXdoaWxlIChzaXplID49IDIgKiBzaXplb2YodV9pbnQ4X3QpKQorCQl7CisJCQlpZiAoYnVmWzBdIDwgMikgeworCQkJCWR1bXBfanVuayhidWYsICIgICAgICAiLCBzaXplKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJc3dpdGNoIChidWZbMV0pIHsKKworCQkJLyogVGhpcyBpcyB0aGUgcG9saXRlIHdheSB0byBwcm92aWRlIGNsYXNzIHNwZWNpZmljCisJCQkgKiBkZXNjcmlwdG9yczogZXhwbGljaXRseSB0YWdnZWQsIHVzaW5nIGNvbW1vbiBjbGFzcworCQkJICogc3BlYyBjb252ZW50aW9ucy4KKwkJCSAqLworCQkJY2FzZSBVU0JfRFRfQ1NfREVWSUNFOgorCQkJY2FzZSBVU0JfRFRfQ1NfSU5URVJGQUNFOgorCQkJCXN3aXRjaCAoaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MpIHsKKwkJCQljYXNlIFVTQl9DTEFTU19BVURJTzoKKwkJCQkJc3dpdGNoIChpbnRlcmZhY2UtPmJJbnRlcmZhY2VTdWJDbGFzcykgeworCQkJCQljYXNlIDE6CisJCQkJCQlkdW1wX2F1ZGlvY29udHJvbF9pbnRlcmZhY2UoZGV2LCBidWYpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgMjoKKwkJCQkJCWR1bXBfYXVkaW9zdHJlYW1pbmdfaW50ZXJmYWNlKGJ1Zik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSAzOgorCQkJCQkJZHVtcF9taWRpc3RyZWFtaW5nX2ludGVyZmFjZShkZXYsIGJ1Zik7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWdvdG8gZHVtcDsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQljYXNlIFVTQl9DTEFTU19DT01NOgorCQkJCQlkdW1wX2NvbW1fZGVzY3JpcHRvcihkZXYsIGJ1ZiwKKwkJCQkJCSIgICAgICAiKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBVU0JfQ0xBU1NfVklERU86CisJCQkJCXN3aXRjaCAoaW50ZXJmYWNlLT5iSW50ZXJmYWNlU3ViQ2xhc3MpIHsKKwkJCQkJY2FzZSAxOgorCQkJCQkJZHVtcF92aWRlb2NvbnRyb2xfaW50ZXJmYWNlKGRldiwgYnVmKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIDI6CisJCQkJCQlkdW1wX3ZpZGVvc3RyZWFtaW5nX2ludGVyZmFjZShidWYpOworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQlnb3RvIGR1bXA7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBVU0JfQ0xBU1NfQVBQTElDQVRJT046CisJCQkJCXN3aXRjaCAoaW50ZXJmYWNlLT5iSW50ZXJmYWNlU3ViQ2xhc3MpIHsKKwkJCQkJY2FzZSAxOgorCQkJCQkJZHVtcF9kZnVfaW50ZXJmYWNlKGJ1Zik7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWdvdG8gZHVtcDsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQljYXNlIFVTQl9DTEFTU19ISUQ6CisJCQkJCWR1bXBfaGlkX2RldmljZShkZXYsIGludGVyZmFjZSwgYnVmKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJZ290byBkdW1wOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJLyogVGhpcyBpcyB0aGUgdWdseSB3YXk6ICBpbXBsaWNpdGx5IHRhZ2dlZCwKKwkJCSAqIGVhY2ggY2xhc3MgY291bGQgcmVkZWZpbmUgdGhlIHR5cGUgSURzLgorCQkJICovCisJCQlkZWZhdWx0OgorCQkJCXN3aXRjaCAoaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MpIHsKKwkJCQljYXNlIFVTQl9DTEFTU19ISUQ6CisJCQkJCWR1bXBfaGlkX2RldmljZShkZXYsIGludGVyZmFjZSwgYnVmKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAweDBiOgkvKiBjaGlwL3NtYXJ0Y2FyZCAqLworCQkJCQlkdW1wX2NjaWRfZGV2aWNlKGJ1Zik7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgMHhlMDoJLyogd2lyZWxlc3MgKi8KKwkJCQkJc3dpdGNoIChpbnRlcmZhY2UtPmJJbnRlcmZhY2VTdWJDbGFzcykgeworCQkJCQljYXNlIDE6CisJCQkJCQlzd2l0Y2ggKGludGVyZmFjZS0+YkludGVyZmFjZVByb3RvY29sKSB7CisJCQkJCQljYXNlIDI6CisJCQkJCQkJZHVtcF9yY19pbnRlcmZhY2UoYnVmKTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCWRlZmF1bHQ6CisJCQkJCQkJZ290byBkdW1wOworCQkJCQkJfQorCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgMjoKKwkJCQkJCWR1bXBfd2lyZV9hZGFwdGVyKGJ1Zik7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWdvdG8gZHVtcDsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiAuLi4gbm90IGV2ZXJ5dGhpbmcgaXMgY2xhc3Mtc3BlY2lmaWMgKi8KKwkJCQkJc3dpdGNoIChidWZbMV0pIHsKKwkJCQkJY2FzZSBVU0JfRFRfT1RHOgorCQkJCQkJLyogaGFuZGxlZCBzZXBhcmF0ZWx5ICovCisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBVU0JfRFRfSU5URVJGQUNFX0FTU09DSUFUSU9OOgorCQkJCQkJZHVtcF9hc3NvY2lhdGlvbihkZXYsIGJ1Zik7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKK2R1bXA6CisJCQkJCQkvKiBvZnRlbiBhIG1pc3BsYWNlZCBjbGFzcyBkZXNjcmlwdG9yICovCisJCQkJCQlwcmludGYoIiAgICAgICoqIFVOUkVDT0dOSVpFRDogIik7CisJCQkJCQlkdW1wX2J5dGVzKGJ1ZiwgYnVmWzBdKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJc2l6ZSAtPSBidWZbMF07CisJCQlidWYgKz0gYnVmWzBdOworCQl9CisJfQorCisJZm9yIChpID0gMCA7IGkgPCBpbnRlcmZhY2UtPmJOdW1FbmRwb2ludHMgOyBpKyspCisJCWR1bXBfZW5kcG9pbnQoZGV2LCBpbnRlcmZhY2UsICZpbnRlcmZhY2UtPmVuZHBvaW50W2ldKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9pbnRlcmZhY2Uoc3RydWN0IHVzYl9kZXZfaGFuZGxlICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgaW50ZXJmYWNlLT5udW1fYWx0c2V0dGluZzsgaSsrKQorCQlkdW1wX2FsdHNldHRpbmcoZGV2LCAmaW50ZXJmYWNlLT5hbHRzZXR0aW5nW2ldKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9lbmRwb2ludChzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciAqaW50ZXJmYWNlLCBzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50KQoreworCXN0YXRpYyBjb25zdCBjaGFyICp0eXBlYXR0cltdID0geyAiQ29udHJvbCIsICJJc29jaHJvbm91cyIsICJCdWxrIiwgIkludGVycnVwdCIgfTsKKwlzdGF0aWMgY29uc3QgY2hhciAqc3luY2F0dHJbXSA9IHsgIk5vbmUiLCAiQXN5bmNocm9ub3VzIiwgIkFkYXB0aXZlIiwgIlN5bmNocm9ub3VzIiB9OworCXN0YXRpYyBjb25zdCBjaGFyICp1c2FnZVtdID0geyAiRGF0YSIsICJGZWVkYmFjayIsICJJbXBsaWNpdCBmZWVkYmFjayBEYXRhIiwgIihyZXNlcnZlZCkiIH07CisJc3RhdGljIGNvbnN0IGNoYXIgKmhiW10gPSB7ICIxeCIsICIyeCIsICIzeCIsICIoP1w/KSIgfTsKKwl1bnNpZ25lZCBjaGFyICpidWY7CisJdW5zaWduZWQgc2l6ZTsKKwl1bnNpZ25lZCB3bWF4ID0gbGUxNl90b19jcHUoZW5kcG9pbnQtPndNYXhQYWNrZXRTaXplKTsKKworCXByaW50ZigiICAgICAgRW5kcG9pbnQgRGVzY3JpcHRvcjpcbiIKKwkgICAgICAgIiAgICAgICAgYkxlbmd0aCAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgYkVuZHBvaW50QWRkcmVzcyAgICAgMHglMDJ4ICBFUCAldSAlc1xuIgorCSAgICAgICAiICAgICAgICBibUF0dHJpYnV0ZXMgICAgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgICAgIFRyYW5zZmVyIFR5cGUgICAgICAgICAgICAlc1xuIgorCSAgICAgICAiICAgICAgICAgIFN5bmNoIFR5cGUgICAgICAgICAgICAgICAlc1xuIgorCSAgICAgICAiICAgICAgICAgIFVzYWdlIFR5cGUgICAgICAgICAgICAgICAlc1xuIgorCSAgICAgICAiICAgICAgICB3TWF4UGFja2V0U2l6ZSAgICAgMHglMDR4ICAlcyAlZCBieXRlc1xuIgorCSAgICAgICAiICAgICAgICBiSW50ZXJ2YWwgICAgICAgICAgICU1dVxuIiwKKwkgICAgICAgZW5kcG9pbnQtPmJMZW5ndGgsIGVuZHBvaW50LT5iRGVzY3JpcHRvclR5cGUsIGVuZHBvaW50LT5iRW5kcG9pbnRBZGRyZXNzLCBlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzcyAmIDB4MGYsCisJICAgICAgIChlbmRwb2ludC0+YkVuZHBvaW50QWRkcmVzcyAmIDB4ODApID8gIklOIiA6ICJPVVQiLCBlbmRwb2ludC0+Ym1BdHRyaWJ1dGVzLAorCSAgICAgICB0eXBlYXR0cltlbmRwb2ludC0+Ym1BdHRyaWJ1dGVzICYgM10sIHN5bmNhdHRyWyhlbmRwb2ludC0+Ym1BdHRyaWJ1dGVzID4+IDIpICYgM10sCisJICAgICAgIHVzYWdlWyhlbmRwb2ludC0+Ym1BdHRyaWJ1dGVzID4+IDQpICYgM10sCisJICAgICAgIHdtYXgsIGhiWyh3bWF4ID4+IDExKSAmIDNdLCB3bWF4ICYgMHg3ZmYsCisJICAgICAgIGVuZHBvaW50LT5iSW50ZXJ2YWwpOworCS8qIG9ubHkgZm9yIGF1ZGlvIGVuZHBvaW50cyAqLworCWlmIChlbmRwb2ludC0+Ykxlbmd0aCA9PSA5KQorCXByaW50ZigiICAgICAgICBiUmVmcmVzaCAgICAgICAgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgICBiU3luY2hBZGRyZXNzICAgICAgICU1dVxuIiwKKwkgICAgICAgZW5kcG9pbnQtPmJSZWZyZXNoLCBlbmRwb2ludC0+YlN5bmNoQWRkcmVzcyk7CisKKwkvKiBhdm9pZCByZS1vcmRlcmluZyBvciBoaWRpbmcgZGVzY3JpcHRvcnMgZm9yIGRpc3BsYXkgKi8KKwlpZiAoZW5kcG9pbnQtPmV4dHJhbGVuKQorCXsKKwkJc2l6ZSA9IGVuZHBvaW50LT5leHRyYWxlbjsKKwkJYnVmID0gZW5kcG9pbnQtPmV4dHJhOworCQl3aGlsZSAoc2l6ZSA+PSAyICogc2l6ZW9mKHVfaW50OF90KSkKKwkJeworCQkJaWYgKGJ1ZlswXSA8IDIpIHsKKwkJCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCBzaXplKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXN3aXRjaCAoYnVmWzFdKSB7CisJCQljYXNlIFVTQl9EVF9DU19FTkRQT0lOVDoKKwkJCQlpZiAoaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MgPT0gMSAmJiBpbnRlcmZhY2UtPmJJbnRlcmZhY2VTdWJDbGFzcyA9PSAyKQorCQkJCQlkdW1wX2F1ZGlvc3RyZWFtaW5nX2VuZHBvaW50KGJ1Zik7CisJCQkJZWxzZSBpZiAoaW50ZXJmYWNlLT5iSW50ZXJmYWNlQ2xhc3MgPT0gMSAmJiBpbnRlcmZhY2UtPmJJbnRlcmZhY2VTdWJDbGFzcyA9PSAzKQorCQkJCQlkdW1wX21pZGlzdHJlYW1pbmdfZW5kcG9pbnQoYnVmKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgVVNCX0RUX0NTX0lOVEVSRkFDRToKKwkJCQkvKiBNSVNQTEFDRUQgREVTQ1JJUFRPUiAuLi4gbGVzcyBpbmRlbnQgKi8KKwkJCQlzd2l0Y2ggKGludGVyZmFjZS0+YkludGVyZmFjZUNsYXNzKSB7CisJCQkJY2FzZSBVU0JfQ0xBU1NfQ09NTToKKwkJCQljYXNlIFVTQl9DTEFTU19EQVRBOgkvLyBjb21tIGRhdGEKKwkJCQkJZHVtcF9jb21tX2Rlc2NyaXB0b3IoZGV2LCBidWYsCisJCQkJCQkiICAgICAgIik7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCXByaW50ZigiICAgICAgICBJTlRFUkZBQ0UgQ0xBU1M6ICIpOworCQkJCQlkdW1wX2J5dGVzKGJ1ZiwgYnVmWzBdKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIFVTQl9EVF9PVEc6CisJCQkJLyogaGFuZGxlZCBzZXBhcmF0ZWx5ICovCisJCQkJYnJlYWs7CisJCQljYXNlIFVTQl9EVF9JTlRFUkZBQ0VfQVNTT0NJQVRJT046CisJCQkJZHVtcF9hc3NvY2lhdGlvbihkZXYsIGJ1Zik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIG9mdGVuIGEgbWlzcGxhY2VkIGNsYXNzIGRlc2NyaXB0b3IgKi8KKwkJCQlwcmludGYoIiAgICAgICAgKiogVU5SRUNPR05JWkVEOiAiKTsKKwkJCQlkdW1wX2J5dGVzKGJ1ZiwgYnVmWzBdKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXNpemUgLT0gYnVmWzBdOworCQkJYnVmICs9IGJ1ZlswXTsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgZHVtcF91bml0KHVuc2lnbmVkIGludCBkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCWNoYXIgKnN5c3RlbXNbNV0gPSB7ICJOb25lIiwgIlNJIExpbmVhciIsICJTSSBSb3RhdGlvbiIsCisJCQkiRW5nbGlzaCBMaW5lYXIiLCAiRW5nbGlzaCBSb3RhdGlvbiIgfTsKKworCWNoYXIgKnVuaXRzWzVdWzhdID0geworCQl7ICJOb25lIiwgIk5vbmUiLCAiTm9uZSIsICJOb25lIiwgIk5vbmUiLAorCQkJCSJOb25lIiwgIk5vbmUiLCAiTm9uZSIgfSwKKwkJeyAiTm9uZSIsICJDZW50aW1ldGVyIiwgIkdyYW0iLCAiU2Vjb25kcyIsICJLZWx2aW4iLAorCQkJCSJBbXBlcmUiLCAiQ2FuZGVsYSIsICJOb25lIiB9LAorCQl7ICJOb25lIiwgIlJhZGlhbnMiLCAgICAiR3JhbSIsICJTZWNvbmRzIiwgIktlbHZpbiIsCisJCQkJIkFtcGVyZSIsICJDYW5kZWxhIiwgIk5vbmUiIH0sCisJCXsgIk5vbmUiLCAiSW5jaCIsICAgICAgICJTbHVnIiwgIlNlY29uZHMiLCAiRmFocmVuaGVpdCIsCisJCQkJIkFtcGVyZSIsICJDYW5kZWxhIiwgIk5vbmUiIH0sCisJCXsgIk5vbmUiLCAiRGVncmVlcyIsICAgICJTbHVnIiwgIlNlY29uZHMiLCAiRmFocmVuaGVpdCIsCisJCQkJIkFtcGVyZSIsICJDYW5kZWxhIiwgIk5vbmUiIH0sCisJfTsKKworCXVuc2lnbmVkIGludCBpOworCXVuc2lnbmVkIGludCBzeXM7CisJaW50IGVhcmxpZXJfdW5pdCA9IDA7CisKKwkvKiBGaXJzdCBuaWJibGUgdGVsbHMgdXMgd2hpY2ggc3lzdGVtIHdlJ3JlIGluLiAqLworCXN5cyA9IGRhdGEgJiAweGY7CisJZGF0YSA+Pj0gNDsKKworCWlmKHN5cyA+IDQpIHsKKwkJaWYoc3lzID09IDB4ZikKKwkJCXByaW50ZigiU3lzdGVtOiBWZW5kb3IgZGVmaW5lZCwgVW5pdDogKHVua25vd24pXG4iKTsKKwkJZWxzZQorCQkJcHJpbnRmKCJTeXN0ZW06IFJlc2VydmVkLCBVbml0OiAodW5rbm93bilcbiIpOworCQlyZXR1cm47CisJfSBlbHNlIHsKKwkJcHJpbnRmKCJTeXN0ZW06ICVzLCBVbml0OiAiLCBzeXN0ZW1zW3N5c10pOworCX0KKwlmb3IgKGk9MSA7IGk8bGVuKjIgOyBpKyspIHsKKwkJY2hhciBuaWJibGUgPSBkYXRhICYgMHhmOworCQlkYXRhID4+PSA0OworCQlpZiAobmliYmxlICE9IDApIHsKKwkJCWlmKGVhcmxpZXJfdW5pdCsrID4gMCkKKwkJCQlwcmludGYoIioiKTsKKwkJCXByaW50ZigiJXMiLCB1bml0c1tzeXNdW2ldKTsKKwkJCWlmKG5pYmJsZSAhPSAxKSB7CisJCQkJLyogVGhpcyBpcyBhIF9zaWduZWRfIG5pYmJsZSghKSAqLworCisJCQkJaW50IHZhbCA9IG5pYmJsZSAmIDB4NzsKKwkJCQlpZihuaWJibGUgJiAweDA4KQorCQkJCQl2YWwgPSAtKCgweDcgJiB+dmFsKSArMSk7CisJCQkJcHJpbnRmKCJeJWQiLCB2YWwpOworCQkJfQorCQl9CisJfQorCWlmKGVhcmxpZXJfdW5pdCA9PSAwKQorCQlwcmludGYoIihOb25lKSIpOworCXByaW50ZigiXG4iKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKgorICogQXVkaW8gQ2xhc3MgZGVzY3JpcHRvciBkdW1wCisgKi8KKworc3RhdGljIHZvaWQgZHVtcF9hdWRpb2NvbnRyb2xfaW50ZXJmYWNlKHN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZGV2LCB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RhdGljIGNvbnN0IGNoYXIgKmNoY29uZmlnW10gPSB7CisJCSJMZWZ0IEZyb250IChMKSIsICJSaWdodCBGcm9udCAoUikiLCAiQ2VudGVyIEZyb250IChDKSIsICJMb3cgRnJlcWVuY3kgRW5oYW5jZW1lbnQgKExGRSkiLAorCQkiTGVmdCBTdXJyb3VuZCAoTFMpIiwgIlJpZ2h0IFN1cnJvdW5kIChSUykiLCAiTGVmdCBvZiBDZW50ZXIgKExDKSIsICJSaWdodCBvZiBDZW50ZXIgKFJDKSIsCisJCSJTdXJyb3VuZCAoUykiLCAiU2lkZSBMZWZ0IChTTCkiLCAiU2lkZSBSaWdodCAoU1IpIiwgIlRvcCAoVCkiCisJfTsKKwlzdGF0aWMgY29uc3QgY2hhciAqY2hmdHJjb250cm9sc1tdID0geworCQkiTXV0ZSIsICJWb2x1bWUiLCAiQmFzcyIsICJNaWQiLCAiVHJlYmxlIiwgIkdyYXBoaWMgRXF1YWxpemVyIiwgIkF1dG9tYXRpYyBHYWluIiwgIkRlbGF5IiwgIkJhc3MgQm9vc3QiLCAiTG91ZG5lc3MiCisJfTsKKwl1bnNpZ25lZCBpbnQgaSwgY2hjZmcsIGosIGssIE4sIHRlcm10OworCWNoYXIgY2huYW1lc1sxMjhdLCB0ZXJtWzEyOF0sIHRlcm10c1sxMjhdOworCisJaWYgKGJ1ZlsxXSAhPSBVU0JfRFRfQ1NfSU5URVJGQUNFKQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IEludmFsaWQgZGVzY3JpcHRvclxuIik7CisJZWxzZSBpZiAoYnVmWzBdIDwgMykKKwkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJcHJpbnRmKCIgICAgICBBdWRpb0NvbnRyb2wgSW50ZXJmYWNlIERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yU3VidHlwZSAgJTV1ICIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0pOworCXN3aXRjaCAoYnVmWzJdKSB7CisJY2FzZSAweDAxOiAgLyogSEVBREVSICovCisJCXByaW50ZigiKEhFQURFUilcbiIpOworCQlpZiAoYnVmWzBdIDwgOCtidWZbN10pCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJcHJpbnRmKCIgICAgICAgIGJjZEFEQyAgICAgICAgICAgICAgJTJ4LiUwMnhcbiIKKwkJICAgICAgICIgICAgICAgIHdUb3RhbExlbmd0aCAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiSW5Db2xsZWN0aW9uICAgICAgICU1dVxuIiwKKwkJICAgICAgIGJ1Zls0XSwgYnVmWzNdLCBidWZbNV0gfCAoYnVmWzZdIDw8IDgpLCBidWZbN10pOworCQlmb3IoaSA9IDA7IGkgPCBidWZbN107IGkrKykKKwkJCXByaW50ZigiICAgICAgICBiYUludGVyZmFjZU5yKCUydSkgICAlNXVcbiIsIGksIGJ1Zls4K2ldKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgOCtidWZbN10pOworCQlicmVhazsKKworCWNhc2UgMHgwMjogIC8qIElOUFVUX1RFUk1JTkFMICovCisJCXByaW50ZigiKElOUFVUX1RFUk1JTkFMKVxuIik7CisJCWdldF9zdHJpbmcoZGV2LCBjaG5hbWVzLCBzaXplb2YoY2huYW1lcyksIGJ1ZlsxMF0pOworCQlnZXRfc3RyaW5nKGRldiwgdGVybSwgc2l6ZW9mKHRlcm0pLCBidWZbMTFdKTsKKwkJdGVybXQgPSBidWZbNF0gfCAoYnVmWzVdIDw8IDgpOworCQlnZXRfYXVkaW90ZXJtaW5hbF9zdHJpbmcodGVybXRzLCBzaXplb2YodGVybXRzKSwgdGVybXQpOworCQlpZiAoYnVmWzBdIDwgMTIpCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJY2hjZmcgPSBidWZbOF0gfCAoYnVmWzldIDw8IDgpOworCQlwcmludGYoIiAgICAgICAgYlRlcm1pbmFsSUQgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIHdUZXJtaW5hbFR5cGUgICAgICAweCUwNHggJXNcbiIKKwkJICAgICAgICIgICAgICAgIGJBc3NvY1Rlcm1pbmFsICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiTnJDaGFubmVscyAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgd0NoYW5uZWxDb25maWcgICAgIDB4JTA0eFxuIiwKKwkJICAgICAgIGJ1ZlszXSwgdGVybXQsIHRlcm10cywgYnVmWzZdLCBidWZbN10sIGNoY2ZnKTsKKwkJZm9yIChpID0gMDsgaSA8IDEyOyBpKyspCisJCQlpZiAoKGNoY2ZnID4+IGkpICYgMSkKKwkJCQlwcmludGYoIiAgICAgICAgICAlc1xuIiwgY2hjb25maWdbaV0pOworCQlwcmludGYoIiAgICAgICAgaUNoYW5uZWxOYW1lcyAgICAgICAlNXUgJXNcbiIKKwkJICAgICAgICIgICAgICAgIGlUZXJtaW5hbCAgICAgICAgICAgJTV1ICVzXG4iLAorCQkgICAgICAgYnVmWzEwXSwgY2huYW1lcywgYnVmWzExXSwgdGVybSk7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDEyKTsKKwkJYnJlYWs7CisKKwljYXNlIDB4MDM6ICAvKiBPVVRQVVRfVEVSTUlOQUwgKi8KKwkJcHJpbnRmKCIoT1VUUFVUX1RFUk1JTkFMKVxuIik7CisJCWdldF9zdHJpbmcoZGV2LCB0ZXJtLCBzaXplb2YodGVybSksIGJ1Zls4XSk7CisJCXRlcm10ID0gYnVmWzRdIHwgKGJ1Zls1XSA8PCA4KTsKKwkJZ2V0X2F1ZGlvdGVybWluYWxfc3RyaW5nKHRlcm10cywgc2l6ZW9mKHRlcm10cyksIHRlcm10KTsKKwkJaWYgKGJ1ZlswXSA8IDkpCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJcHJpbnRmKCIgICAgICAgIGJUZXJtaW5hbElEICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICB3VGVybWluYWxUeXBlICAgICAgMHglMDR4ICVzXG4iCisJCSAgICAgICAiICAgICAgICBiQXNzb2NUZXJtaW5hbCAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYlNvdXJjZUlEICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGlUZXJtaW5hbCAgICAgICAgICAgJTV1ICVzXG4iLAorCQkgICAgICAgYnVmWzNdLCB0ZXJtdCwgdGVybXRzLCBidWZbNl0sIGJ1Zls3XSwgYnVmWzhdLCB0ZXJtKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgOSk7CisJCWJyZWFrOworCisJY2FzZSAweDA0OiAgLyogTUlYRVJfVU5JVCAqLworCQlwcmludGYoIihNSVhFUl9VTklUKVxuIik7CisJCWogPSBidWZbNF07CisJCWsgPSBidWZbais1XTsKKwkJaWYgKGogPT0gMCB8fCBrID09IDApIHsKKwkJICBwcmludGYoIiAgICAgIFdhcm5pbmc6IG1peGVyIHdpdGggJTV1IGlucHV0IGFuZCAlNXUgb3V0cHV0IGNoYW5uZWxzLlxuIiwgaiwgayk7CisJCSAgTiA9IDA7CisJCX0gZWxzZSB7CisJCSAgTiA9IDErKGoqay0xKS84OworCQl9CisJCWdldF9zdHJpbmcoZGV2LCBjaG5hbWVzLCBzaXplb2YoY2huYW1lcyksIGJ1Zls4K2pdKTsKKwkJZ2V0X3N0cmluZyhkZXYsIHRlcm0sIHNpemVvZih0ZXJtKSwgYnVmWzkraitOXSk7CisJCWlmIChidWZbMF0gPCAxMCtqK04pCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJY2hjZmcgPSBidWZbNitqXSB8IChidWZbNytqXSA8PCA4KTsKKwkJcHJpbnRmKCIgICAgICAgIGJVbml0SUQgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiTnJJblBpbnMgICAgICAgICAgICU1dVxuIiwKKwkJICAgICAgIGJ1ZlszXSwgYnVmWzRdKTsKKwkJZm9yIChpID0gMDsgaSA8IGo7IGkrKykKKwkJCXByaW50ZigiICAgICAgICBiYVNvdXJjZUlEKCUydSkgICAgICAlNXVcbiIsIGksIGJ1Zls1K2ldKTsKKwkJcHJpbnRmKCIgICAgICAgIGJOckNoYW5uZWxzICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICB3Q2hhbm5lbENvbmZpZyAgICAgMHglMDR4XG4iLAorCQkgICAgICAgYnVmWzUral0sIGNoY2ZnKTsKKwkJZm9yIChpID0gMDsgaSA8IDEyOyBpKyspCisJCQlpZiAoKGNoY2ZnID4+IGkpICYgMSkKKwkJCQlwcmludGYoIiAgICAgICAgICAlc1xuIiwgY2hjb25maWdbaV0pOworCQlwcmludGYoIiAgICAgICAgaUNoYW5uZWxOYW1lcyAgICAgICAlNXUgJXNcbiIsCisJCSAgICAgICBidWZbOCtqXSwgY2huYW1lcyk7CisJCWZvciAoaSA9IDA7IGkgPCBOOyBpKyspCisJCQlwcmludGYoIiAgICAgICAgYm1Db250cm9scyAgICAgICAgIDB4JTAyeFxuIiwgYnVmWzkraitpXSk7CisJCXByaW50ZigiICAgICAgICBpTWl4ZXIgICAgICAgICAgICAgICU1dSAlc1xuIiwgYnVmWzkraitOXSwgdGVybSk7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDEwK2orTik7CisJCWJyZWFrOworCisJY2FzZSAweDA1OiAgLyogU0VMRUNUT1JfVU5JVCAqLworCQlwcmludGYoIihTRUxFQ1RPUl9VTklUKVxuIik7CisJCWlmIChidWZbMF0gPCA2K2J1Zls0XSkKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlnZXRfc3RyaW5nKGRldiwgdGVybSwgc2l6ZW9mKHRlcm0pLCBidWZbNStidWZbNF1dKTsKKworCQlwcmludGYoIiAgICAgICAgYlVuaXRJRCAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJOckluUGlucyAgICAgICAgICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzNdLCBidWZbNF0pOworCQlmb3IgKGkgPSAwOyBpIDwgYnVmWzRdOyBpKyspCisJCQlwcmludGYoIiAgICAgICAgYmFTb3VyY2UoJTJ1KSAgICAgICAgJTV1XG4iLCBpLCBidWZbNStpXSk7CisJCXByaW50ZigiICAgICAgICBpU2VsZWN0b3IgICAgICAgICAgICU1dSAlc1xuIiwKKwkJICAgICAgIGJ1Zls1K2J1Zls0XV0sIHRlcm0pOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCA2K2J1Zls0XSk7CisJCWJyZWFrOworCisJY2FzZSAweDA2OiAgLyogRkVBVFVSRV9VTklUICovCisJCXByaW50ZigiKEZFQVRVUkVfVU5JVClcbiIpOworCQlqID0gYnVmWzVdOworCQlpZiAoIWopCisJCQlqID0gMTsKKwkJayA9IChidWZbMF0gLSA3KSAvIGo7CisJCWlmIChidWZbMF0gPCA3K2J1Zls1XSprKQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCWdldF9zdHJpbmcoZGV2LCB0ZXJtLCBzaXplb2YodGVybSksIGJ1Zls2K2J1Zls1XSprXSk7CisJCXByaW50ZigiICAgICAgICBiVW5pdElEICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYlNvdXJjZUlEICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJDb250cm9sU2l6ZSAgICAgICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzNdLCBidWZbNF0sIGJ1Zls1XSk7CisJCWZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHsKKwkJCWNoY2ZnID0gYnVmWzYrYnVmWzVdKmldOworCQkJaWYgKGJ1Zls1XSA+IDEpCisJCQkJY2hjZmcgfD0gKGJ1Zls3K2J1Zls1XSppXSA8PCA4KTsKKwkJCWZvciAoaiA9IDA7IGogPCBidWZbNV07IGorKykKKwkJCQlwcmludGYoIiAgICAgICAgYm1hQ29udHJvbHMoJTJ1KSAgICAgIDB4JTAyeFxuIiwgaSwgYnVmWzYrYnVmWzVdKmkral0pOworCQkJZm9yIChqID0gMDsgaiA8IDEwOyBqKyspCisJCQkJaWYgKChjaGNmZyA+PiBqKSAmIDEpCisJCQkJCXByaW50ZigiICAgICAgICAgICVzXG4iLCBjaGZ0cmNvbnRyb2xzW2pdKTsKKwkJfQorCQlwcmludGYoIiAgICAgICAgaUZlYXR1cmUgICAgICAgICAgICAlNXUgJXNcbiIsIGJ1Zls2K2J1Zls1XSprXSwgdGVybSk7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDcrYnVmWzVdKmspOworCQlicmVhazsKKworCWNhc2UgMHgwNzogIC8qIFBST0NFU1NJTkdfVU5JVCAqLworCQlwcmludGYoIihQUk9DRVNTSU5HX1VOSVQpXG4iKTsKKwkJaiA9IGJ1Zls2XTsKKwkJayA9IGJ1ZlsxMStqXTsKKwkJZ2V0X3N0cmluZyhkZXYsIGNobmFtZXMsIHNpemVvZihjaG5hbWVzKSwgYnVmWzEwK2pdKTsKKwkJZ2V0X3N0cmluZyhkZXYsIHRlcm0sIHNpemVvZih0ZXJtKSwgYnVmWzEyK2ora10pOworCQljaGNmZyA9IGJ1Zls4K2pdIHwgKGJ1Zls5K2pdIDw8IDgpOworCQlpZiAoYnVmWzBdIDwgMTMraitrKQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCXByaW50ZigiICAgICAgICBiVW5pdElEICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgd1Byb2Nlc3NUeXBlICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJOclBpbnMgICAgICAgICAgICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzNdLCBidWZbNF0gfCAoYnVmWzVdIDw8IDgpLCBidWZbNl0pOworCQlmb3IgKGkgPSAwOyBpIDwgajsgaSsrKQorCQkJcHJpbnRmKCIgICAgICAgIGJhU291cmNlSUQoJTJ1KSAgICAgICU1dVxuIiwgaSwgYnVmWzcraV0pOworCQlwcmludGYoIiAgICAgICAgYk5yQ2hhbm5lbHMgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIHdDaGFubmVsQ29uZmlnICAgICAweCUwNHhcbiIsIGJ1Zls3K2pdLCBjaGNmZyk7CisJCWZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKQorCQkJaWYgKChjaGNmZyA+PiBpKSAmIDEpCisJCQkJcHJpbnRmKCIgICAgICAgICAgJXNcbiIsIGNoY29uZmlnW2ldKTsKKwkJcHJpbnRmKCIgICAgICAgIGlDaGFubmVsTmFtZXMgICAgICAgJTV1ICVzXG4iCisJCSAgICAgICAiICAgICAgICBiQ29udHJvbFNpemUgICAgICAgICU1dVxuIiwgYnVmWzEwK2pdLCBjaG5hbWVzLCBidWZbMTEral0pOworCQlmb3IgKGkgPSAwOyBpIDwgazsgaSsrKQorCQkJcHJpbnRmKCIgICAgICAgIGJtQ29udHJvbHMoJTJ1KSAgICAgICAweCUwMnhcbiIsIGksIGJ1ZlsxMitqK2ldKTsKKwkJaWYgKGJ1ZlsxMitqXSAmIDEpCisJCQlwcmludGYoIiAgICAgICAgICBFbmFibGUgUHJvY2Vzc2luZ1xuIik7CisJCXByaW50ZigiICAgICAgICBpUHJvY2Vzc2luZyAgICAgICAgICU1dSAlc1xuIgorCQkgICAgICAgIiAgICAgICAgUHJvY2Vzcy1TcGVjaWZpYyAgICAiLCBidWZbMTIraitrXSwgdGVybSk7CisJCWR1bXBfYnl0ZXMoYnVmKygxMytqK2spLCBidWZbMF0tKDEzK2oraykpOworCQlicmVhazsKKworCWNhc2UgMHgwODogIC8qIEVYVEVOU0lPTl9VTklUICovCisJCXByaW50ZigiKEVYVEVOU0lPTl9VTklUKVxuIik7CisJCWogPSBidWZbNl07CisJCWsgPSBidWZbMTEral07CisJCWdldF9zdHJpbmcoZGV2LCBjaG5hbWVzLCBzaXplb2YoY2huYW1lcyksIGJ1ZlsxMCtqXSk7CisJCWdldF9zdHJpbmcoZGV2LCB0ZXJtLCBzaXplb2YodGVybSksIGJ1ZlsxMitqK2tdKTsKKwkJY2hjZmcgPSBidWZbOCtqXSB8IChidWZbOStqXSA8PCA4KTsKKwkJaWYgKGJ1ZlswXSA8IDEzK2oraykKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYlVuaXRJRCAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIHdFeHRlbnNpb25Db2RlICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiTnJQaW5zICAgICAgICAgICAgICU1dVxuIiwKKwkJICAgICAgIGJ1ZlszXSwgYnVmWzRdIHwgKGJ1Zls1XSA8PCA4KSwgYnVmWzZdKTsKKwkJZm9yIChpID0gMDsgaSA8IGo7IGkrKykKKwkJCXByaW50ZigiICAgICAgICBiYVNvdXJjZUlEKCUydSkgICAgICAlNXVcbiIsIGksIGJ1Zls3K2ldKTsKKwkJcHJpbnRmKCIgICAgICAgIGJOckNoYW5uZWxzICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICB3Q2hhbm5lbENvbmZpZyAgICAgICU1dVxuIiwgYnVmWzcral0sIGNoY2ZnKTsKKwkJZm9yIChpID0gMDsgaSA8IDEyOyBpKyspCisJCQlpZiAoKGNoY2ZnID4+IGkpICYgMSkKKwkJCQlwcmludGYoIiAgICAgICAgICAlc1xuIiwgY2hjb25maWdbaV0pOworCQlwcmludGYoIiAgICAgICAgaUNoYW5uZWxOYW1lcyAgICAgICAlNXUgJXNcbiIKKwkJICAgICAgICIgICAgICAgIGJDb250cm9sU2l6ZSAgICAgICAgJTV1XG4iLCBidWZbMTAral0sIGNobmFtZXMsIGJ1ZlsxMStqXSk7CisJCWZvciAoaSA9IDA7IGkgPCBrOyBpKyspCisJCQlwcmludGYoIiAgICAgICAgYm1Db250cm9scyglMnUpICAgICAgIDB4JTAyeFxuIiwgaSwgYnVmWzEyK2oraV0pOworCQlpZiAoYnVmWzEyK2pdICYgMSkKKwkJCXByaW50ZigiICAgICAgICAgIEVuYWJsZSBQcm9jZXNzaW5nXG4iKTsKKwkJcHJpbnRmKCIgICAgICAgIGlFeHRlbnNpb24gICAgICAgICAgJTV1ICVzXG4iLAorCQkgICAgICAgYnVmWzEyK2ora10sIHRlcm0pOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCAxMytqK2spOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXByaW50ZigiKHVua25vd24pXG4iCisJCSAgICAgICAiICAgICAgICBJbnZhbGlkIGRlc2Mgc3VidHlwZToiKTsKKwkJZHVtcF9ieXRlcyhidWYrMywgYnVmWzBdLTMpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfYXVkaW9zdHJlYW1pbmdfaW50ZXJmYWNlKHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdGF0aWMgY29uc3QgY2hhciAqZm10SXRhZ1tdID0geworCQkiVFlQRV9JX1VOREVGSU5FRCIsICJQQ00iLCAiUENNOCIsICJJRUVFX0ZMT0FUIiwgIkFMQVciLCAiTVVMQVciIH07CisJc3RhdGljIGNvbnN0IGNoYXIgKmZtdElJdGFnW10gPSB7ICJUWVBFX0lJX1VOREVGSU5FRCIsICJNUEVHIiwgIkFDLTMiIH07CisJc3RhdGljIGNvbnN0IGNoYXIgKmZtdElJSXRhZ1tdID0geworCQkiVFlQRV9JSUlfVU5ERUZJTkVEIiwgIklFQzE5MzdfQUMtMyIsICJJRUMxOTM3X01QRUctMV9MYXllcjEiLAorCQkiSUVDMTkzN19NUEVHLUxheWVyMi8zL05PRVhUIiwgIklFQzE5MzdfTVBFRy0yX0VYVCIsCisJCSJJRUMxOTM3X01QRUctMl9MYXllcjFfTFMiLCAiSUVDMTkzN19NUEVHLTJfTGF5ZXIyLzNfTFMiIH07CisJdW5zaWduZWQgaW50IGksIGosIGZtdHRhZzsKKwljb25zdCBjaGFyICpmbXRwdHIgPSAidW5kZWZpbmVkIjsKKworCWlmIChidWZbMV0gIT0gVVNCX0RUX0NTX0lOVEVSRkFDRSkKKwkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBJbnZhbGlkIGRlc2NyaXB0b3JcbiIpOworCWVsc2UgaWYgKGJ1ZlswXSA8IDMpCisJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCXByaW50ZigiICAgICAgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yU3VidHlwZSAgJTV1ICIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0pOworCXN3aXRjaCAoYnVmWzJdKSB7CisJY2FzZSAweDAxOiAvKiBBU19HRU5FUkFMICovCisJCXByaW50ZigiKEFTX0dFTkVSQUwpXG4iKTsKKwkJaWYgKGJ1ZlswXSA8IDcpCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJZm10dGFnID0gYnVmWzVdIHwgKGJ1Zls2XSA8PCA4KTsKKwkJaWYgKGZtdHRhZyA8PSA1KQorCQkJZm10cHRyID0gZm10SXRhZ1tmbXR0YWddOworCQllbHNlIGlmIChmbXR0YWcgPj0gMHgxMDAwICYmIGZtdHRhZyA8PSAweDEwMDIpCisJCQlmbXRwdHIgPSBmbXRJSXRhZ1tmbXR0YWcgJiAweGZmZl07CisJCWVsc2UgaWYgKGZtdHRhZyA+PSAweDIwMDAgJiYgZm10dGFnIDw9IDB4MjAwNikKKwkJCWZtdHB0ciA9IGZtdElJSXRhZ1tmbXR0YWcgJiAweGZmZl07CisJCXByaW50ZigiICAgICAgICBiVGVybWluYWxMaW5rICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYkRlbGF5ICAgICAgICAgICAgICAlNXUgZnJhbWVzXG4iCisJCSAgICAgICAiICAgICAgICB3Rm9ybWF0VGFnICAgICAgICAgICU1dSAlc1xuIiwKKwkJICAgICAgIGJ1ZlszXSwgYnVmWzRdLCBmbXR0YWcsIGZtdHB0cik7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDcpOworCQlicmVhazsKKworCWNhc2UgMHgwMjogLyogRk9STUFUX1RZUEUgKi8KKwkJcHJpbnRmKCIoRk9STUFUX1RZUEUpXG4iKTsKKwkJaWYgKGJ1ZlswXSA8IDgpCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJcHJpbnRmKCIgICAgICAgIGJGb3JtYXRUeXBlICAgICAgICAgJTV1ICIsIGJ1ZlszXSk7CisJCXN3aXRjaCAoYnVmWzNdKSB7CisJCWNhc2UgMHgwMTogLyogRk9STUFUX1RZUEVfSSAqLworCQkJcHJpbnRmKCIoRk9STUFUX1RZUEVfSSlcbiIpOworCQkJaiA9IGJ1Zls3XSA/IChidWZbN10qMys4KSA6IDE0OworCQkJaWYgKGJ1ZlswXSA8IGopCisJCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCQlwcmludGYoIiAgICAgICAgYk5yQ2hhbm5lbHMgICAgICAgICAlNXVcbiIKKwkJCSAgICAgICAiICAgICAgICBiU3ViZnJhbWVTaXplICAgICAgICU1dVxuIgorCQkJICAgICAgICIgICAgICAgIGJCaXRSZXNvbHV0aW9uICAgICAgJTV1XG4iCisJCQkgICAgICAgIiAgICAgICAgYlNhbUZyZXFUeXBlICAgICAgICAlNXUgJXNcbiIsCisJCQkgICAgICAgYnVmWzRdLCBidWZbNV0sIGJ1Zls2XSwgYnVmWzddLCBidWZbN10gPyAiRGlzY3JldGUiIDogIkNvbnRpbnVvdXMiKTsKKwkJCWlmICghYnVmWzddKQorCQkJCXByaW50ZigiICAgICAgICB0TG93ZXJTYW1GcmVxICAgICAlN3VcbiIKKwkJCQkgICAgICAgIiAgICAgICAgdFVwcGVyU2FtRnJlcSAgICAgJTd1XG4iLAorCQkJCSAgICAgICBidWZbOF0gfCAoYnVmWzldIDw8IDgpIHwgKGJ1ZlsxMF0gPDwgMTYpLCBidWZbMTFdIHwgKGJ1ZlsxMl0gPDwgOCkgfCAoYnVmWzEzXSA8PCAxNikpOworCQkJZWxzZQorCQkJCWZvciAoaSA9IDA7IGkgPCBidWZbN107IGkrKykKKwkJCQkJcHJpbnRmKCIgICAgICAgIHRTYW1GcmVxWyUydV0gICAgICAlN3VcbiIsIGksCisJCQkJCSAgICAgICBidWZbOCszKmldIHwgKGJ1Zls5KzMqaV0gPDwgOCkgfCAoYnVmWzEwKzMqaV0gPDwgMTYpKTsKKwkJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIGopOworCQkJYnJlYWs7CisKKwkJY2FzZSAweDAyOiAvKiBGT1JNQVRfVFlQRV9JSSAqLworCQkJcHJpbnRmKCIoRk9STUFUX1RZUEVfSUkpXG4iKTsKKwkJCWogPSBidWZbOF0gPyAoYnVmWzddKjMrOSkgOiAxNTsKKwkJCWlmIChidWZbMF0gPCBqKQorCQkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQkJcHJpbnRmKCIgICAgICAgIHdNYXhCaXRSYXRlICAgICAgICAgJTV1XG4iCisJCQkgICAgICAgIiAgICAgICAgd1NhbXBsZXNQZXJGcmFtZSAgICAlNXVcbiIKKwkJCSAgICAgICAiICAgICAgICBiU2FtRnJlcVR5cGUgICAgICAgICU1dSAlc1xuIiwKKwkJCSAgICAgICBidWZbNF0gfCAoYnVmWzVdIDw8IDgpLCBidWZbNl0gfCAoYnVmWzddIDw8IDgpLCBidWZbOF0sIGJ1Zls4XSA/ICJEaXNjcmV0ZSIgOiAiQ29udGludW91cyIpOworCQkJaWYgKCFidWZbOF0pCisJCQkJcHJpbnRmKCIgICAgICAgIHRMb3dlclNhbUZyZXEgICAgICU3dVxuIgorCQkJCSAgICAgICAiICAgICAgICB0VXBwZXJTYW1GcmVxICAgICAlN3VcbiIsCisJCQkJICAgICAgIGJ1Zls5XSB8IChidWZbMTBdIDw8IDgpIHwgKGJ1ZlsxMV0gPDwgMTYpLCBidWZbMTJdIHwgKGJ1ZlsxM10gPDwgOCkgfCAoYnVmWzE0XSA8PCAxNikpOworCQkJZWxzZQorCQkJCWZvciAoaSA9IDA7IGkgPCBidWZbOF07IGkrKykKKwkJCQkJcHJpbnRmKCIgICAgICAgIHRTYW1GcmVxWyUydV0gICAgICAlN3VcbiIsIGksCisJCQkJCSAgICAgICBidWZbOSszKmldIHwgKGJ1ZlsxMCszKmldIDw8IDgpIHwgKGJ1ZlsxMSszKmldIDw8IDE2KSk7CisJCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCBqKTsKKwkJCWJyZWFrOworCisJCWNhc2UgMHgwMzogLyogRk9STUFUX1RZUEVfSUlJICovCisJCQlwcmludGYoIihGT1JNQVRfVFlQRV9JSUkpXG4iKTsKKwkJCWogPSBidWZbN10gPyAoYnVmWzddKjMrOCkgOiAxNDsKKwkJCWlmIChidWZbMF0gPCBqKQorCQkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQkJcHJpbnRmKCIgICAgICAgIGJOckNoYW5uZWxzICAgICAgICAgJTV1XG4iCisJCQkgICAgICAgIiAgICAgICAgYlN1YmZyYW1lU2l6ZSAgICAgICAlNXVcbiIKKwkJCSAgICAgICAiICAgICAgICBiQml0UmVzb2x1dGlvbiAgICAgICU1dVxuIgorCQkJICAgICAgICIgICAgICAgIGJTYW1GcmVxVHlwZSAgICAgICAgJTV1ICVzXG4iLAorCQkJICAgICAgIGJ1Zls0XSwgYnVmWzVdLCBidWZbNl0sIGJ1Zls3XSwgYnVmWzddID8gIkRpc2NyZXRlIiA6ICJDb250aW51b3VzIik7CisJCQlpZiAoIWJ1Zls3XSkKKwkJCQlwcmludGYoIiAgICAgICAgdExvd2VyU2FtRnJlcSAgICAgJTd1XG4iCisJCQkJICAgICAgICIgICAgICAgIHRVcHBlclNhbUZyZXEgICAgICU3dVxuIiwKKwkJCQkgICAgICAgYnVmWzhdIHwgKGJ1Zls5XSA8PCA4KSB8IChidWZbMTBdIDw8IDE2KSwgYnVmWzExXSB8IChidWZbMTJdIDw8IDgpIHwgKGJ1ZlsxM10gPDwgMTYpKTsKKwkJCWVsc2UKKwkJCQlmb3IgKGkgPSAwOyBpIDwgYnVmWzddOyBpKyspCisJCQkJCXByaW50ZigiICAgICAgICB0U2FtRnJlcVslMnVdICAgICAgJTd1XG4iLCBpLAorCQkJCQkgICAgICAgYnVmWzgrMyppXSB8IChidWZbOSszKmldIDw8IDgpIHwgKGJ1ZlsxMCszKmldIDw8IDE2KSk7CisJCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCBqKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlwcmludGYoIih1bmtub3duKVxuIgorCQkJICAgICAgICIgICAgICAgIEludmFsaWQgZGVzYyBmb3JtYXQgdHlwZToiKTsKKwkJCWR1bXBfYnl0ZXMoYnVmKzQsIGJ1ZlswXS00KTsKKwkJfQorCQlicmVhazsKKworCWNhc2UgMHgwMzogLyogRk9STUFUX1NQRUNJRklDICovCisJCXByaW50ZigiKEZPUk1BVF9TUEVDSUZJQylcbiIpOworCQlpZiAoYnVmWzBdIDwgNSkKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlmbXR0YWcgPSBidWZbM10gfCAoYnVmWzRdIDw8IDgpOworCQlpZiAoZm10dGFnIDw9IDUpCisJCQlmbXRwdHIgPSBmbXRJdGFnW2ZtdHRhZ107CisJCWVsc2UgaWYgKGZtdHRhZyA+PSAweDEwMDAgJiYgZm10dGFnIDw9IDB4MTAwMikKKwkJCWZtdHB0ciA9IGZtdElJdGFnW2ZtdHRhZyAmIDB4ZmZmXTsKKwkJZWxzZSBpZiAoZm10dGFnID49IDB4MjAwMCAmJiBmbXR0YWcgPD0gMHgyMDA2KQorCQkJZm10cHRyID0gZm10SUlJdGFnW2ZtdHRhZyAmIDB4ZmZmXTsKKwkJcHJpbnRmKCIgICAgICAgIHdGb3JtYXRUYWcgICAgICAgICAgJTV1ICVzXG4iLCBmbXR0YWcsIGZtdHB0cik7CisJCXN3aXRjaCAoZm10dGFnKSB7CisJCWNhc2UgMHgxMDAxOiAvKiBNUEVHICovCisJCQlpZiAoYnVmWzBdIDwgOCkKKwkJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJCXByaW50ZigiICAgICAgICBibU1QRUdDYXBhYmlsaXRpZXMgMHglMDR4XG4iLAorCQkJICAgICAgIGJ1Zls1XSB8IChidWZbNl0gPDwgOCkpOworCQkJaWYgKGJ1Zls1XSAmIDB4MDEpCisJCQkJcHJpbnRmKCIgICAgICAgICAgTGF5ZXIgSVxuIik7CisJCQlpZiAoYnVmWzVdICYgMHgwMikKKwkJCQlwcmludGYoIiAgICAgICAgICBMYXllciBJSVxuIik7CisJCQlpZiAoYnVmWzVdICYgMHgwNCkKKwkJCQlwcmludGYoIiAgICAgICAgICBMYXllciBJSUlcbiIpOworCQkJaWYgKGJ1Zls1XSAmIDB4MDgpCisJCQkJcHJpbnRmKCIgICAgICAgICAgTVBFRy0xIG9ubHlcbiIpOworCQkJaWYgKGJ1Zls1XSAmIDB4MTApCisJCQkJcHJpbnRmKCIgICAgICAgICAgTVBFRy0xIGR1YWwtY2hhbm5lbFxuIik7CisJCQlpZiAoYnVmWzVdICYgMHgyMCkKKwkJCQlwcmludGYoIiAgICAgICAgICBNUEVHLTIgc2Vjb25kIHN0ZXJlb1xuIik7CisJCQlpZiAoYnVmWzVdICYgMHg0MCkKKwkJCQlwcmludGYoIiAgICAgICAgICBNUEVHLTIgNy4xIGNoYW5uZWwgYXVnbWVudGF0aW9uXG4iKTsKKwkJCWlmIChidWZbNV0gJiAweDgwKQorCQkJCXByaW50ZigiICAgICAgICAgIEFkYXB0aXZlIG11bHRpLWNoYW5uZWwgcHJlZGljdGlvblxuIik7CisJCQlwcmludGYoIiAgICAgICAgICBNUEVHLTIgbXVsdGlsaW5ndWFsIHN1cHBvcnQ6ICIpOworCQkJc3dpdGNoIChidWZbNl0gJiAzKSB7CisJCQljYXNlIDA6CisJCQkJcHJpbnRmKCJOb3Qgc3VwcG9ydGVkXG4iKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAxOgorCQkJCXByaW50ZigiU3VwcG9ydGVkIGF0IEZzXG4iKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAyOgorCQkJCXByaW50ZigiUmVzZXJ2ZWRcbiIpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXByaW50ZigiU3VwcG9ydGVkIGF0IEZzIGFuZCAxLzJGc1xuIik7CisJCQkJYnJlYWs7CisJCQl9CisJCQlwcmludGYoIiAgICAgICAgYm1NUEVHRmVhdHVyZXMgICAgICAgMHglMDJ4XG4iLCBidWZbN10pOworCQkJcHJpbnRmKCIgICAgICAgICAgSW50ZXJuYWwgRHluYW1pYyBSYW5nZSBDb250cm9sOiAiKTsKKwkJCXN3aXRjaCAoKGJ1Zls3XSA8PCA0KSAmIDMpIHsKKwkJCWNhc2UgMDoKKwkJCQlwcmludGYoIm5vdCBzdXBwb3J0ZWRcbiIpOworCQkJCWJyZWFrOworCisJCQljYXNlIDE6CisJCQkJcHJpbnRmKCJzdXBwb3J0ZWQgYnV0IG5vdCBzY2FsYWJsZVxuIik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMjoKKwkJCQlwcmludGYoInNjYWxhYmxlLCBjb21tb24gYm9vc3QgYW5kIGN1dCBzY2FsaW5nIHZhbHVlXG4iKTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlwcmludGYoInNjYWxhYmxlLCBzZXBhcmF0ZSBib29zdCBhbmQgY3V0IHNjYWxpbmcgdmFsdWVcbiIpOworCQkJCWJyZWFrOworCQkJfQorCQkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgOCk7CisJCQlicmVhazsKKworCQljYXNlIDB4MTAwMjogLyogQUMtMyAqLworCQkJaWYgKGJ1ZlswXSA8IDEwKQorCQkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQkJcHJpbnRmKCIgICAgICAgIGJtQlNJRCAgICAgICAgIDB4JTA4eFxuIgorCQkJICAgICAgICIgICAgICAgIGJtQUMzRmVhdHVyZXMgICAgICAgIDB4JTAyeFxuIiwKKwkJCSAgICAgICBidWZbNV0gfCAoYnVmWzZdIDw8IDgpIHwgKGJ1Zls3XSA8PCAxNikgfCAoYnVmWzhdIDw8IDI0KSwgYnVmWzldKTsKKwkJCWlmIChidWZbOV0gJiAweDApCisJCQkJcHJpbnRmKCIgICAgICAgICAgUkYgbW9kZVxuIik7CisJCQlpZiAoYnVmWzldICYgMHgwKQorCQkJCXByaW50ZigiICAgICAgICAgIExpbmUgbW9kZVxuIik7CisJCQlpZiAoYnVmWzldICYgMHgwKQorCQkJCXByaW50ZigiICAgICAgICAgIEN1c3RvbTAgbW9kZVxuIik7CisJCQlpZiAoYnVmWzldICYgMHgwKQorCQkJCXByaW50ZigiICAgICAgICAgIEN1c3RvbTEgbW9kZVxuIik7CisJCQlwcmludGYoIiAgICAgICAgICBJbnRlcm5hbCBEeW5hbWljIFJhbmdlIENvbnRyb2w6ICIpOworCQkJc3dpdGNoICgoYnVmWzldID4+IDQpICYgMykgeworCQkJY2FzZSAwOgorCQkJCXByaW50Zigibm90IHN1cHBvcnRlZFxuIik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMToKKwkJCQlwcmludGYoInN1cHBvcnRlZCBidXQgbm90IHNjYWxhYmxlXG4iKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSAyOgorCQkJCXByaW50Zigic2NhbGFibGUsIGNvbW1vbiBib29zdCBhbmQgY3V0IHNjYWxpbmcgdmFsdWVcbiIpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXByaW50Zigic2NhbGFibGUsIHNlcGFyYXRlIGJvb3N0IGFuZCBjdXQgc2NhbGluZyB2YWx1ZVxuIik7CisJCQkJYnJlYWs7CisJCQl9CisJCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCA4KTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlwcmludGYoIih1bmtub3duKVxuIgorCQkJICAgICAgICIgICAgICAgIEludmFsaWQgZGVzYyBmb3JtYXQgdHlwZToiKTsKKwkJCWR1bXBfYnl0ZXMoYnVmKzQsIGJ1ZlswXS00KTsKKwkJfQorCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXByaW50ZigiICAgICAgICBJbnZhbGlkIGRlc2Mgc3VidHlwZToiKTsKKwkJZHVtcF9ieXRlcyhidWYrMywgYnVmWzBdLTMpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfYXVkaW9zdHJlYW1pbmdfZW5kcG9pbnQodW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0YXRpYyBjb25zdCBjaGFyICpsb2NrZGVsdW5pdHNbXSA9IHsgIlVuZGVmaW5lZCIsICJNaWxsaXNlY29uZHMiLCAiRGVjb2RlZCBQQ00gc2FtcGxlcyIsICJSZXNlcnZlZCIgfTsKKwl1bnNpZ25lZCBpbnQgbGNrZGVsaWR4OworCisJaWYgKGJ1ZlsxXSAhPSBVU0JfRFRfQ1NfRU5EUE9JTlQpCisJCXByaW50ZigiICAgICAgV2FybmluZzogSW52YWxpZCBkZXNjcmlwdG9yXG4iKTsKKwllbHNlIGlmIChidWZbMF0gPCA3KQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwlwcmludGYoIiAgICAgICAgQXVkaW9Db250cm9sIEVuZHBvaW50IERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgICAgICAgYkxlbmd0aCAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgICAgIGJEZXNjcmlwdG9yU3VidHlwZSAgJTV1ICglcylcbiIKKwkgICAgICAgIiAgICAgICAgICBibUF0dHJpYnV0ZXMgICAgICAgICAweCUwMnhcbiIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlsyXSA9PSAxID8gIkVQX0dFTkVSQUwiIDogImludmFsaWQiLCBidWZbM10pOworCWlmIChidWZbM10gJiAxKQorCQlwcmludGYoIiAgICAgICAgICAgIFNhbXBsaW5nIEZyZXF1ZW5jeVxuIik7CisJaWYgKGJ1ZlszXSAmIDIpCisJCXByaW50ZigiICAgICAgICAgICAgUGl0Y2hcbiIpOworCWlmIChidWZbM10gJiAxMjgpCisJCXByaW50ZigiICAgICAgICAgICAgTWF4UGFja2V0c09ubHlcbiIpOworCWxja2RlbGlkeCA9IGJ1Zls0XTsKKwlpZiAobGNrZGVsaWR4ID4gMykKKwkJbGNrZGVsaWR4ID0gMzsKKwlwcmludGYoIiAgICAgICAgICBiTG9ja0RlbGF5VW5pdHMgICAgICU1dSAlc1xuIgorCSAgICAgICAiICAgICAgICAgIHdMb2NrRGVsYXkgICAgICAgICAgJTV1ICVzXG4iLAorCSAgICAgICBidWZbNF0sIGxvY2tkZWx1bml0c1tsY2tkZWxpZHhdLCBidWZbNV0gfCAoYnVmWzZdIDw8IDgpLCBsb2NrZGVsdW5pdHNbbGNrZGVsaWR4XSk7CisJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgNyk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfbWlkaXN0cmVhbWluZ19pbnRlcmZhY2Uoc3RydWN0IHVzYl9kZXZfaGFuZGxlICpkZXYsIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdGF0aWMgY29uc3QgY2hhciAqamFja3R5cGVzW10gPSB7IlVuZGVmaW5lZCIsICJFbWJlZGRlZCIsICJFeHRlcm5hbCJ9OworCWNoYXIgamFja3N0clsxMjhdOworCXVuc2lnbmVkIGludCBqLCB0bGVuZ3RoLCBjYXBzc2l6ZTsKKwl1bnNpZ25lZCBsb25nIGNhcHM7CisKKwlpZiAoYnVmWzFdICE9IFVTQl9EVF9DU19JTlRFUkZBQ0UpCisJCXByaW50ZigiICAgICAgV2FybmluZzogSW52YWxpZCBkZXNjcmlwdG9yXG4iKTsKKwllbHNlIGlmIChidWZbMF0gPCAzKQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwlwcmludGYoICIgICAgICBNSURJU3RyZWFtaW5nIEludGVyZmFjZSBEZXNjcmlwdG9yOlxuIgorCQkiICAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICU1dVxuIgorCQkiICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICU1dVxuIgorCQkiICAgICAgICBiRGVzY3JpcHRvclN1YnR5cGUgICU1dSAiLAorCQlidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdKTsKKwlzd2l0Y2ggKGJ1ZlsyXSkgeworCWNhc2UgMHgwMToKKwkJcHJpbnRmKCIoSEVBREVSKVxuIik7CisJCWlmIChidWZbMF0gPCA3KQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCXRsZW5ndGggPSBidWZbNV0gfCAoYnVmWzZdIDw8IDgpOworCQlwcmludGYoICIgICAgICAgIGJjZEFEQyAgICAgICAgICAgICAgJTJ4LiUwMnhcbiIKKwkJCSIgICAgICAgIHdUb3RhbExlbmd0aCAgICAgICAgJTV1XG4iLAorCQkJYnVmWzRdLCBidWZbM10sIHRsZW5ndGgpOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCA3KTsKKwkJYnJlYWs7CisKKwljYXNlIDB4MDI6CisJCXByaW50ZigiKE1JRElfSU5fSkFDSylcbiIpOworCQlpZiAoYnVmWzBdIDwgNikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlnZXRfc3RyaW5nKGRldiwgamFja3N0ciwgc2l6ZW9mKGphY2tzdHIpLCBidWZbNV0pOworCQlwcmludGYoICIgICAgICAgIGJKYWNrVHlwZSAgICAgICAgICAgJTV1ICVzXG4iCisJCQkiICAgICAgICBiSmFja0lEICAgICAgICAgICAgICU1dVxuIgorCQkJIiAgICAgICAgaUphY2sgICAgICAgICAgICAgICAlNXUgJXNcbiIsCisJCQlidWZbM10sIGJ1ZlszXSA8IDMgPyBqYWNrdHlwZXNbYnVmWzNdXSA6ICJJbnZhbGlkIiwKKwkJCWJ1Zls0XSwgYnVmWzVdLCBqYWNrc3RyKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgNik7CisJCWJyZWFrOworCisJY2FzZSAweDAzOgorCQlwcmludGYoIihNSURJX09VVF9KQUNLKVxuIik7CisJCWlmIChidWZbMF0gPCA5KQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCXByaW50ZiggIiAgICAgICAgYkphY2tUeXBlICAgICAgICAgICAlNXUgJXNcbiIKKwkJCSIgICAgICAgIGJKYWNrSUQgICAgICAgICAgICAgJTV1XG4iCisJCQkiICAgICAgICBiTnJJbnB1dFBpbnMgICAgICAgICU1dVxuIiwKKwkJCWJ1ZlszXSwgYnVmWzNdIDwgMyA/IGphY2t0eXBlc1tidWZbM11dIDogIkludmFsaWQiLAorCQkJYnVmWzRdLCBidWZbNV0pOworCQlmb3IgKGo9MDsgaiA8IGJ1Zls1XTsgaisrKSB7CisJCQlwcmludGYoICIgICAgICAgIGJhU291cmNlSUQoJTJ1KSAgICAgICU1dVxuIgorCQkJCSIgICAgICAgIEJhU291cmNlUGluKCUydSkgICAgICU1dVxuIiwKKwkJCQlqLCBidWZbMipqKzZdLCBqLCBidWZbMipqKzddKTsKKwkJfQorCQlqID0gNitidWZbNV0qMjsgLyogbWlkaTEwLnBkZiBzYXlzLCBpbmNvcnJlY3RseTogNSsyKnAgKi8KKwkJZ2V0X3N0cmluZyhkZXYsIGphY2tzdHIsIHNpemVvZihqYWNrc3RyKSwgYnVmW2pdKTsKKwkJcHJpbnRmKCAiICAgICAgICBpSmFjayAgICAgICAgICAgICAgICU1dSAlc1xuIiwKKwkJCWJ1ZltqXSwgamFja3N0cik7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIGorMSk7CisJCWJyZWFrOworCisJY2FzZSAweDA0OgorCQlwcmludGYoIihFTEVNRU5UKVxuIik7CisJCWlmIChidWZbMF0gPCAxMikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoICIgICAgICAgIGJFbGVtZW50SUQgICAgICAgICAgJTV1XG4iCisJCQkiICAgICAgICBiTnJJbnB1dFBpbnMgICAgICAgICU1dVxuIiwKKwkJCWJ1ZlszXSwgYnVmWzRdKTsKKwkJZm9yKGo9MDsgaiA8IGJ1Zls0XTsgaisrKSB7CisJCXByaW50ZiggIiAgICAgICAgYmFTb3VyY2VJRCglMnUpICAgICAgJTV1XG4iCisJCQkiICAgICAgICBCYVNvdXJjZVBpbiglMnUpICAgICAlNXVcbiIsCisJCQlqLCBidWZbMipqKzVdLCBqLCBidWZbMipqKzZdKTsKKwkJfQorCQlqID0gNStidWZbNF0qMjsKKwkJcHJpbnRmKCAiICAgICAgICBiTnJPdXRwdXRQaW5zICAgICAgICU1dVxuIgorCQkJIiAgICAgICAgYkluVGVybWluYWxMaW5rICAgICAlNXVcbiIKKwkJCSIgICAgICAgIGJPdXRUZXJtaW5hbExpbmsgICAgJTV1XG4iCisJCQkiICAgICAgICBiRWxDYXBzU2l6ZSAgICAgICAgICU1dVxuIiwKKwkJCWJ1ZltqXSwgYnVmW2orMV0sIGJ1ZltqKzJdLCBidWZbaiszXSk7CisJCWNhcHNzaXplID0gYnVmW2orM107CisJCWNhcHMgPSAwOworCQlmb3Ioaj0wOyBqIDwgY2Fwc3NpemU7IGorKykgeworCQkJY2FwcyB8PSAoYnVmW2orOStidWZbNF0qMl0gPDwgKDgqaikpOworCQl9CisJCXByaW50ZiggIiAgICAgICAgYm1FbGVtZW50Q2FwcyAgMHglMDhseFxuIiwgY2Fwcyk7CisJCWlmIChjYXBzICYgMHgwMSkKKwkJCXByaW50ZiggIiAgICAgICAgICBVbmRlZmluZWRcbiIpOworCQlpZiAoY2FwcyAmIDB4MDIpCisJCQlwcmludGYoICIgICAgICAgICAgTUlESSBDbG9ja1xuIik7CisJCWlmIChjYXBzICYgMHgwNCkKKwkJCXByaW50ZiggIiAgICAgICAgICBNVEMgKE1JREkgVGltZSBDb2RlKVxuIik7CisJCWlmIChjYXBzICYgMHgwOCkKKwkJCXByaW50ZiggIiAgICAgICAgICBNTUMgKE1JREkgTWFjaGluZSBDb250cm9sKVxuIik7CisJCWlmIChjYXBzICYgMHgxMCkKKwkJCXByaW50ZiggIiAgICAgICAgICBHTTEgKEdlbmVyYWwgTUlESSB2LjEpXG4iKTsKKwkJaWYgKGNhcHMgJiAweDIwKQorCQkJcHJpbnRmKCAiICAgICAgICAgIEdNMiAoR2VuZXJhbCBNSURJIHYuMilcbiIpOworCQlpZiAoY2FwcyAmIDB4NDApCisJCQlwcmludGYoICIgICAgICAgICAgR1MgTUlESSBFeHRlbnNpb25cbiIpOworCQlpZiAoY2FwcyAmIDB4ODApCisJCQlwcmludGYoICIgICAgICAgICAgWEcgTUlESSBFeHRlbnNpb25cbiIpOworCQlpZiAoY2FwcyAmIDB4MTAwKQorCQkJcHJpbnRmKCAiICAgICAgICAgIEVGWFxuIik7CisJCWlmIChjYXBzICYgMHgyMDApCisJCQlwcmludGYoICIgICAgICAgICAgTUlESSBQYXRjaCBCYXlcbiIpOworCQlpZiAoY2FwcyAmIDB4NDAwKQorCQkJcHJpbnRmKCAiICAgICAgICAgIERMUzEgKERvd25sb2FkYWJsZSBTb3VuZHMgTGV2ZWwgMSlcbiIpOworCQlpZiAoY2FwcyAmIDB4ODAwKQorCQkJcHJpbnRmKCAiICAgICAgICAgIERMUzIgKERvd25sb2FkYWJsZSBTb3VuZHMgTGV2ZWwgMilcbiIpOworCQlqID0gOSsyKmJ1Zls0XStjYXBzc2l6ZTsKKwkJZ2V0X3N0cmluZyhkZXYsIGphY2tzdHIsIHNpemVvZihqYWNrc3RyKSwgYnVmW2pdKTsKKwkJcHJpbnRmKCAiICAgICAgICBpRWxlbWVudCAgICAgICAgICAgICU1dSAlc1xuIiwgYnVmW2pdLCBqYWNrc3RyKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgaisxKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoIlxuICAgICAgICBJbnZhbGlkIGRlc2Mgc3VidHlwZTogIik7CisJCWR1bXBfYnl0ZXMoYnVmKzMsIGJ1ZlswXS0zKTsKKwkJYnJlYWs7CisJfQorfQorCitzdGF0aWMgdm9pZCBkdW1wX21pZGlzdHJlYW1pbmdfZW5kcG9pbnQodW5zaWduZWQgY2hhciAqYnVmKQoreworCXVuc2lnbmVkIGludCBqOworCisJaWYgKGJ1ZlsxXSAhPSBVU0JfRFRfQ1NfRU5EUE9JTlQpCisJCXByaW50ZigiICAgICAgV2FybmluZzogSW52YWxpZCBkZXNjcmlwdG9yXG4iKTsKKwllbHNlIGlmIChidWZbMF0gPCA1KQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwlwcmludGYoIiAgICAgICAgTUlESVN0cmVhbWluZyBFbmRwb2ludCBEZXNjcmlwdG9yOlxuIgorCSAgICAgICAiICAgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgICBiRGVzY3JpcHRvclN1YnR5cGUgICU1dSAoJXMpXG4iCisJICAgICAgICIgICAgICAgICAgYk51bUVtYk1JRElKYWNrICAgICAlNXVcbiIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlsyXSA9PSAxID8gIkdFTkVSQUwiIDogIkludmFsaWQiLCBidWZbM10pOworCWZvciAoaj0wOyBqPGJ1ZlszXTsgaisrKSB7CisJCXByaW50ZigiICAgICAgICAgIGJhQXNzb2NKYWNrSUQoJTJ1KSAgICU1dVxuIiwgaiwgYnVmWzQral0pOworCX0KKwlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAgICIsIDQrYnVmWzNdKTsKK30KKworLyoKKyAqIFZpZGVvIENsYXNzIGRlc2NyaXB0b3IgZHVtcAorICovCisKK3N0YXRpYyB2b2lkIGR1bXBfdmlkZW9jb250cm9sX2ludGVyZmFjZShzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0YXRpYyBjb25zdCBjaGFyICpjdHJsbmFtZXNbXSA9IHsKKwkJIkJyaWdodG5lc3MiLCAiQ29udHJhc3QiLCAiSHVlIiwgIlNhdHVyYXRpb24iLCAiU2hhcnBuZXNzIiwgIkdhbW1hIiwKKwkJIldoaXRlIEJhbGFuY2UgVGVtcGVyYXR1cmUiLCAiV2hpdGUgQmFsYW5jZSBDb21wb25lbnQiLCAiQmFja2xpZ2h0IENvbXBlbnNhdGlvbiIsCisJCSJHYWluIiwgIlBvd2VyIExpbmUgRnJlcXVlbmN5IiwgIkh1ZSwgQXV0byIsICJXaGl0ZSBCYWxhbmNlIFRlbXBlcmF0dXJlLCBBdXRvIiwKKwkJIldoaXRlIEJhbGFuY2UgQ29tcG9uZW50LCBBdXRvIiwgIkRpZ2l0YWwgTXVsdGlwbGllciIsICJEaWdpdGFsIE11bHRpcGxpZXIgTGltaXQiLAorCQkiQW5hbG9nIFZpZGVvIFN0YW5kYXJkIiwgIkFuYWxvZyBWaWRlbyBMb2NrIFN0YXR1cyIKKwl9OworCXN0YXRpYyBjb25zdCBjaGFyICpjYW1jdHJsbmFtZXNbXSA9IHsKKwkJIlNjYW5uaW5nIE1vZGUiLCAiQXV0by1FeHBvc3VyZSBNb2RlIiwgIkF1dG8tRXhwb3N1cmUgUHJpb3JpdHkiLAorCQkiRXhwb3N1cmUgVGltZSAoQWJzb2x1dGUpIiwgIkV4cG9zdXJlIFRpbWUgKFJlbGF0aXZlKSIsICJGb2N1cyAoQWJzb2x1dGUpIiwKKwkJIkZvY3VzIChSZWxhdGl2ZSkiLCAiSXJpcyAoQWJzb2x1dGUpIiwgIklyaXMgKFJlbGF0aXZlKSIsICJab29tIChBYnNvbHV0ZSkiLAorCQkiWm9vbSAoUmVsYXRpdmUpIiwgIlBhblRpbHQgKEFic29sdXRlKSIsICJQYW5UaWx0IChSZWxhdGl2ZSkiLAorCQkiUm9sbCAoQWJzb2x1dGUpIiwgIlJvbGwgKFJlbGF0aXZlKSIsICJSZXNlcnZlZCIsICJSZXNlcnZlZCIsICJGb2N1cywgQXV0byIsCisJCSJQcml2YWN5IgorCX07CisJc3RhdGljIGNvbnN0IGNoYXIgKnN0ZG5hbWVzW10gPSB7CisJCSJOb25lIiwgIk5UU0MgLSA1MjUvNjAiLCAiUEFMIC0gNjI1LzUwIiwgIlNFQ0FNIC0gNjI1LzUwIiwKKwkJIk5UU0MgLSA2MjUvNTAiLCAiUEFMIC0gNTI1LzYwIiB9OworCXVuc2lnbmVkIGludCBpLCBjdHJscywgc3RkcywgbiwgcCwgdGVybXQsIGZyZXE7CisJY2hhciB0ZXJtWzEyOF0sIHRlcm10c1sxMjhdOworCisJaWYgKGJ1ZlsxXSAhPSBVU0JfRFRfQ1NfSU5URVJGQUNFKQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IEludmFsaWQgZGVzY3JpcHRvclxuIik7CisJZWxzZSBpZiAoYnVmWzBdIDwgMykKKwkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJcHJpbnRmKCIgICAgICBWaWRlb0NvbnRyb2wgSW50ZXJmYWNlIERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yU3VidHlwZSAgJTV1ICIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0pOworCXN3aXRjaCAoYnVmWzJdKSB7CisJY2FzZSAweDAxOiAgLyogSEVBREVSICovCisJCXByaW50ZigiKEhFQURFUilcbiIpOworCQluID0gYnVmWzExXTsKKwkJaWYgKGJ1ZlswXSA8IDEyK24pCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJZnJlcSA9IGJ1Zls3XSB8IChidWZbOF0gPDwgOCkgfCAoYnVmWzldIDw8IDE2KSB8IChidWZbMTBdIDw8IDI0KTsKKwkJcHJpbnRmKCIgICAgICAgIGJjZFVWQyAgICAgICAgICAgICAgJTJ4LiUwMnhcbiIKKwkJICAgICAgICIgICAgICAgIHdUb3RhbExlbmd0aCAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBkd0Nsb2NrRnJlcXVlbmN5ICAgICU1dS4lMDZ1TUh6XG4iCisJCSAgICAgICAiICAgICAgICBiSW5Db2xsZWN0aW9uICAgICAgICU1dVxuIiwKKwkJICAgICAgIGJ1Zls0XSwgYnVmWzNdLCBidWZbNV0gfCAoYnVmWzZdIDw8IDgpLCBmcmVxIC8gMTAwMDAwMCwKKwkJICAgICAgIGZyZXEgJSAxMDAwMDAwLCBuKTsKKwkJZm9yKGkgPSAwOyBpIDwgbjsgaSsrKQorCQkJcHJpbnRmKCIgICAgICAgIGJhSW50ZXJmYWNlTnIoJTJ1KSAgICU1dVxuIiwgaSwgYnVmWzEyK2ldKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgMTIrbik7CisJCWJyZWFrOworCisJY2FzZSAweDAyOiAgLyogSU5QVVRfVEVSTUlOQUwgKi8KKwkJcHJpbnRmKCIoSU5QVVRfVEVSTUlOQUwpXG4iKTsKKwkJZ2V0X3N0cmluZyhkZXYsIHRlcm0sIHNpemVvZih0ZXJtKSwgYnVmWzddKTsKKwkJdGVybXQgPSBidWZbNF0gfCAoYnVmWzVdIDw8IDgpOworCQluID0gdGVybXQgPT0gMHgwMjAxID8gNyA6IDA7CisJCWdldF92aWRlb3Rlcm1pbmFsX3N0cmluZyh0ZXJtdHMsIHNpemVvZih0ZXJtdHMpLCB0ZXJtdCk7CisJCWlmIChidWZbMF0gPCA4ICsgbikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYlRlcm1pbmFsSUQgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIHdUZXJtaW5hbFR5cGUgICAgICAweCUwNHggJXNcbiIKKwkJICAgICAgICIgICAgICAgIGJBc3NvY1Rlcm1pbmFsICAgICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzNdLCB0ZXJtdCwgdGVybXRzLCBidWZbNl0pOworCQlwcmludGYoIiAgICAgICAgaVRlcm1pbmFsICAgICAgICAgICAlNXUgJXNcbiIsCisJCSAgICAgICBidWZbN10sIHRlcm0pOworCQlpZiAodGVybXQgPT0gMHgwMjAxKSB7CisJCQluICs9IGJ1ZlsxNF07CisJCQlwcmludGYoIiAgICAgICAgd09iamVjdGl2ZUZvY2FsTGVuZ3RoTWluICAlNXVcbiIKKwkJCSAgICAgICAiICAgICAgICB3T2JqZWN0aXZlRm9jYWxMZW5ndGhNYXggICU1dVxuIgorCQkJICAgICAgICIgICAgICAgIHdPY3VsYXJGb2NhbExlbmd0aCAgICAgICAgJTV1XG4iCisJCQkgICAgICAgIiAgICAgICAgYkNvbnRyb2xTaXplICAgICAgICAgICAgICAlNXVcbiIsCisJCQkgICAgICAgYnVmWzhdIHwgKGJ1Zls5XSA8PCA4KSwgYnVmWzEwXSB8IChidWZbMTFdIDw8IDgpLAorCQkJICAgICAgIGJ1ZlsxMl0gfCAoYnVmWzEzXSA8PCA4KSwgYnVmWzE0XSk7CisJCQljdHJscyA9IDA7CisJCQlmb3IgKGkgPSAwOyBpIDwgMyAmJiBpIDwgYnVmWzE0XTsgaSsrKQorCQkJCWN0cmxzID0gKGN0cmxzIDw8IDgpIHwgYnVmWzgrbi1pLTFdOworCQkJcHJpbnRmKCIgICAgICAgIGJtQ29udHJvbHMgICAgICAgICAgIDB4JTA4eFxuIiwgY3RybHMpOworCQkJZm9yIChpID0gMDsgaSA8IDE5OyBpKyspCisJCQkJaWYgKChjdHJscyA+PiBpKSAmIDEpCisJCQkJCXByaW50ZigiICAgICAgICAgICVzXG4iLCBjYW1jdHJsbmFtZXNbaV0pOworCQl9CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDgrbik7CisJCWJyZWFrOworCisJY2FzZSAweDAzOiAgLyogT1VUUFVUX1RFUk1JTkFMICovCisJCXByaW50ZigiKE9VVFBVVF9URVJNSU5BTClcbiIpOworCQlnZXRfc3RyaW5nKGRldiwgdGVybSwgc2l6ZW9mKHRlcm0pLCBidWZbOF0pOworCQl0ZXJtdCA9IGJ1Zls0XSB8IChidWZbNV0gPDwgOCk7CisJCWdldF9hdWRpb3Rlcm1pbmFsX3N0cmluZyh0ZXJtdHMsIHNpemVvZih0ZXJtdHMpLCB0ZXJtdCk7CisJCWlmIChidWZbMF0gPCA5KQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCXByaW50ZigiICAgICAgICBiVGVybWluYWxJRCAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgd1Rlcm1pbmFsVHlwZSAgICAgIDB4JTA0eCAlc1xuIgorCQkgICAgICAgIiAgICAgICAgYkFzc29jVGVybWluYWwgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJTb3VyY2VJRCAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBpVGVybWluYWwgICAgICAgICAgICU1dSAlc1xuIiwKKwkJICAgICAgIGJ1ZlszXSwgdGVybXQsIHRlcm10cywgYnVmWzZdLCBidWZbN10sIGJ1Zls4XSwgdGVybSk7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDkpOworCQlicmVhazsKKworCWNhc2UgMHgwNDogIC8qIFNFTEVDVE9SX1VOSVQgKi8KKwkJcHJpbnRmKCIoU0VMRUNUT1JfVU5JVClcbiIpOworCQlwID0gYnVmWzRdOworCQlpZiAoYnVmWzBdIDwgNitwKQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCWdldF9zdHJpbmcoZGV2LCB0ZXJtLCBzaXplb2YodGVybSksIGJ1Zls1K3BdKTsKKworCQlwcmludGYoIiAgICAgICAgYlVuaXRJRCAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJOckluUGlucyAgICAgICAgICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzNdLCBwKTsKKwkJZm9yIChpID0gMDsgaSA8IHA7IGkrKykKKwkJCXByaW50ZigiICAgICAgICBiYVNvdXJjZSglMnUpICAgICAgICAlNXVcbiIsIGksIGJ1Zls1K2ldKTsKKwkJcHJpbnRmKCIgICAgICAgIGlTZWxlY3RvciAgICAgICAgICAgJTV1ICVzXG4iLAorCQkgICAgICAgYnVmWzUrcF0sIHRlcm0pOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCA2K3ApOworCQlicmVhazsKKworCWNhc2UgMHgwNTogIC8qIFBST0NFU1NJTkdfVU5JVCAqLworCQlwcmludGYoIihQUk9DRVNTSU5HX1VOSVQpXG4iKTsKKwkJbiA9IGJ1Zls3XTsKKwkJZ2V0X3N0cmluZyhkZXYsIHRlcm0sIHNpemVvZih0ZXJtKSwgYnVmWzgrbl0pOworCQlpZiAoYnVmWzBdIDwgMTArbikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYlVuaXRJRCAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJTb3VyY2VJRCAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICB3TWF4TXVsdGlwbGllciAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYkNvbnRyb2xTaXplICAgICAgICAlNXVcbiIsCisJCSAgICAgICBidWZbM10sIGJ1Zls0XSwgYnVmWzVdIHwgKGJ1Zls2XSA8PCA4KSwgbik7CisJCWN0cmxzID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IDMgJiYgaSA8IG47IGkrKykKKwkJCWN0cmxzID0gKGN0cmxzIDw8IDgpIHwgYnVmWzgrbi1pLTFdOworCQlwcmludGYoIiAgICAgICAgYm1Db250cm9scyAgICAgMHglMDh4XG4iLCBjdHJscyk7CisJCWZvciAoaSA9IDA7IGkgPCAxODsgaSsrKQorCQkJaWYgKChjdHJscyA+PiBpKSAmIDEpCisJCQkJcHJpbnRmKCIgICAgICAgICAgJXNcbiIsIGN0cmxuYW1lc1tpXSk7CisJCXN0ZHMgPSBidWZbOStuXTsKKwkJcHJpbnRmKCIgICAgICAgIGlQcm9jZXNzaW5nICAgICAgICAgJTV1ICVzXG4iCisJCSAgICAgICAiICAgICAgICBibVZpZGVvU3RhbmRhcmRzICAgICAweCUyeFxuIiwgYnVmWzgrbl0sIHRlcm0sIHN0ZHMpOworCQlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQorCQkJaWYgKChzdGRzID4+IGkpICYgMSkKKwkJCQlwcmludGYoIiAgICAgICAgICAlc1xuIiwgc3RkbmFtZXNbaV0pOworCQlicmVhazsKKworCWNhc2UgMHgwNjogIC8qIEVYVEVOU0lPTl9VTklUICovCisJCXByaW50ZigiKEVYVEVOU0lPTl9VTklUKVxuIik7CisJCXAgPSBidWZbMjFdOworCQluID0gYnVmWzIyK3BdOworCQlnZXRfc3RyaW5nKGRldiwgdGVybSwgc2l6ZW9mKHRlcm0pLCBidWZbMjMrcCtuXSk7CisJCWlmIChidWZbMF0gPCAyNCtwK24pCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJcHJpbnRmKCIgICAgICAgIGJVbml0SUQgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBndWlkRXh0ZW5zaW9uQ29kZSAgICAgICAgICVzXG4iCisJCSAgICAgICAiICAgICAgICBiTnVtQ29udHJvbCAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYk5yUGlucyAgICAgICAgICAgICAlNXVcbiIsCisJCSAgICAgICBidWZbM10sIGdldF9ndWlkKCZidWZbNF0pLCBidWZbMjBdLCBidWZbMjFdKTsKKwkJZm9yIChpID0gMDsgaSA8IHA7IGkrKykKKwkJCXByaW50ZigiICAgICAgICBiYVNvdXJjZUlEKCUydSkgICAgICAlNXVcbiIsIGksIGJ1ZlsyMitpXSk7CisJCXByaW50ZigiICAgICAgICBiQ29udHJvbFNpemUgICAgICAgICU1dVxuIiwgYnVmWzIyK3BdKTsKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJCXByaW50ZigiICAgICAgICBibUNvbnRyb2xzKCUydSkgICAgICAgMHglMDJ4XG4iLCBpLCBidWZbMjMrcCtpXSk7CisJCXByaW50ZigiICAgICAgICBpRXh0ZW5zaW9uICAgICAgICAgICU1dSAlc1xuIiwKKwkJICAgICAgIGJ1ZlsyMytwK25dLCB0ZXJtKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgMjQrcCtuKTsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlwcmludGYoIih1bmtub3duKVxuIgorCQkgICAgICAgIiAgICAgICAgSW52YWxpZCBkZXNjIHN1YnR5cGU6Iik7CisJCWR1bXBfYnl0ZXMoYnVmKzMsIGJ1ZlswXS0zKTsKKwkJYnJlYWs7CisJfQorfQorCitzdGF0aWMgdm9pZCBkdW1wX3ZpZGVvc3RyZWFtaW5nX2ludGVyZmFjZSh1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RhdGljIGNvbnN0IGNoYXIgKmNvbG9yUHJpbXNbXSA9IHsgIlVuc3BlY2lmaWVkIiwgIkJULjcwOSxzUkdCIiwKKwkJIkJULjQ3MC0yIChNKSIsICJCVC40NzAtMiAoQixHKSIsICJTTVBURSAxNzBNIiwgIlNNUFRFIDI0ME0iIH07CisJc3RhdGljIGNvbnN0IGNoYXIgKnRyYW5zZmVyQ2hhcnNbXSA9IHsgIlVuc3BlY2lmaWVkIiwgIkJULjcwOSIsCisJCSJCVC40NzAtMiAoTSkiLCAiQlQuNDcwLTIgKEIsRykiLCAiU01QVEUgMTcwTSIsICJTTVBURSAyNDBNIiwKKwkJIkxpbmVhciIsICJzUkdCIn07CisJc3RhdGljIGNvbnN0IGNoYXIgKm1hdHJpeENvZWZmc1tdID0geyAiVW5zcGVjaWZpZWQiLCAiQlQuNzA5IiwKKwkJIkZDQyIsICJCVC40NzAtMiAoQixHKSIsICJTTVBURSAxNzBNIChCVC42MDEpIiwgIlNNUFRFIDI0ME0iIH07CisJdW5zaWduZWQgaW50IGksIG0sIG4sIHAsIGZsYWdzLCBsZW47CisKKwlpZiAoYnVmWzFdICE9IFVTQl9EVF9DU19JTlRFUkZBQ0UpCisJCXByaW50ZigiICAgICAgV2FybmluZzogSW52YWxpZCBkZXNjcmlwdG9yXG4iKTsKKwllbHNlIGlmIChidWZbMF0gPCAzKQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwlwcmludGYoIiAgICAgIFZpZGVvU3RyZWFtaW5nIEludGVyZmFjZSBEZXNjcmlwdG9yOlxuIgorCSAgICAgICAiICAgICAgICBiTGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgICBiRGVzY3JpcHRvclR5cGUgICAgICAgICAgICAgICAgICU1dVxuIgorCSAgICAgICAiICAgICAgICBiRGVzY3JpcHRvclN1YnR5cGUgICAgICAgICAgICAgICU1dSAiLAorCSAgICAgICBidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdKTsKKwlzd2l0Y2ggKGJ1ZlsyXSkgeworCWNhc2UgMHgwMTogLyogSU5QVVRfSEVBREVSICovCisJCXByaW50ZigiKElOUFVUX0hFQURFUilcbiIpOworCQlwID0gYnVmWzNdOworCQluID0gYnVmWzEyXTsKKwkJaWYgKGJ1ZlswXSA8IDEzK3AqbikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYk51bUZvcm1hdHMgICAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIHdUb3RhbExlbmd0aCAgICAgICAgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiRW5kUG9pbnRBZGRyZXNzICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYm1JbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJUZXJtaW5hbExpbmsgICAgICAgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiU3RpbGxDYXB0dXJlTWV0aG9kICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYlRyaWdnZXJTdXBwb3J0ICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJUcmlnZ2VyVXNhZ2UgICAgICAgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiQ29udHJvbFNpemUgICAgICAgICAgICAgICAgICAgICU1dVxuIiwKKwkJICAgICAgIHAsIGJ1Zls0XSB8IChidWZbNV0gPDwgOCksIGJ1Zls2XSwgYnVmWzddLCBidWZbOF0sCisJCSAgICAgICBidWZbOV0sIGJ1ZlsxMF0sIGJ1ZlsxMV0sIG4pOworCQlmb3IoaSA9IDA7IGkgPCBwOyBpKyspCisJCQlwcmludGYoCisJCQkiICAgICAgICBibWFDb250cm9scyglMnUpICAgICAgICAgICAgICAgICAlNXVcbiIsCisJCQkJaSwgYnVmWzEzK3Aqbl0pOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCAxMytwKm4pOworCQlicmVhazsKKworCWNhc2UgMHgwMjogLyogT1VUUFVUX0hFQURFUiAqLworCQlwcmludGYoIihPVVRQVVRfSEVBREVSKVxuIik7CisJCXAgPSBidWZbM107CisJCW4gPSBidWZbOF07CisJCWlmIChidWZbMF0gPCA5K3AqbikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYk51bUZvcm1hdHMgICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgd1RvdGFsTGVuZ3RoICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYkVuZHBvaW50QWRkcmVzcyAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYlRlcm1pbmFsTGluayAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYkNvbnRyb2xTaXplICAgICAgICAgICAgICAgICU1dVxuIiwKKwkJICAgICAgIHAsIGJ1Zls0XSB8IChidWZbNV0gPDwgOCksIGJ1Zls2XSwgYnVmWzddLCBuKTsKKwkJZm9yKGkgPSAwOyBpIDwgcDsgaSsrKQorCQkJcHJpbnRmKAorCQkJIiAgICAgICAgYm1hQ29udHJvbHMoJTJ1KSAgICAgICAgICAgICAlNXVcbiIsCisJCQkJaSwgYnVmWzkrcCpuXSk7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDkrcCpuKTsKKwkJYnJlYWs7CisKKwljYXNlIDB4MDM6IC8qIFNUSUxMX0lNQUdFX0ZSQU1FICovCisJCXByaW50ZigiKFNUSUxMX0lNQUdFX0ZSQU1FKVxuIik7CisJCW4gPSBidWZbNF07CisJCW0gPSBidWZbNSs0Km5dOworCQlpZiAoYnVmWzBdIDwgNis0Km4rbSkKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYkVuZHBvaW50QWRkcmVzcyAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJOdW1JbWFnZVNpemVQYXR0ZXJucyAgICAgICAgICAgICAlM3VcbiIsCisJCSAgICAgICBidWZbM10sIG4pOworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorCQkJcHJpbnRmKCIgICAgICAgIHdXaWR0aCglMnUpICAgICAgICAgICAgICAgICAgICAgICU1dVxuIgorCQkJICAgICAgICIgICAgICAgIHdIZWlnaHQoJTJ1KSAgICAgICAgICAgICAgICAgICAgICU1dVxuIiwKKwkJCSAgICAgICBpLCBidWZbNSs0KmldIHwgKGJ1Zls2KzQqaV0gPDwgOCksCisJCQkgICAgICAgaSwgYnVmWzcrNCppXSB8IChidWZbOCs0KmldIDw8IDgpKTsKKwkJcHJpbnRmKCIgICAgICAgIGJOdW1Db21wcmVzc2lvblBhdHRlcm5zICAgICAgICAgICAlM3VcbiIsIG4pOworCQlmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKQorCQkJcHJpbnRmKCIgICAgICAgIGJDb21wcmVzc2lvbiglMnUpICAgICAgICAgICAgICAgICU1dVxuIiwKKwkJCSAgICAgICBpLCBidWZbNis0Km4raV0pOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCA2KzQqbittKTsKKwkJYnJlYWs7CisKKwljYXNlIDB4MDQ6IC8qIEZPUk1BVF9VTkNPTVBSRVNTRUQgKi8KKwkJcHJpbnRmKCIoRk9STUFUX1VOQ09NUFJFU1NFRClcbiIpOworCQlpZiAoYnVmWzBdIDwgMjcpCisJCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwkJZmxhZ3MgPSBidWZbMjVdOworCQlwcmludGYoIiAgICAgICAgYkZvcm1hdEluZGV4ICAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJOdW1GcmFtZURlc2NyaXB0b3JzICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBndWlkRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzXG4iCisJCSAgICAgICAiICAgICAgICBiQml0c1BlclBpeGVsICAgICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYkRlZmF1bHRGcmFtZUluZGV4ICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJBc3BlY3RSYXRpb1ggICAgICAgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiQXNwZWN0UmF0aW9ZICAgICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYm1JbnRlcmxhY2VGbGFncyAgICAgICAgICAgICAgICAgMHglMDJ4XG4iLAorCQkgICAgICAgYnVmWzNdLCBidWZbNF0sIGdldF9ndWlkKCZidWZbNV0pLCBidWZbMjFdLCBidWZbMjJdLAorCQkgICAgICAgYnVmWzIzXSwgYnVmWzI0XSwgZmxhZ3MpOworCQlwcmludGYoIiAgICAgICAgICBJbnRlcmxhY2VkIHN0cmVhbSBvciB2YXJpYWJsZTogJXNcbiIsCisJCSAgICAgICAoZmxhZ3MgJiAoMSA8PCAwKSkgPyAiWWVzIiA6ICJObyIpOworCQlwcmludGYoIiAgICAgICAgICBGaWVsZHMgcGVyIGZyYW1lOiAldSBmaWVsZHNcbiIsCisJCSAgICAgICAoZmxhZ3MgJiAoMSA8PCAxKSkgPyAyIDogMSk7CisJCXByaW50ZigiICAgICAgICAgIEZpZWxkIDEgZmlyc3Q6ICVzXG4iLAorCQkgICAgICAgKGZsYWdzICYgKDEgPDwgMikpID8gIlllcyIgOiAiTm8iKTsKKwkJcHJpbnRmKCIgICAgICAgICAgRmllbGQgcGF0dGVybjogIik7CisJCXN3aXRjaCgoZmxhZ3MgPj4gNCkgJiAweDAzKQorCQl7CisJCWNhc2UgMDoKKwkJCXByaW50ZigiRmllbGQgMSBvbmx5XG4iKTsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlwcmludGYoIkZpZWxkIDIgb25seVxuIik7CisJCQlicmVhazsKKwkJY2FzZSAyOgorCQkJcHJpbnRmKCJSZWd1bGFyIHBhdHRlcm4gb2YgZmllbGRzIDEgYW5kIDJcbiIpOworCQkJYnJlYWs7CisJCWNhc2UgMzoKKwkJCXByaW50ZigiUmFuZG9tIHBhdHRlcm4gb2YgZmllbGRzIDEgYW5kIDJcbiIpOworCQkJYnJlYWs7CisJCX0KKyAJCXByaW50ZigiICAgICAgICAgIGJDb3B5UHJvdGVjdCAgICAgICAgICAgICAgICAgICU1dVxuIiwgYnVmWzI2XSk7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDI3KTsKKwkJYnJlYWs7CisKKwljYXNlIDB4MDU6IC8qIEZSQU1FIFVOQ09NUFJFU1NFRCAqLworCWNhc2UgMHgwNzogLyogRlJBTUVfTUpQRUcgKi8KKwkJaWYgKGJ1ZlsyXSA9PSAweDA1KQorCQkJcHJpbnRmKCIoRlJBTUVfVU5DT01QUkVTU0VEKVxuIik7CisJCWVsc2UKKwkJCXByaW50ZigiKEZSQU1FX01KUEVHKVxuIik7CisJCWxlbiA9IChidWZbMjVdICE9IDApID8gKDI2K2J1ZlsyNV0qNCkgOiAzODsKKwkJaWYgKGJ1ZlswXSA8IGxlbikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlmbGFncyA9IGJ1Zls0XTsKKwkJcHJpbnRmKCIgICAgICAgIGJGcmFtZUluZGV4ICAgICAgICAgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBibUNhcGFiaWxpdGllcyAgICAgICAgICAgICAgICAgICAweCUwMnhcbiIsCisJCSAgICAgICBidWZbM10sIGZsYWdzKTsKKwkJcHJpbnRmKCIgICAgICAgICAgU3RpbGwgaW1hZ2UgJXNzdXBwb3J0ZWRcbiIsCisJCSAgICAgICAoZmxhZ3MgJiAoMSA8PCAwKSkgPyAiIiA6ICJ1biIpOworCQlpZiAoZmxhZ3MgJiAoMSA8PCAxKSkKKwkJcHJpbnRmKCIgICAgICAgICAgRml4ZWQgZnJhbWUtcmF0ZVxuIik7CisJCXByaW50ZigiICAgICAgICB3V2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgd0hlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGR3TWluQml0UmF0ZSAgICAgICAgICAgICAgICAlOXVcbiIKKwkJICAgICAgICIgICAgICAgIGR3TWF4Qml0UmF0ZSAgICAgICAgICAgICAgICAlOXVcbiIKKwkJICAgICAgICIgICAgICAgIGR3TWF4VmlkZW9GcmFtZUJ1ZmZlclNpemUgICAlOXVcbiIKKwkJICAgICAgICIgICAgICAgIGR3RGVmYXVsdEZyYW1lSW50ZXJ2YWwgICAgICAlOXVcbiIKKwkJICAgICAgICIgICAgICAgIGJGcmFtZUludGVydmFsVHlwZSAgICAgICAgICAgICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzVdIHwgKGJ1Zls2XSA8PCAgOCksIGJ1Zls3XSB8IChidWZbOF0gPDwgOCksCisJCSAgICAgICBidWZbOV0gfCAoYnVmWzEwXSA8PCA4KSB8IChidWZbMTFdIDw8IDE2KSB8IChidWZbMTJdIDw8IDI0KSwKKwkJICAgICAgIGJ1ZlsxM10gfCAoYnVmWzE0XSA8PCA4KSB8IChidWZbMTVdIDw8IDE2KSB8IChidWZbMTZdIDw8IDI0KSwKKwkJICAgICAgIGJ1ZlsxN10gfCAoYnVmWzE4XSA8PCA4KSB8IChidWZbMTldIDw8IDE2KSB8IChidWZbMjBdIDw8IDI0KSwKKwkJICAgICAgIGJ1ZlsyMV0gfCAoYnVmWzIyXSA8PCA4KSB8IChidWZbMjNdIDw8IDE2KSB8IChidWZbMjRdIDw8IDI0KSwKKwkJICAgICAgIGJ1ZlsyNV0pOworCQlpZiAoYnVmWzI1XSA9PSAwKQorCQkJcHJpbnRmKCIgICAgICAgIGR3TWluRnJhbWVJbnRlcnZhbCAgICAgICAgICAlOXVcbiIKKwkJCSAgICAgICAiICAgICAgICBkd01heEZyYW1lSW50ZXJ2YWwgICAgICAgICAgJTl1XG4iCisJCQkgICAgICAgIiAgICAgICAgZHdGcmFtZUludGVydmFsU3RlcCAgICAgICAgICU5dVxuIiwKKwkJCSAgICAgICBidWZbMjZdIHwgKGJ1ZlsyN10gPDwgOCkgfCAoYnVmWzI4XSA8PCAxNikgfCAoYnVmWzI5XSA8PCAyNCksCisJCQkgICAgICAgYnVmWzMwXSB8IChidWZbMzFdIDw8IDgpIHwgKGJ1ZlszMl0gPDwgMTYpIHwgKGJ1ZlszM10gPDwgMjQpLAorCQkJICAgICAgIGJ1ZlszNF0gfCAoYnVmWzM1XSA8PCA4KSB8IChidWZbMzZdIDw8IDE2KSB8IChidWZbMzddIDw8IDI0KSk7CisJCWVsc2UKKwkJCWZvciAoaSA9IDA7IGkgPCBidWZbMjVdOyBpKyspCisJCQkJcHJpbnRmKCIgICAgICAgIGR3RnJhbWVJbnRlcnZhbCglMnUpICAgICAgICAgJTl1XG4iLAorCQkJCSAgICAgICBpLCBidWZbMjYrNCppXSB8IChidWZbMjcrNCppXSA8PCA4KSB8CisJCQkJICAgICAgIChidWZbMjgrNCppXSA8PCAxNikgfCAoYnVmWzI5KzQqaV0gPDwgMjQpKTsKKwkJZHVtcF9qdW5rKGJ1ZiwgIiAgICAgICAgIiwgbGVuKTsKKwkJYnJlYWs7CisKKwljYXNlIDB4MDY6IC8qIEZPUk1BVF9NSlBFRyAqLworCQlwcmludGYoIihGT1JNQVRfTUpQRUcpXG4iKTsKKwkJaWYgKGJ1ZlswXSA8IDExKQorCQkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJCWZsYWdzID0gYnVmWzVdOworCQlwcmludGYoIiAgICAgICAgYkZvcm1hdEluZGV4ICAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJOdW1GcmFtZURlc2NyaXB0b3JzICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiRmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICU1dVxuIiwKKwkJICAgICAgIGJ1ZlszXSwgYnVmWzRdLCBmbGFncyk7CisJCXByaW50ZigiICAgICAgICAgIEZpeGVkLXNpemUgc2FtcGxlczogJXNcbiIsCisJCSAgICAgICAoZmxhZ3MgJiAoMSA8PCAwKSkgPyAiWWVzIiA6ICJObyIpOworCQlmbGFncyA9IGJ1Zls5XTsKKwkJcHJpbnRmKCIgICAgICAgIGJEZWZhdWx0RnJhbWVJbmRleCAgICAgICAgICAgICAgJTV1XG4iCisJCSAgICAgICAiICAgICAgICBiQXNwZWN0UmF0aW9YICAgICAgICAgICAgICAgICAgICU1dVxuIgorCQkgICAgICAgIiAgICAgICAgYkFzcGVjdFJhdGlvWSAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkJICAgICAgICIgICAgICAgIGJtSW50ZXJsYWNlRmxhZ3MgICAgICAgICAgICAgICAgIDB4JTAyeFxuIiwKKwkJICAgICAgIGJ1Zls2XSwgYnVmWzddLCBidWZbOF0sIGZsYWdzKTsKKwkJcHJpbnRmKCIgICAgICAgICAgSW50ZXJsYWNlZCBzdHJlYW0gb3IgdmFyaWFibGU6ICVzXG4iLAorCQkgICAgICAgKGZsYWdzICYgKDEgPDwgMCkpID8gIlllcyIgOiAiTm8iKTsKKwkJcHJpbnRmKCIgICAgICAgICAgRmllbGRzIHBlciBmcmFtZTogJXUgZmllbGRzXG4iLAorCQkgICAgICAgKGZsYWdzICYgKDEgPDwgMSkpID8gMiA6IDEpOworCQlwcmludGYoIiAgICAgICAgICBGaWVsZCAxIGZpcnN0OiAlc1xuIiwKKwkJICAgICAgIChmbGFncyAmICgxIDw8IDIpKSA/ICJZZXMiIDogIk5vIik7CisJCXByaW50ZigiICAgICAgICAgIEZpZWxkIHBhdHRlcm46ICIpOworCQlzd2l0Y2goKGZsYWdzID4+IDQpICYgMHgwMykKKwkJeworCQljYXNlIDA6CisJCQlwcmludGYoIkZpZWxkIDEgb25seVxuIik7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJcHJpbnRmKCJGaWVsZCAyIG9ubHlcbiIpOworCQkJYnJlYWs7CisJCWNhc2UgMjoKKwkJCXByaW50ZigiUmVndWxhciBwYXR0ZXJuIG9mIGZpZWxkcyAxIGFuZCAyXG4iKTsKKwkJCWJyZWFrOworCQljYXNlIDM6CisJCQlwcmludGYoIlJhbmRvbSBwYXR0ZXJuIG9mIGZpZWxkcyAxIGFuZCAyXG4iKTsKKwkJCWJyZWFrOworCQl9CisgCQlwcmludGYoIiAgICAgICAgICBiQ29weVByb3RlY3QgICAgICAgICAgICAgICAgICAlNXVcbiIsIGJ1ZlsxMF0pOworCQlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCAxMSk7CisJCWJyZWFrOworCisJY2FzZSAweDBkOiAvKiBDT0xPUkZPUk1BVCAqLworCQlwcmludGYoIihDT0xPUkZPUk1BVClcbiIpOworCQlpZiAoYnVmWzBdIDwgNikKKwkJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlwcmludGYoIiAgICAgICAgYkNvbG9yUHJpbWFyaWVzICAgICAgICAgICAgICAgICAlNXUgKCVzKVxuIiwKKwkJICAgICAgIGJ1ZlszXSwgKGJ1ZlszXSA8PSA1KSA/IGNvbG9yUHJpbXNbYnVmWzNdXSA6ICJVbmtub3duIik7CisJCXByaW50ZigiICAgICAgICBiVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgICAgICAgICU1dSAoJXMpXG4iLAorCQkgICAgICAgYnVmWzRdLCAoYnVmWzRdIDw9IDcpID8gdHJhbnNmZXJDaGFyc1tidWZbNF1dIDogIlVua25vd24iKTsKKwkJcHJpbnRmKCIgICAgICAgIGJNYXRyaXhDb2VmZmljaWVudHMgICAgICAgICAgICAgJTV1ICglcylcbiIsCisJCSAgICAgICBidWZbNV0sIChidWZbNV0gPD0gNSkgPyBtYXRyaXhDb2VmZnNbYnVmWzVdXSA6ICJVbmtub3duIik7CisJCWR1bXBfanVuayhidWYsICIgICAgICAgICIsIDYpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXByaW50ZigiICAgICAgICBJbnZhbGlkIGRlc2Mgc3VidHlwZToiKTsKKwkJZHVtcF9ieXRlcyhidWYrMywgYnVmWzBdLTMpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfZGZ1X2ludGVyZmFjZSh1bnNpZ25lZCBjaGFyICpidWYpCit7CisJaWYgKGJ1ZlsxXSAhPSBVU0JfRFRfQ1NfREVWSUNFKQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IEludmFsaWQgZGVzY3JpcHRvclxuIik7CisJZWxzZSBpZiAoYnVmWzBdIDwgNykKKwkJcHJpbnRmKCIgICAgICBXYXJuaW5nOiBEZXNjcmlwdG9yIHRvbyBzaG9ydFxuIik7CisJcHJpbnRmKCIgICAgICBEZXZpY2UgRmlybXdhcmUgVXBncmFkZSBJbnRlcmZhY2UgRGVzY3JpcHRvcjpcbiIKKwkgICAgICAgIiAgICAgICAgYkxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAgICAgICAgICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgYm1BdHRyaWJ1dGVzICAgICAgICAgICAgICAgICAgICAlNXVcbiIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0pOworCWlmIChidWZbMl0gJiAweGYwKQorCQlwcmludGYoIiAgICAgICAgICAodW5rbm93biBhdHRyaWJ1dGVzISlcbiIpOworCXByaW50ZigiICAgICAgICAgIFdpbGwgJXNEZXRhY2hcbiIsIChidWZbMl0gJiAweDA4KSA/ICIiIDogIk5vdCAiKTsKKwlwcmludGYoIiAgICAgICAgICBNYW5pZmVzdGF0aW9uICVzXG4iLCAoYnVmWzJdICYgMHgwNCkgPyAiVG9sZXJhbnQiIDogIkludG9sZXJhbnQiKTsKKwlwcmludGYoIiAgICAgICAgICBVcGxvYWQgJXNcbiIsIChidWZbMl0gJiAweDAyKSA/ICJTdXBwb3J0ZWQiIDogIlVuc3VwcG9ydGVkIik7CisJcHJpbnRmKCIgICAgICAgICAgRG93bmxvYWQgJXNcbiIsIChidWZbMl0gJiAweDAxKSA/ICJTdXBwb3J0ZWQiIDogIlVuc3VwcG9ydGVkIik7CisJcHJpbnRmKCIgICAgICAgIHdEZXRhY2hUaW1lb3V0ICAgICAgICAgICAgICAgICAgJTV1IG1pbGxpc2Vjb25kc1xuIgorCSAgICAgICAiICAgICAgICB3VHJhbnNmZXJTaXplICAgICAgICAgICAgICAgICAgICU1dSBieXRlc1xuIiwKKwkgICAgICAgYnVmWzNdIHwgKGJ1Zls0XSA8PCA4KSwgYnVmWzVdIHwgKGJ1Zls2XSA8PCA4KSk7CisKKwkvKiBERlUgMS4wIGRlZmluZXMgbm8gdmVyc2lvbiBjb2RlLCBERlUgMS4xIGRvZXMgKi8KKwlpZiAoYnVmWzBdIDwgOSkKKwkJcmV0dXJuOworCXByaW50ZigiICAgICAgICBiY2RERlVWZXJzaW9uICAgICAgICAgICAgICAgICAgICV4LiUwMnhcbiIsCisJCQlidWZbN10sIGJ1Zls4XSk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfaHViKGNoYXIgKnByZWZpeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGhhc190dCkKK3sKKwl1bnNpZ25lZCBpbnQgbCwgaSwgajsKKwl1bnNpZ25lZCBpbnQgd0h1YkNoYXIgPSAocFs0XSA8PCA4KSB8IHBbM107CisKKwlwcmludGYoIiVzSHViIERlc2NyaXB0b3I6XG4iLCBwcmVmaXgpOworCXByaW50ZigiJXMgIGJMZW5ndGggICAgICAgICAgICAgJTN1XG4iLCBwcmVmaXgsIHBbMF0pOworCXByaW50ZigiJXMgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTN1XG4iLCBwcmVmaXgsIHBbMV0pOworCXByaW50ZigiJXMgIG5OYnJQb3J0cyAgICAgICAgICAgJTN1XG4iLCBwcmVmaXgsIHBbMl0pOworCXByaW50ZigiJXMgIHdIdWJDaGFyYWN0ZXJpc3RpYyAweCUwNHhcbiIsIHByZWZpeCwgd0h1YkNoYXIpOworCXN3aXRjaCAod0h1YkNoYXIgJiAweDAzKSB7CisJY2FzZSAwOgorCQlwcmludGYoIiVzICAgIEdhbmdlZCBwb3dlciBzd2l0Y2hpbmdcbiIsIHByZWZpeCk7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcHJpbnRmKCIlcyAgICBQZXItcG9ydCBwb3dlciBzd2l0Y2hpbmdcbiIsIHByZWZpeCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ZigiJXMgICAgTm8gcG93ZXIgc3dpdGNoaW5nICh1c2IgMS4wKVxuIiwgcHJlZml4KTsKKwkJYnJlYWs7CisJfQorCWlmICh3SHViQ2hhciAmIDB4MDQpCisJCXByaW50ZigiJXMgICAgQ29tcG91bmQgZGV2aWNlXG4iLCBwcmVmaXgpOworCXN3aXRjaCAoKHdIdWJDaGFyID4+IDMpICYgMHgwMykgeworCWNhc2UgMDoKKwkJcHJpbnRmKCIlcyAgICBHYW5nZWQgb3ZlcmN1cnJlbnQgcHJvdGVjdGlvblxuIiwgcHJlZml4KTsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQlwcmludGYoIiVzICAgIFBlci1wb3J0IG92ZXJjdXJyZW50IHByb3RlY3Rpb25cbiIsIHByZWZpeCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ZigiJXMgICAgTm8gb3ZlcmN1cnJlbnQgcHJvdGVjdGlvblxuIiwgcHJlZml4KTsKKwkJYnJlYWs7CisJfQorCWlmIChoYXNfdHQpIHsKKwkJbCA9ICh3SHViQ2hhciA+PiA1KSAmIDB4MDM7CisJCXByaW50ZigiJXMgICAgVFQgdGhpbmsgdGltZSAlZCBGUyBiaXRzXG4iLCBwcmVmaXgsIChsICsgMSkgKiA4KTsKKwl9CisJaWYgKHdIdWJDaGFyICYgKDE8PDcpKQorCQlwcmludGYoIiVzICAgIFBvcnQgaW5kaWNhdG9yc1xuIiwgcHJlZml4KTsKKwlwcmludGYoIiVzICBiUHdyT24yUHdyR29vZCAgICAgICUzdSAqIDIgbWlsbGkgc2Vjb25kc1xuIiwgcHJlZml4LCBwWzVdKTsKKwlwcmludGYoIiVzICBiSHViQ29udHJDdXJyZW50ICAgICUzdSBtaWxsaSBBbXBlcmVcbiIsIHByZWZpeCwgcFs2XSk7CisJbD0gKHBbMl0gPj4gMykgKyAxOyAvKiB0aGlzIGRldGVybWluZXMgdGhlIHZhcmlhYmxlIG51bWJlciBvZiBieXRlcyBmb2xsb3dpbmcgKi8KKwlpZiAobCA+IEhVQl9TVEFUVVNfQllURUxFTikKKwkgCWwgPSBIVUJfU1RBVFVTX0JZVEVMRU47CisJcHJpbnRmKCIlcyAgRGV2aWNlUmVtb3ZhYmxlICAgIiwgcHJlZml4KTsKKwlmb3IoaSA9IDA7IGkgPCBsOyBpKyspCisJCXByaW50ZigiIDB4JTAyeCIsIHBbNytpXSk7CisJcHJpbnRmKCJcbiVzICBQb3J0UHdyQ3RybE1hc2sgICAiLCBwcmVmaXgpOworIAlmb3IoaiA9IDA7IGogPCBsOyBqKyspCisgCQlwcmludGYoIiAweCUwMngiLCBwWzcraStqXSk7CisgCXByaW50ZigiXG4iKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9jY2lkX2RldmljZSh1bnNpZ25lZCBjaGFyICpidWYpCit7CisJdW5zaWduZWQgaW50IHVzOworCisJaWYgKGJ1ZlswXSA8IDU0KSB7CisJCXByaW50ZigiICAgICAgV2FybmluZzogRGVzY3JpcHRvciB0b28gc2hvcnRcbiIpOworCQlyZXR1cm47CisJfQorCXByaW50ZigiICAgICAgQ2hpcENhcmQgSW50ZXJmYWNlIERlc2NyaXB0b3I6XG4iCisJICAgICAgICIgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgIGJjZENDSUQgICAgICAgICAgICAgJTJ4LiUwMngiLAorCSAgICAgICBidWZbMF0sIGJ1ZlsxXSwgYnVmWzNdLCBidWZbMl0pOworCWlmIChidWZbM10gIT0gMSB8fCBidWZbMl0gIT0gMCkKKwkJZnB1dHMoIiAgKFdhcm5pbmc6IE9ubHkgYWNjdXJhdGUgZm9yIHZlcnNpb24gMS4wKSIsIHN0ZG91dCk7CisJcHV0Y2hhcignXG4nKTsKKworCXByaW50ZigiICAgICAgICBuTWF4U2xvdEluZGV4ICAgICAgICU1dVxuIgorCQkiICAgICAgICBiVm9sdGFnZVN1cHBvcnQgICAgICU1dSAgJXMlcyVzXG4iLAorCQlidWZbNF0sCisJCWJ1Zls1XSwKKwkgICAgICAgKGJ1Zls1XSAmIDEpID8gIjUuMFYgIiA6ICIiLAorCSAgICAgICAoYnVmWzVdICYgMikgPyAiMy4wViAiIDogIiIsCisJICAgICAgIChidWZbNV0gJiA0KSA/ICIxLjhWICIgOiAiIik7CisKKwl1cyA9IGNvbnZlcnRfbGVfdTMyIChidWYrNik7CisJcHJpbnRmKCIgICAgICAgIGR3UHJvdG9jb2xzICAgICAgICAgJTV1ICIsIHVzKTsKKwlpZiAoKHVzICYgMSkpCisJCWZwdXRzKCIgVD0wIiwgc3Rkb3V0KTsKKwlpZiAoKHVzICYgMikpCisJCWZwdXRzKCIgVD0xIiwgc3Rkb3V0KTsKKwlpZiAoKHVzICYgfjMpKQorCQlmcHV0cygiIChJbnZhbGlkIHZhbHVlcyBkZXRlY3RlZCkiLCBzdGRvdXQpOworCXB1dGNoYXIoJ1xuJyk7CisKKwl1cyA9IGNvbnZlcnRfbGVfdTMyKGJ1ZisxMCk7CisJcHJpbnRmKCIgICAgICAgIGR3RGVmYXVsdENsb2NrICAgICAgJTV1XG4iLCB1cyk7CisJdXMgPSBjb252ZXJ0X2xlX3UzMihidWYrMTQpOworCXByaW50ZigiICAgICAgICBkd01heGl1bXVtQ2xvY2sgICAgICU1dVxuIiwgdXMpOworCXByaW50ZigiICAgICAgICBiTnVtQ2xvY2tTdXBwb3J0ZWQgICU1dVxuIiwgYnVmWzE4XSk7CisJdXMgPSBjb252ZXJ0X2xlX3UzMihidWYrMTkpOworCXByaW50ZigiICAgICAgICBkd0RhdGFSYXRlICAgICAgICAlN3UgYnBzXG4iLCB1cyk7CisJdXMgPSBjb252ZXJ0X2xlX3UzMihidWYrMjMpOworCXByaW50ZigiICAgICAgICBkd01heERhdGFSYXRlICAgICAlN3UgYnBzXG4iLCB1cyk7CisJcHJpbnRmKCIgICAgICAgIGJOdW1EYXRhUmF0ZXNTdXBwLiAgJTV1XG4iLCBidWZbMjddKTsKKworCXVzID0gY29udmVydF9sZV91MzIoYnVmKzI4KTsKKwlwcmludGYoIiAgICAgICAgZHdNYXhJRlNEICAgICAgICAgICAlNXVcbiIsIHVzKTsKKworCXVzID0gY29udmVydF9sZV91MzIoYnVmKzMyKTsKKwlwcmludGYoIiAgICAgICAgZHdTeW5jUHJvdG9jb2xzICAlMDhYICIsIHVzKTsKKwlpZiAoKHVzJjEpKQorCQlmcHV0cygiIDItd2lyZSIsIHN0ZG91dCk7CisJaWYgKCh1cyYyKSkKKwkJZnB1dHMoIiAzLXdpcmUiLCBzdGRvdXQpOworCWlmICgodXMmNCkpCisJCWZwdXRzKCIgSTJDIiwgc3Rkb3V0KTsKKwlwdXRjaGFyKCdcbicpOworCisJdXMgPSBjb252ZXJ0X2xlX3UzMihidWYrMzYpOworCXByaW50ZigiICAgICAgICBkd01lY2hhbmljYWwgICAgICUwOFggIiwgdXMpOworCWlmICgodXMgJiAxKSkKKwkJZnB1dHMoIiBhY2NlcHQiLCBzdGRvdXQpOworCWlmICgodXMgJiAyKSkKKwkJZnB1dHMoIiBlamVjdCIsIHN0ZG91dCk7CisJaWYgKCh1cyAmIDQpKQorCQlmcHV0cygiIGNhcHR1cmUiLCBzdGRvdXQpOworCWlmICgodXMgJiA4KSkKKwkJZnB1dHMoIiBsb2NrIiwgc3Rkb3V0KTsKKwlwdXRjaGFyKCdcbicpOworCisJdXMgPSBjb252ZXJ0X2xlX3UzMihidWYrNDApOworCXByaW50ZigiICAgICAgICBkd0ZlYXR1cmVzICAgICAgICUwOFhcbiIsIHVzKTsKKwlpZiAoKHVzICYgMHgwMDAyKSkKKwkJZnB1dHMoIiAgICAgICAgICBBdXRvIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gQVRSXG4iLHN0ZG91dCk7CisJaWYgKCh1cyAmIDB4MDAwNCkpCisJCWZwdXRzKCIgICAgICAgICAgQXV0byBhY3RpdmF0aW9uIG9uIGluc2VydFxuIixzdGRvdXQpOworCWlmICgodXMgJiAweDAwMDgpKQorCQlmcHV0cygiICAgICAgICAgIEF1dG8gdm9sdGFnZSBzZWxlY3Rpb25cbiIsc3Rkb3V0KTsKKwlpZiAoKHVzICYgMHgwMDEwKSkKKwkJZnB1dHMoIiAgICAgICAgICBBdXRvIGNsb2NrIGNoYW5nZVxuIixzdGRvdXQpOworCWlmICgodXMgJiAweDAwMjApKQorCQlmcHV0cygiICAgICAgICAgIEF1dG8gYmF1ZCByYXRlIGNoYW5nZVxuIixzdGRvdXQpOworCWlmICgodXMgJiAweDAwNDApKQorCQlmcHV0cygiICAgICAgICAgIEF1dG8gcGFyYW1ldGVyIG5lZ290YXRpb24gbWFkZSBieSBDQ0lEXG4iLHN0ZG91dCk7CisJZWxzZSBpZiAoKHVzICYgMHgwMDgwKSkKKwkJZnB1dHMoIiAgICAgICAgICBBdXRvIFBQUyBtYWRlIGJ5IENDSURcbiIsc3Rkb3V0KTsKKwllbHNlIGlmICgodXMgJiAoMHgwMDQwIHwgMHgwMDgwKSkpCisJCWZwdXRzKCIgICAgICAgIFdBUk5JTkc6IGNvbmZsaWN0aW5nIG5lZ290YXRpb24gZmVhdHVyZXNcbiIsc3Rkb3V0KTsKKworCWlmICgodXMgJiAweDAxMDApKQorCQlmcHV0cygiICAgICAgICAgIENDSUQgY2FuIHNldCBJQ0MgaW4gY2xvY2sgc3RvcCBtb2RlXG4iLHN0ZG91dCk7CisJaWYgKCh1cyAmIDB4MDIwMCkpCisJCWZwdXRzKCIgICAgICAgICAgTkFEIHZhbHVlIG90aGVyIHRoYW4gMHgwMCBhY2NwZXRlZFxuIixzdGRvdXQpOworCWlmICgodXMgJiAweDA0MDApKQorCQlmcHV0cygiICAgICAgICAgIEF1dG8gSUZTRCBleGNoYW5nZVxuIixzdGRvdXQpOworCisJaWYgKCh1cyAmIDB4MDAwMTAwMDApKQorCQlmcHV0cygiICAgICAgICAgIFRQRFUgbGV2ZWwgZXhjaGFuZ2VcbiIsc3Rkb3V0KTsKKwllbHNlIGlmICgodXMgJiAweDAwMDIwMDAwKSkKKwkJZnB1dHMoIiAgICAgICAgICBTaG9ydCBBUERVIGxldmVsIGV4Y2hhbmdlXG4iLHN0ZG91dCk7CisJZWxzZSBpZiAoKHVzICYgMHgwMDA0MDAwMCkpCisJCWZwdXRzKCIgICAgICAgICAgU2hvcnQgYW5kIGV4dGVuZGVkIEFQRFUgbGV2ZWwgZXhjaGFuZ2VcbiIsc3Rkb3V0KTsKKwllbHNlIGlmICgodXMgJiAweDAwMDcwMDAwKSkKKwkJZnB1dHMoIiAgICAgICAgV0FSTklORzogY29uZmxpY3RpbmcgZXhjaGFuZ2UgbGV2ZWxzXG4iLHN0ZG91dCk7CisKKwl1cyA9IGNvbnZlcnRfbGVfdTMyKGJ1Zis0NCk7CisJcHJpbnRmKCIgICAgICAgIGR3TWF4Q0NJRE1zZ0xlbiAgICAgJTV1XG4iLCB1cyk7CisKKwlwcmludGYoIiAgICAgICAgYkNsYXNzR2V0UmVzcG9uc2UgICAgIik7CisJaWYgKGJ1Zls0OF0gPT0gMHhmZikKKwkJZnB1dHMoImVjaG9cbiIsIHN0ZG91dCk7CisJZWxzZQorCQlwcmludGYoIiAgJTAyWFxuIiwgYnVmWzQ4XSk7CisKKwlwcmludGYoIiAgICAgICAgYkNsYXNzRW52ZWxvcGUgICAgICAgIik7CisJaWYgKGJ1Zls0OV0gPT0gMHhmZikKKwkJZnB1dHMoImVjaG9cbiIsIHN0ZG91dCk7CisJZWxzZQorCQlwcmludGYoIiAgJTAyWFxuIiwgYnVmWzQ4XSk7CisKKwlwcmludGYoIiAgICAgICAgd2xjZExheW91dCAgICAgICAgICAgIik7CisJaWYgKCFidWZbNTBdICYmICFidWZbNTFdKQorCQlmcHV0cygibm9uZVxuIiwgc3Rkb3V0KTsKKwllbHNlCisJCXByaW50ZigiJXUgY29scyAldSBsaW5lc1xuIiwgYnVmWzUwXSwgYnVmWzUxXSk7CisKKwlwcmludGYoIiAgICAgICAgYlBJTlN1cHBvcnQgICAgICAgICAlNXUgIiwgYnVmWzUyXSk7CisJaWYgKChidWZbNTJdICYgMSkpCisJCWZwdXRzKCIgdmVyaWZpY2F0aW9uIiwgc3Rkb3V0KTsKKwlpZiAoKGJ1Zls1Ml0gJiAyKSkKKwkJZnB1dHMoIiBtb2RpZmljYXRpb24iLCBzdGRvdXQpOworCXB1dGNoYXIoJ1xuJyk7CisKKwlwcmludGYoIiAgICAgICAgYk1heENDSURCdXN5U2xvdHMgICAlNXVcbiIsIGJ1Zls1M10pOworCisJaWYgKGJ1ZlswXSA+IDU0KSB7CisJCWZwdXRzKCIgICAgICAgIGp1bmsgICAgICAgICAgICAgIiwgc3Rkb3V0KTsKKwkJZHVtcF9ieXRlcyhidWYrNTQsIGJ1ZlswXS01NCk7CisJfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBISUQgZGVzY3JpcHRvcgorICovCisKK3N0YXRpYyB2b2lkIGR1bXBfcmVwb3J0X2Rlc2ModW5zaWduZWQgY2hhciAqYiwgaW50IGwpCit7CisJdW5zaWduZWQgaW50IHQsIGosIGJzaXplLCBidGFnLCBidHlwZSwgZGF0YSA9IDB4ZmZmZiwgaHV0ID0gMHhmZmZmOworCWludCBpOworCWNoYXIgKnR5cGVzWzRdID0geyAiTWFpbiIsICJHbG9iYWwiLCAiTG9jYWwiLCAicmVzZXJ2ZWQiIH07CisJY2hhciBpbmRlbnRbXSA9ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjsKKworCXByaW50ZigiICAgICAgICAgIFJlcG9ydCBEZXNjcmlwdG9yOiAobGVuZ3RoIGlzICVkKVxuIiwgbCk7CisJZm9yKGkgPSAwOyBpIDwgbDsgKSB7CisJCXQgPSBiW2ldOworCQlic2l6ZSA9IGJbaV0gJiAweDAzOworCQlpZiAoYnNpemUgPT0gMykKKwkJCWJzaXplID0gNDsKKwkJYnR5cGUgPSBiW2ldICYgKDB4MDMgPDwgMik7CisJCWJ0YWcgPSBiW2ldICYgfjB4MDM7IC8qIDIgTFNCIGJpdHMgZW5jb2RlIGxlbmd0aCAqLworCQlwcmludGYoIiAgICAgICAgICAgIEl0ZW0oJS02cyk6ICVzLCBkYXRhPSIsIHR5cGVzW2J0eXBlPj4yXSwKKwkJCQluYW1lc19yZXBvcnR0YWcoYnRhZykpOworCQlpZiAoYnNpemUgPiAwKSB7CisJCQlwcmludGYoIiBbICIpOworCQkJZGF0YSA9IDA7CisJCQlmb3IoaiA9IDA7IGogPCBic2l6ZTsgaisrKSB7CisJCQkJcHJpbnRmKCIweCUwMnggIiwgYltpKzEral0pOworCQkJCWRhdGEgKz0gKGJbaSsxK2pdIDw8ICg4KmopKTsKKwkJCX0KKwkJCXByaW50ZigiXSAlZCIsIGRhdGEpOworCQl9IGVsc2UKKwkJCXByaW50Zigibm9uZSIpOworCQlwcmludGYoIlxuIik7CisJCXN3aXRjaChidGFnKSB7CisJCWNhc2UgMHgwNCA6IC8qIFVzYWdlIFBhZ2UgKi8KKwkJCXByaW50ZigiJXMlc1xuIiwgaW5kZW50LCBuYW1lc19odXRzKGRhdGEpKTsKKwkJCWh1dCA9IGRhdGE7CisJCQlicmVhazsKKworCQljYXNlIDB4MDggOiAvKiBVc2FnZSAqLworCQljYXNlIDB4MTggOiAvKiBVc2FnZSBNaW5pbXVtICovCisJCWNhc2UgMHgyOCA6IC8qIFVzYWdlIE1heGltdW0gKi8KKwkJCXByaW50ZigiJXMlc1xuIiwgaW5kZW50LAorCQkJCQluYW1lc19odXR1cygoaHV0IDw8IDE2KSArIGRhdGEpKTsKKwkJCWJyZWFrOworCisJCWNhc2UgMHg1NCA6IC8qIFVuaXQgRXhwb25lbnQgKi8KKwkJCXByaW50ZigiJXNVbml0IEV4cG9uZW50OiAlaVxuIiwgaW5kZW50LAorCQkJCQkoc2lnbmVkIGNoYXIpZGF0YSk7CisJCQlicmVhazsKKworCQljYXNlIDB4NjQgOiAvKiBVbml0ICovCisJCQlwcmludGYoIiVzIiwgaW5kZW50KTsKKwkJCWR1bXBfdW5pdChkYXRhLCBic2l6ZSk7CisJCQlicmVhazsKKworCQljYXNlIDB4YTAgOiAvKiBDb2xsZWN0aW9uICovCisJCQlwcmludGYoIiVzIiwgaW5kZW50KTsKKwkJCXN3aXRjaCAoZGF0YSkgeworCQkJY2FzZSAweDAwOgorCQkJCXByaW50ZigiUGh5c2ljYWxcbiIpOworCQkJCWJyZWFrOworCisJCQljYXNlIDB4MDE6CisJCQkJcHJpbnRmKCJBcHBsaWNhdGlvblxuIik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMHgwMjoKKwkJCQlwcmludGYoIkxvZ2ljYWxcbiIpOworCQkJCWJyZWFrOworCisJCQljYXNlIDB4MDM6CisJCQkJcHJpbnRmKCJSZXBvcnRcbiIpOworCQkJCWJyZWFrOworCisJCQljYXNlIDB4MDQ6CisJCQkJcHJpbnRmKCJOYW1lZCBBcnJheVxuIik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMHgwNToKKwkJCQlwcmludGYoIlVzYWdlIFN3aXRjaFxuIik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgMHgwNjoKKwkJCQlwcmludGYoIlVzYWdlIE1vZGlmaWVyXG4iKTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlpZihkYXRhICYgMHg4MCkKKwkJCQkJcHJpbnRmKCJWZW5kb3IgZGVmaW5lZFxuIik7CisJCQkJZWxzZQorCQkJCQlwcmludGYoIlJlc2VydmVkIGZvciBmdXR1cmUgdXNlLlxuIik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAweDgwOiAvKiBJbnB1dCAqLworCQljYXNlIDB4OTA6IC8qIE91dHB1dCAqLworCQljYXNlIDB4YjA6IC8qIEZlYXR1cmUgKi8KKwkJCXByaW50ZigiJXMlcyAlcyAlcyAlcyAlc1xuJXMlcyAlcyAlcyAlc1xuIiwKKwkJCSAgICAgICBpbmRlbnQsCisJCQkgICAgICAgZGF0YSAmIDB4MDEgPyAiQ29uc3RhbnQiOiAiRGF0YSIsCisJCQkgICAgICAgZGF0YSAmIDB4MDIgPyAiVmFyaWFibGUiOiAiQXJyYXkiLAorCQkJICAgICAgIGRhdGEgJiAweDA0ID8gIlJlbGF0aXZlIjogIkFic29sdXRlIiwKKwkJCSAgICAgICBkYXRhICYgMHgwOCA/ICJXcmFwIiA6ICJOb19XcmFwIiwKKwkJCSAgICAgICBkYXRhICYgMHgxMCA/ICJOb25fTGluZWFyIjogIkxpbmVhciIsCisJCQkgICAgICAgaW5kZW50LAorCQkJICAgICAgIGRhdGEgJiAweDIwID8gIk5vX1ByZWZlcnJlZF9TdGF0ZSI6ICJQcmVmZXJyZWRfU3RhdGUiLAorCQkJICAgICAgIGRhdGEgJiAweDQwID8gIk51bGxfU3RhdGUiOiAiTm9fTnVsbF9Qb3NpdGlvbiIsCisJCQkgICAgICAgZGF0YSAmIDB4ODAgPyAiVm9sYXRpbGUiOiAiTm9uX1ZvbGF0aWxlIiwKKwkJCSAgICAgICBkYXRhICYweDEwMCA/ICJCdWZmZXJlZCBCeXRlcyI6ICJCaXRmaWVsZCIKKwkJCSk7CisJCQlicmVhazsKKwkJfQorCQlpICs9IDEgKyBic2l6ZTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfaGlkX2RldmljZShzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciAqaW50ZXJmYWNlLCB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJdW5zaWduZWQgaW50IGksIGxlbjsKKwlpbnQgbjsKKwl1bnNpZ25lZCBjaGFyIGRidWZbODE5Ml07CisKKwlpZiAoYnVmWzFdICE9IFVTQl9EVF9ISUQpCisJCXByaW50ZigiICAgICAgV2FybmluZzogSW52YWxpZCBkZXNjcmlwdG9yXG4iKTsKKwllbHNlIGlmIChidWZbMF0gPCA2KzMqYnVmWzVdKQorCQlwcmludGYoIiAgICAgIFdhcm5pbmc6IERlc2NyaXB0b3IgdG9vIHNob3J0XG4iKTsKKwlwcmludGYoIiAgICAgICAgSElEIERldmljZSBEZXNjcmlwdG9yOlxuIgorCSAgICAgICAiICAgICAgICAgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgICAgICAgICAgYkRlc2NyaXB0b3JUeXBlICAgICAlNXVcbiIKKwkgICAgICAgIiAgICAgICAgICBiY2RISUQgICAgICAgICAgICAgICUyeC4lMDJ4XG4iCisJICAgICAgICIgICAgICAgICAgYkNvdW50cnlDb2RlICAgICAgICAlNXUgJXNcbiIKKwkgICAgICAgIiAgICAgICAgICBiTnVtRGVzY3JpcHRvcnMgICAgICU1dVxuIiwKKwkgICAgICAgYnVmWzBdLCBidWZbMV0sIGJ1ZlszXSwgYnVmWzJdLCBidWZbNF0sCisJICAgICAgIG5hbWVzX2NvdW50cnljb2RlKGJ1Zls0XSkgPyA6ICJVbmtub3duIiwgYnVmWzVdKTsKKwlmb3IgKGkgPSAwOyBpIDwgYnVmWzVdOyBpKyspCisJCXByaW50ZigiICAgICAgICAgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1ICVzXG4iCisJCSAgICAgICAiICAgICAgICAgIHdEZXNjcmlwdG9yTGVuZ3RoICAgJTV1XG4iLAorCQkgICAgICAgYnVmWzYrMyppXSwgbmFtZXNfaGlkKGJ1Zls2KzMqaV0pLAorCQkgICAgICAgYnVmWzcrMyppXSB8IChidWZbOCszKmldIDw8IDgpKTsKKwlkdW1wX2p1bmsoYnVmLCAiICAgICAgICAiLCA2KzMqYnVmWzVdKTsKKwlpZiAoIWRvX3JlcG9ydF9kZXNjKQorCQlyZXR1cm47CisKKwlpZiAoIWRldikgeworCQlwcmludGYoICIgICAgICAgICBSZXBvcnQgRGVzY3JpcHRvcnM6IFxuIgorCQkJIiAgICAgICAgICAgKiogVU5BVkFJTEFCTEUgKipcbiIpOworCQlyZXR1cm47CisJfQorCisJZm9yIChpID0gMDsgaSA8IGJ1Zls1XTsgaSsrKSB7CisJCS8qIHdlIGFyZSBqdXN0IGludGVyZXN0ZWQgaW4gcmVwb3J0IGRlc2NyaXB0b3JzKi8KKwkJaWYgKGJ1Zls2KzMqaV0gIT0gVVNCX0RUX1JFUE9SVCkKKwkJCWNvbnRpbnVlOworCQlsZW4gPSBidWZbNyszKmldIHwgKGJ1Zls4KzMqaV0gPDwgOCk7CisJCWlmIChsZW4gPiBzaXplb2YoZGJ1ZikpIHsKKwkJCXByaW50ZigicmVwb3J0IGRlc2NyaXB0b3IgdG9vIGxvbmdcbiIpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKHVzYl9jbGFpbV9pbnRlcmZhY2UoZGV2LCBpbnRlcmZhY2UtPmJJbnRlcmZhY2VOdW1iZXIpID09IDApIHsKKwkJCWludCByZXRyaWVzID0gNDsKKwkJCW4gPSAwOworCQkJd2hpbGUgKG4gPCBsZW4gJiYgcmV0cmllcy0tKQorCQkJCW4gPSB1c2JfY29udHJvbF9tc2coZGV2LAorCQkJCQkgVVNCX0VORFBPSU5UX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQKKwkJCQkJIAl8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCisJCQkJCSBVU0JfUkVRX0dFVF9ERVNDUklQVE9SLAorCQkJCQkgKFVTQl9EVF9SRVBPUlQgPDwgOCksCisJCQkJCSBpbnRlcmZhY2UtPmJJbnRlcmZhY2VOdW1iZXIsCisJCQkJCSBkYnVmLCBsZW4sCisJCQkJCSBDVFJMX1RJTUVPVVQpOworCisJCQlpZiAobiA+IDApIHsKKwkJCQlpZiAobiA8IGxlbikKKwkJCQkJcHJpbnRmKCIgICAgICAgICAgV2FybmluZzogaW5jb21wbGV0ZSByZXBvcnQgZGVzY3JpcHRvclxuIik7CisJCQkJZHVtcF9yZXBvcnRfZGVzYyhkYnVmLCBuKTsKKwkJCX0KKwkJCXVzYl9yZWxlYXNlX2ludGVyZmFjZShkZXYsIGludGVyZmFjZS0+YkludGVyZmFjZU51bWJlcik7CisJCX0gZWxzZSB7CisJCQkvKiByZWNlbnQgTGludXhlcyByZXF1aXJlIGNsYWltKCkgZm9yIFJFQ0lQX0lOVEVSRkFDRSwKKwkJCSAqIHNvICJybW1vZCBoaWQiIHdpbGwgb2Z0ZW4gbWFrZSB0aGVzZSBhdmFpbGFibGUuCisJCQkgKi8KKwkJCXByaW50ZiggIiAgICAgICAgIFJlcG9ydCBEZXNjcmlwdG9yczogXG4iCisJCQkJIiAgICAgICAgICAgKiogVU5BVkFJTEFCTEUgKipcbiIpOworCQl9CisJfQorfQorCitzdGF0aWMgY2hhciAqCitkdW1wX2NvbW1fZGVzY3JpcHRvcihzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqYnVmLCBjaGFyICppbmRlbnQpCit7CisJaW50CQl0bXA7CisJY2hhcgkJc3RyIFsxMjhdOworCWNoYXIJCSp0eXBlOworCisJc3dpdGNoIChidWZbMl0pIHsKKwljYXNlIDA6CisJCXR5cGUgPSAiSGVhZGVyIjsKKwkJaWYgKGJ1ZlswXSAhPSA1KQorCQkJZ290byBiYWQ7CisJCXByaW50ZigiJXNDREMgSGVhZGVyOlxuIgorCQkgICAgICAgIiVzICBiY2RDREMgICAgICAgICAgICAgICAleC4lMDJ4XG4iLAorCQkgICAgICAgaW5kZW50LAorCQkgICAgICAgaW5kZW50LCBidWZbNF0sIGJ1ZlszXSk7CisJCWJyZWFrOworCWNhc2UgMHgwMToJCS8qIGNhbGwgbWFuYWdlbWVudCBmdW5jdGlvbmFsIGRlc2MgKi8KKwkJdHlwZSA9ICJDYWxsIE1hbmFnZW1lbnQiOworCQlpZiAoYnVmIFswXSAhPSA1KQorCQkJZ290byBiYWQ7CisJCXByaW50ZigiJXNDREMgQ2FsbCBNYW5hZ2VtZW50OlxuIgorCQkgICAgICAgIiVzICBibUNhcGFiaWxpdGllcyAgICAgICAweCUwMnhcbiIsCisJCSAgICAgICBpbmRlbnQsCisJCSAgICAgICBpbmRlbnQsIGJ1ZlszXSk7CisJCWlmIChidWZbM10gJiAweDAxKQorCQkJcHJpbnRmKCIlcyAgICBjYWxsIG1hbmFnZW1lbnRcbiIsIGluZGVudCk7CisJCWlmIChidWZbM10gJiAweDAyKQorCQkJcHJpbnRmKCIlcyAgICB1c2UgRGF0YUludGVyZmFjZVxuIiwgaW5kZW50KTsKKwkJcHJpbnRmKCIlcyAgYkRhdGFJbnRlcmZhY2UgICAgICAgICAgJWRcbiIsIGluZGVudCwgYnVmWzRdKTsKKwkJYnJlYWs7CisJY2FzZSAweDAyOgkJLyogYWNtIGZ1bmN0aW9uYWwgZGVzYyAqLworCQl0eXBlID0gIkFDTSI7CisJCWlmIChidWYgWzBdICE9IDQpCisJCQlnb3RvIGJhZDsKKwkJcHJpbnRmKCIlc0NEQyBBQ006XG4iCisJCSAgICAgICAiJXMgIGJtQ2FwYWJpbGl0aWVzICAgICAgIDB4JTAyeFxuIiwKKwkJICAgICAgIGluZGVudCwKKwkJICAgICAgIGluZGVudCwgYnVmWzNdKTsKKwkJaWYgKGJ1ZlszXSAmIDB4MDgpCisJCQlwcmludGYoIiVzICAgIGNvbm5lY3Rpb24gbm90aWZpY2F0aW9uc1xuIiwgaW5kZW50KTsKKwkJaWYgKGJ1ZlszXSAmIDB4MDQpCisJCQlwcmludGYoIiVzICAgIHNlbmRzIGJyZWFrXG4iLCBpbmRlbnQpOworCQlpZiAoYnVmWzNdICYgMHgwMikKKwkJCXByaW50ZigiJXMgICAgbGluZSBjb2RpbmcgYW5kIHNlcmlhbCBzdGF0ZVxuIiwgaW5kZW50KTsKKwkJaWYgKGJ1ZlszXSAmIDB4MDEpCisJCQlwcmludGYoIiVzICAgIGdldC9zZXQvY2xlYXIgY29tbSBmZWF0dXJlc1xuIiwgaW5kZW50KTsKKwkJYnJlYWs7CisJLy8gY2FzZSAweDAzOgkJLyogZGlyZWN0IGxpbmUgbWFuYWdlbWVudCAqLworCS8vIGNhc2UgMHgwNDoJCS8qIHRlbGVwaG9uZSByaW5nZXIgKi8KKwkvLyBjYXNlIDB4MDU6CQkvKiB0ZWxlcGhvbmUgY2FsbCBhbmQgbGluZSBzdGF0ZSByZXBvcnRpbmcgKi8KKwljYXNlIDB4MDY6CQkvKiB1bmlvbiBkZXNjICovCisJCXR5cGUgPSAiVW5pb24iOworCQlpZiAoYnVmIFswXSA8IDUpCisJCQlnb3RvIGJhZDsKKwkJcHJpbnRmKCIlc0NEQyBVbmlvbjpcbiIKKwkJICAgICAgICIlcyAgYk1hc3RlckludGVyZmFjZSAgICAgICAgJWRcbiIKKwkJICAgICAgICIlcyAgYlNsYXZlSW50ZXJmYWNlICAgICAgICAgIiwKKwkJICAgICAgIGluZGVudCwKKwkJICAgICAgIGluZGVudCwgYnVmIFszXSwKKwkJICAgICAgIGluZGVudCk7CisJCWZvciAodG1wID0gNDsgdG1wIDwgYnVmIFswXTsgdG1wKyspCisJCQlwcmludGYoIiVkICIsIGJ1ZiBbdG1wXSk7CisJCXByaW50ZigiXG4iKTsKKwkJYnJlYWs7CisJY2FzZSAweDA3OgkJLyogY291bnRyeSBzZWxlY3Rpb24gZnVuY3Rpb25hbCBkZXNjICovCisJCXR5cGUgPSAiQ291bnRyeSBTZWxlY3Rpb24iOworCQlpZiAoYnVmIFswXSA8IDYgfHwgKGJ1ZlswXSAmIDEpICE9IDApCisJCQlnb3RvIGJhZDsKKwkJZ2V0X3N0cmluZyhkZXYsIHN0ciwgc2l6ZW9mIHN0ciwgYnVmWzNdKTsKKwkJcHJpbnRmKCIlc0NvdW50cnkgU2VsZWN0aW9uOlxuIgorCQkgICAgICAgIiVzICBpQ291bnRyeUNvZGVSZWxEYXRlICAgICAlNGQgJXNcbiIsCisJCSAgICAgICBpbmRlbnQsCisJCSAgICAgICBpbmRlbnQsIGJ1ZlszXSwgKGJ1ZlszXSAmJiAqc3RyKSA/IHN0ciA6ICIoP1w/KSIpOworCQlmb3IgKHRtcCA9IDQ7IHRtcCA8IGJ1ZiBbMF07IHRtcCArPSAyKSB7CisJCQlwcmludGYoIiVzICB3Q291bnRyeUNvZGUgICAgICAgICAgMHglMDJ4JTAyeFxuIiwKKwkJCQlpbmRlbnQsIGJ1Zlt0bXBdLCBidWZbdG1wICsgMV0pOworCQl9CisJCWJyZWFrOworCWNhc2UgMHgwODoJCS8qIHRlbGVwaG9uZSBvcGVyYXRpb25hbCBtb2RlcyAqLworCQl0eXBlID0gIlRlbGVwaG9uZSBPcGVyYXRpb25zIjsKKwkJaWYgKGJ1ZiBbMF0gIT0gNCkKKwkJCWdvdG8gYmFkOworCQlwcmludGYoIiVzQ0RDIFRlbGVwaG9uZSBvcGVyYXRpb25zOlxuIgorCQkgICAgICAgIiVzICBibUNhcGFiaWxpdGllcyAgICAgICAweCUwMnhcbiIsCisJCSAgICAgICBpbmRlbnQsCisJCSAgICAgICBpbmRlbnQsIGJ1ZlszXSk7CisJCWlmIChidWZbM10gJiAweDA0KQorCQkJcHJpbnRmKCIlcyAgICBjb21wdXRlciBjZW50cmljIG1vZGVcbiIsIGluZGVudCk7CisJCWlmIChidWZbM10gJiAweDAyKQorCQkJcHJpbnRmKCIlcyAgICBzdGFuZGFsb25lIG1vZGVcbiIsIGluZGVudCk7CisJCWlmIChidWZbM10gJiAweDAxKQorCQkJcHJpbnRmKCIlcyAgICBzaW1wbGUgbW9kZVxuIiwgaW5kZW50KTsKKwkJYnJlYWs7CisJLy8gY2FzZSAweDA5OgkJLyogVVNCIHRlcm1pbmFsICovCisJY2FzZSAweDBhOgkJLyogbmV0d29yayBjaGFubmVsIHRlcm1pbmFsICovCisJCXR5cGUgPSAiTmV0d29yayBDaGFubmVsIFRlcm1pbmFsIjsKKwkJaWYgKGJ1ZiBbMF0gIT0gNykKKwkJCWdvdG8gYmFkOworCQlnZXRfc3RyaW5nKGRldiwgc3RyLCBzaXplb2Ygc3RyLCBidWZbNF0pOworCQlwcmludGYoIiVzTmV0d29yayBDaGFubmVsIFRlcm1pbmFsOlxuIgorCQkgICAgICAgIiVzICBiRW50aXR5SWQgICAgICAgICAgICAgICAlM2RcbiIKKwkJICAgICAgICIlcyAgaU5hbWUgICAgICAgICAgICAgICAgICAgJTNkICVzXG4iCisJCSAgICAgICAiJXMgIGJDaGFubmVsSW5kZXggICAgICAgICAgICUzZFxuIgorCQkgICAgICAgIiVzICBiUGh5c2ljYWxJbnRlcmZhY2UgICAgICAlM2RcbiIsCisJCSAgICAgICBpbmRlbnQsCisJCSAgICAgICBpbmRlbnQsIGJ1ZlszXSwKKwkJICAgICAgIGluZGVudCwgYnVmWzRdLCBzdHIsCisJCSAgICAgICBpbmRlbnQsIGJ1Zls1XSwKKwkJICAgICAgIGluZGVudCwgYnVmWzZdKTsKKwkJYnJlYWs7CisJLy8gY2FzZSAweDBiOgkJLyogcHJvdG9jb2wgdW5pdCAqLworCS8vIGNhc2UgMHgwYzoJCS8qIGV4dGVuc2lvbiB1bml0ICovCisJLy8gY2FzZSAweDBkOgkJLyogbXVsdGktY2hhbm5lbCBtYW5hZ2VtZW50ICovCisJLy8gY2FzZSAweDBlOgkJLyogQ0FQSSBjb250cm9sIG1hbmFnZW1lbnQqLworCWNhc2UgMHgwZjoJCS8qIGV0aGVybmV0IGZ1bmN0aW9uYWwgZGVzYyAqLworCQl0eXBlID0gIkV0aGVybmV0IjsKKwkJaWYgKGJ1ZiBbMF0gIT0gMTMpCisJCQlnb3RvIGJhZDsKKwkJZ2V0X3N0cmluZyhkZXYsIHN0ciwgc2l6ZW9mIHN0ciwgYnVmWzNdKTsKKwkJdG1wID0gYnVmIFs3XSA8PCA4OworCQl0bXAgfD0gYnVmIFs2XTsgdG1wIDw8PSA4OworCQl0bXAgfD0gYnVmIFs1XTsgdG1wIDw8PSA4OworCQl0bXAgfD0gYnVmIFs0XTsKKwkJcHJpbnRmKCIlc0NEQyBFdGhlcm5ldDpcbiIKKwkJICAgICAgICIlcyAgaU1hY0FkZHJlc3MgICAgICAgICAgICAgJTEwZCAlc1xuIgorCQkgICAgICAgIiVzICBibUV0aGVybmV0U3RhdGlzdGljcyAgICAweCUwOHhcbiIsCisJCSAgICAgICBpbmRlbnQsCisJCSAgICAgICBpbmRlbnQsIGJ1ZlszXSwgKGJ1ZlszXSAmJiAqc3RyKSA/IHN0ciA6ICIoP1w/KSIsCisJCSAgICAgICBpbmRlbnQsIHRtcCk7CisJCS8qIEZJWE1FIGRpc3NlY3QgQUxMIDI4IGJpdHMgKi8KKwkJcHJpbnRmKCIlcyAgd01heFNlZ21lbnRTaXplICAgICAgICAgJTEwZFxuIgorCQkgICAgICAgIiVzICB3TnVtYmVyTUNGaWx0ZXJzICAgICAgICAgICAgMHglMDR4XG4iCisJCSAgICAgICAiJXMgIGJOdW1iZXJQb3dlckZpbHRlcnMgICAgICUxMGRcbiIsCisJCSAgICAgICBpbmRlbnQsIChidWZbOV08PDgpfGJ1Zls4XSwKKwkJICAgICAgIGluZGVudCwgKGJ1ZlsxMV08PDgpfGJ1ZlsxMF0sCisJCSAgICAgICBpbmRlbnQsIGJ1ZlsxMl0pOworCQlicmVhazsKKwkvLyBjYXNlIDB4MTA6CQkvKiBBVE0gbmV0d29ya2luZyAqLworCWNhc2UgMHgxMToJCS8qIFdIQ00gZnVuY3Rpb25hbCBkZXNjICovCisJCXR5cGUgPSAiV0hDTSB2ZXJzaW9uIjsKKwkJaWYgKGJ1ZlswXSAhPSA1KQorCQkJZ290byBiYWQ7CisJCXByaW50ZigiJXNDREMgV0hDTTpcbiIKKwkJICAgICAgICIlcyAgYmNkVmVyc2lvbiAgICAgICAgICAgJXguJTAyeFxuIiwKKwkJICAgICAgIGluZGVudCwKKwkJICAgICAgIGluZGVudCwgYnVmWzRdLCBidWZbM10pOworCQlicmVhazsKKwljYXNlIDB4MTI6CQkvKiBNRExNIGZ1bmN0aW9uYWwgZGVzYyAqLworCQl0eXBlID0gIk1ETE0iOworCQlpZiAoYnVmIFswXSAhPSAyMSkKKwkJCWdvdG8gYmFkOworCQlwcmludGYoIiVzQ0RDIE1ETE06XG4iCisJCSAgICAgICAiJXMgIGJjZENEQyAgICAgICAgICAgICAgICV4LiUwMnhcbiIKKwkJICAgICAgICIlcyAgYkdVSUQgICAgICAgICAgICAgICAlc1xuIiwKKwkJICAgICAgIGluZGVudCwKKwkJICAgICAgIGluZGVudCwgYnVmWzRdLCBidWZbM10sCisJCSAgICAgICBpbmRlbnQsIGdldF9ndWlkKGJ1ZiArIDUpKTsKKwkJYnJlYWs7CisJY2FzZSAweDEzOgkJLyogTURMTSBkZXRhaWwgZGVzYyAqLworCQl0eXBlID0gIk1ETE0gZGV0YWlsIjsKKwkJaWYgKGJ1ZiBbMF0gPCA1KQorCQkJZ290byBiYWQ7CisJCXByaW50ZigiJXNDREMgTURMTSBkZXRhaWw6XG4iCisJCSAgICAgICAiJXMgIGJHdWlkRGVzY3JpcHRvclR5cGUgICUwMnhcbiIKKwkJICAgICAgICIlcyAgYkRldGFpbERhdGEgICAgICAgICAiLAorCQkgICAgICAgaW5kZW50LAorCQkgICAgICAgaW5kZW50LCBidWZbM10sCisJCSAgICAgICBpbmRlbnQpOworCQlkdW1wX2J5dGVzKGJ1ZiArIDQsIGJ1ZlswXSAtIDQpOworCQlicmVhazsKKwljYXNlIDB4MTQ6CQkvKiBkZXZpY2UgbWFuYWdlbWVudCBmdW5jdGlvbmFsIGRlc2MgKi8KKwkJdHlwZSA9ICJEZXZpY2UgTWFuYWdlbWVudCI7CisJCWlmIChidWZbMF0gIT0gNykKKwkJCWdvdG8gYmFkOworCQlwcmludGYoIiVzQ0RDIERldmljZSBNYW5hZ2VtZW50OlxuIgorCQkgICAgICAgIiVzICBiY2RWZXJzaW9uICAgICAgICAgICAleC4lMDJ4XG4iCisJCSAgICAgICAiJXMgIHdNYXhDb21tYW5kICAgICAgICAgICVkXG4iLAorCQkgICAgICAgaW5kZW50LAorCQkgICAgICAgaW5kZW50LCBidWZbNF0sIGJ1ZlszXSwKKwkJICAgICAgIGluZGVudCwgKGJ1Zls2XTw8OCl8IGJ1Zls1XSk7CisJCWJyZWFrOworCWNhc2UgMHgxNToJCS8qIE9CRVggZnVuY3Rpb25hbCBkZXNjICovCisJCXR5cGUgPSAiT0JFWCI7CisJCWlmIChidWZbMF0gIT0gNSkKKwkJCWdvdG8gYmFkOworCQlwcmludGYoIiVzQ0RDIE9CRVg6XG4iCisJCSAgICAgICAiJXMgIGJjZFZlcnNpb24gICAgICAgICAgICV4LiUwMnhcbiIsCisJCSAgICAgICBpbmRlbnQsCisJCSAgICAgICBpbmRlbnQsIGJ1Zls0XSwgYnVmWzNdKTsKKwkJYnJlYWs7CisJLy8gY2FzZSAweDE2OgkJLyogY29tbWFuZCBzZXQgZnVuY3Rpb25hbCBkZXNjICovCisJLy8gY2FzZSAweDE3OgkJLyogY29tbWFuZCBzZXQgZGV0YWlsIGRlc2MgKi8KKwkvLyBjYXNlIDB4MTg6CQkvKiB0ZWxlcGhvbmUgY29udHJvbCBtb2RlbCBmdW5jdGlvbmFsIGRlc2MgKi8KKwlkZWZhdWx0OgorCQkvKiBGSVhNRSB0aGVyZSBhcmUgYWJvdXQgYSBkb3plbiBtb3JlIGRlc2NyaXB0b3IgdHlwZXMgKi8KKwkJcHJpbnRmKCIlc1VOUkVDT0dOSVpFRCBDREM6ICIsIGluZGVudCk7CisJCWR1bXBfYnl0ZXMoYnVmLCBidWZbMF0pOworCQlyZXR1cm4gInVucmVjb2duaXplZCBjb21tIGRlc2NyaXB0b3IiOworCX0KKwlyZXR1cm4gMDsKKworYmFkOgorCXByaW50ZigiJXNJTlZBTElEIENEQyAoJXMpOiAiLCBpbmRlbnQsIHR5cGUpOworCWR1bXBfYnl0ZXMoYnVmLCBidWZbMF0pOworCXJldHVybiAiY29ycnVwdCBjb21tIGRlc2NyaXB0b3IiOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyB2b2lkIGRvX2h1YihzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmZkLCB1bnNpZ25lZCBoYXNfdHQpCit7CisJdW5zaWduZWQgY2hhciBidWYgWzcgLyogYmFzZSBkZXNjcmlwdG9yICovCisJCQkrIDIgLyogYml0bWFza3MgKi8gKiBIVUJfU1RBVFVTX0JZVEVMRU4gXTsKKwlpbnQgaSwgcmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGZkLAorCQkJVVNCX0VORFBPSU5UX0lOIHwgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfUkVDSVBfREVWSUNFLAorCQkJVVNCX1JFUV9HRVRfREVTQ1JJUFRPUiwKKwkJCTB4MjkgPDwgOCwgMCwKKwkJCWJ1Ziwgc2l6ZW9mIGJ1ZiwgQ1RSTF9USU1FT1VUKTsKKwlpZiAocmV0IDwgOSAvKiBhdCBsZWFzdCBvbmUgcG9ydCdzIGJpdG1hc2tzICovKSB7CisJCWlmIChyZXQgPj0gMCkKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJpbmNvbXBsZXRlIGh1YiBkZXNjcmlwdG9yLCAlZCBieXRlc1xuIiwKKwkJCQlyZXQpOworCQkvKiBMaW51eCByZXR1cm5zIEVIT1NUVU5SRUFDSCBmb3Igc3VzcGVuZGVkIGRldmljZXMgKi8KKwkJZWxzZSBpZiAoZXJybm8gIT0gRUhPU1RVTlJFQUNIKQorCQkJcGVycm9yICgiY2FuJ3QgZ2V0IGh1YiBkZXNjcmlwdG9yIik7CisJCXJldHVybjsKKwl9CisJZHVtcF9odWIoIiIsIGJ1ZiwgaGFzX3R0KTsKKworCXByaW50ZigiIEh1YiBQb3J0IFN0YXR1czpcbiIpOworCWZvciAoaSA9IDA7IGkgPCBidWZbMl07IGkrKykgeworCQl1bnNpZ25lZCBjaGFyIHN0YXQgWzRdOworCisJCXJldCA9IHVzYl9jb250cm9sX21zZyhmZCwKKwkJCQlVU0JfRU5EUE9JTlRfSU4gfCBVU0JfVFlQRV9DTEFTUworCQkJCQl8IFVTQl9SRUNJUF9PVEhFUiwKKwkJCQlVU0JfUkVRX0dFVF9TVEFUVVMsCisJCQkJMCwgaSArIDEsCisJCQkJc3RhdCwgc2l6ZW9mIHN0YXQsCisJCQkJQ1RSTF9USU1FT1VUKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJjYW5ub3QgcmVhZCBwb3J0ICVkIHN0YXR1cywgJXMgKCVkKVxuIiwKKwkJCQlpICsgMSwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CisJCQlicmVhazsKKwkJfQorCisJCXByaW50ZigiICAgUG9ydCAlZDogJTAyeCUwMnguJTAyeCUwMngiLCBpICsgMSwKKwkJCXN0YXRbM10sIHN0YXQgWzJdLAorCQkJc3RhdFsxXSwgc3RhdCBbMF0pOworCQkvKiBDQVBTIGFyZSB1c2VkIHRvIGhpZ2hsaWdodCAidHJhbnNpZW50IiBzdGF0ZXMgKi8KKwkJcHJpbnRmKCIlcyVzJXMlcyVzIiwKKwkJCShzdGF0WzJdICYgMHgxMCkgPyAiIENfUkVTRVQiIDogIiIsCisJCQkoc3RhdFsyXSAmIDB4MDgpID8gIiBDX09DIiA6ICIiLAorCQkJKHN0YXRbMl0gJiAweDA0KSA/ICIgQ19TVVNQRU5EIiA6ICIiLAorCQkJKHN0YXRbMl0gJiAweDAyKSA/ICIgQ19FTkFCTEUiIDogIiIsCisJCQkoc3RhdFsyXSAmIDB4MDEpID8gIiBDX0NPTk5FQ1QiIDogIiIpOworCQlwcmludGYoIiVzJXMlcyVzJXMlcyVzJXMlcyVzXG4iLAorCQkJKHN0YXRbMV0gJiAweDEwKSA/ICIgaW5kaWNhdG9yIiA6ICIiLAorCQkJKHN0YXRbMV0gJiAweDA4KSA/ICIgdGVzdCIgOiAiIiwKKwkJCShzdGF0WzFdICYgMHgwNCkgPyAiIGhpZ2hzcGVlZCIgOiAiIiwKKwkJCShzdGF0WzFdICYgMHgwMikgPyAiIGxvd3NwZWVkIiA6ICIiLAorCQkJKHN0YXRbMV0gJiAweDAxKSA/ICIgcG93ZXIiIDogIiIsCisJCQkoc3RhdFswXSAmIDB4MTApID8gIiBSRVNFVCIgOiAiIiwKKwkJCShzdGF0WzBdICYgMHgwOCkgPyAiIG9jIiA6ICIiLAorCQkJKHN0YXRbMF0gJiAweDA0KSA/ICIgc3VzcGVuZCIgOiAiIiwKKwkJCShzdGF0WzBdICYgMHgwMikgPyAiIGVuYWJsZSIgOiAiIiwKKwkJCShzdGF0WzBdICYgMHgwMSkgPyAiIGNvbm5lY3QiIDogIiIpOworCX0KK30KKworc3RhdGljIHZvaWQgZG9fZHVhbHNwZWVkKHN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZmQpCit7CisJdW5zaWduZWQgY2hhciBidWYgWzEwXTsKKwljaGFyIGNsc1sxMjhdLCBzdWJjbHNbMTI4XSwgcHJvdG9bMTI4XTsKKwlpbnQgcmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGZkLAorCQkJVVNCX0VORFBPSU5UX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVWSUNFLAorCQkJVVNCX1JFUV9HRVRfREVTQ1JJUFRPUiwKKwkJCVVTQl9EVF9ERVZJQ0VfUVVBTElGSUVSIDw8IDgsIDAsCisJCQlidWYsIHNpemVvZiBidWYsIENUUkxfVElNRU9VVCk7CisJaWYgKHJldCA8IDAgJiYgZXJybm8gIT0gRVBJUEUpCisJCXBlcnJvciAoImNhbid0IGdldCBkZXZpY2UgcXVhbGlmaWVyIik7CisKKwkvKiBhbGwgZHVhbC1zcGVlZCBkZXZpY2VzIGhhdmUgYSBxdWFsaWZpZXIgKi8KKwlpZiAocmV0ICE9IHNpemVvZiBidWYKKwkJCXx8IGJ1ZlswXSAhPSByZXQKKwkJCXx8IGJ1ZlsxXSAhPSBVU0JfRFRfREVWSUNFX1FVQUxJRklFUikKKwkJcmV0dXJuOworCisJZ2V0X2NsYXNzX3N0cmluZyhjbHMsIHNpemVvZihjbHMpLAorCQkJYnVmWzRdKTsKKwlnZXRfc3ViY2xhc3Nfc3RyaW5nKHN1YmNscywgc2l6ZW9mKHN1YmNscyksCisJCQlidWZbNF0sIGJ1Zls1XSk7CisJZ2V0X3Byb3RvY29sX3N0cmluZyhwcm90bywgc2l6ZW9mKHByb3RvKSwKKwkJCWJ1Zls0XSwgYnVmWzVdLCBidWZbNl0pOworCXByaW50ZigiRGV2aWNlIFF1YWxpZmllciAoZm9yIG90aGVyIGRldmljZSBzcGVlZCk6XG4iCisJICAgICAgICIgIGJMZW5ndGggICAgICAgICAgICAgJTV1XG4iCisJICAgICAgICIgIGJEZXNjcmlwdG9yVHlwZSAgICAgJTV1XG4iCisJICAgICAgICIgIGJjZFVTQiAgICAgICAgICAgICAgJTJ4LiUwMnhcbiIKKwkgICAgICAgIiAgYkRldmljZUNsYXNzICAgICAgICAlNXUgJXNcbiIKKwkgICAgICAgIiAgYkRldmljZVN1YkNsYXNzICAgICAlNXUgJXNcbiIKKwkgICAgICAgIiAgYkRldmljZVByb3RvY29sICAgICAlNXUgJXNcbiIKKwkgICAgICAgIiAgYk1heFBhY2tldFNpemUwICAgICAlNXVcbiIKKwkgICAgICAgIiAgYk51bUNvbmZpZ3VyYXRpb25zICAlNXVcbiIsCisJICAgICAgIGJ1ZlswXSwgYnVmWzFdLAorCSAgICAgICBidWZbM10sIGJ1ZlsyXSwKKwkgICAgICAgYnVmWzRdLCBjbHMsCisJICAgICAgIGJ1Zls1XSwgc3ViY2xzLAorCSAgICAgICBidWZbNl0sIHByb3RvLAorCSAgICAgICBidWZbN10sIGJ1Zls4XSk7CisKKwkvKiBGSVhNRSBhbHNvIHNob3cgdGhlIE9USEVSX1NQRUVEX0NPTkZJRyBkZXNjcmlwdG9ycyAqLworfQorCitzdGF0aWMgdm9pZCBkb19kZWJ1ZyhzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKmZkKQoreworCXVuc2lnbmVkIGNoYXIgYnVmIFs0XTsKKwlpbnQgcmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGZkLAorCQkJVVNCX0VORFBPSU5UX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVWSUNFLAorCQkJVVNCX1JFUV9HRVRfREVTQ1JJUFRPUiwKKwkJCVVTQl9EVF9ERUJVRyA8PCA4LCAwLAorCQkJYnVmLCBzaXplb2YgYnVmLCBDVFJMX1RJTUVPVVQpOworCWlmIChyZXQgPCAwICYmIGVycm5vICE9IEVQSVBFKQorCQlwZXJyb3IgKCJjYW4ndCBnZXQgZGVidWcgZGVzY3JpcHRvciIpOworCisJLyogc29tZSBoaWdoIHNwZWVkIGRldmljZXMgYXJlIGFsc28gIlVTQjIgZGVidWcgZGV2aWNlcyIsIG1lYW5pbmcKKwkgKiB5b3UgY2FuIHVzZSB0aGVtIHdpdGggc29tZSBFSENJIGltcGxlbWVudGF0aW9ucyBhcyBhbm90aGVyIGtpbmQKKwkgKiBvZiBzeXN0ZW0gZGVidWcgY2hhbm5lbDogIGxpa2UgSlRBRywgUlMyMzIsIG9yIGEgY29uc29sZS4KKwkgKi8KKwlpZiAocmV0ICE9IHNpemVvZiBidWYKKwkJCXx8IGJ1ZlswXSAhPSByZXQKKwkJCXx8IGJ1ZlsxXSAhPSBVU0JfRFRfREVCVUcpCisJCXJldHVybjsKKworCXByaW50ZigiRGVidWcgZGVzY3JpcHRvcjpcbiIKKwkgICAgICAgIiAgYkxlbmd0aCAgICAgICAgICAgICAgJTR1XG4iCisJICAgICAgICIgIGJEZXNjcmlwdG9yVHlwZSAgICAgICU0dVxuIgorCSAgICAgICAiICBiRGVidWdJbkVuZHBvaW50ICAgICAweCUwMnhcbiIKKwkgICAgICAgIiAgYkRlYnVnT3V0RW5kcG9pbnQgICAgMHglMDJ4XG4iLAorCSAgICAgICBidWZbMF0sIGJ1ZlsxXSwKKwkgICAgICAgYnVmWzJdLCBidWZbM10pOworfQorCitzdGF0aWMgdW5zaWduZWQgY2hhciAqZmluZF9vdGcodW5zaWduZWQgY2hhciAqYnVmLCBpbnQgYnVmbGVuKQoreworCWlmICghYnVmKQorCQlyZXR1cm4gMDsKKwl3aGlsZSAoYnVmbGVuID49IDMpIHsKKwkJaWYgKGJ1ZlswXSA9PSAzICYmIGJ1ZlsxXSA9PSBVU0JfRFRfT1RHKQorCQkJcmV0dXJuIGJ1ZjsKKwkJaWYgKGJ1ZlswXSA+IGJ1ZmxlbikKKwkJCXJldHVybiAwOworCQlidWZsZW4gLT0gYnVmWzBdOworCQlidWYgKz0gYnVmWzBdOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkb19vdGcoc3RydWN0IHVzYl9jb25maWdfZGVzY3JpcHRvciAqY29uZmlnKQoreworCXVuc2lnbmVkCWksIGs7CisJaW50CQlqOworCXVuc2lnbmVkIGNoYXIJKmRlc2M7CisKKwkvKiBlYWNoIGNvbmZpZyBvZiBhbiBvdGcgZGV2aWNlIGhhcyBhbiBPVEcgZGVzY3JpcHRvciAqLworCWRlc2MgPSBmaW5kX290Zyhjb25maWctPmV4dHJhLCBjb25maWctPmV4dHJhbGVuKTsKKwlmb3IgKGkgPSAwOyAhZGVzYyAmJiBpIDwgY29uZmlnLT5iTnVtSW50ZXJmYWNlczsgaSsrKSB7CisJCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmOworCisJCWludGYgPSAmY29uZmlnLT5pbnRlcmZhY2UgW2ldOworCQlmb3IgKGogPSAwOyAhZGVzYyAmJiBqIDwgaW50Zi0+bnVtX2FsdHNldHRpbmc7IGorKykgeworCQkJc3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciAqYWx0OworCisJCQlhbHQgPSAmaW50Zi0+YWx0c2V0dGluZ1tqXTsKKwkJCWRlc2MgPSBmaW5kX290ZyhhbHQtPmV4dHJhLCBhbHQtPmV4dHJhbGVuKTsKKwkJCWZvciAoayA9IDA7ICFkZXNjICYmIGsgPCBhbHQtPmJOdW1FbmRwb2ludHM7IGsrKykgeworCQkJCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXA7CisKKwkJCQllcCA9ICZhbHQtPmVuZHBvaW50W2tdOworCQkJCWRlc2MgPSBmaW5kX290ZyhlcC0+ZXh0cmEsIGVwLT5leHRyYWxlbik7CisJCQl9CisJCX0KKwl9CisJaWYgKCFkZXNjKQorCQlyZXR1cm4gMDsKKworCXByaW50ZigiT1RHIERlc2NyaXB0b3I6XG4iCisJCSIgIGJMZW5ndGggICAgICAgICAgICAgICAlM3VcbiIKKwkJIiAgYkRlc2NyaXB0b3JUeXBlICAgICAgICUzdVxuIgorCQkiICBibUF0dHJpYnV0ZXMgICAgICAgICAweCUwMnhcbiIKKwkJIiVzJXMiLAorCQlkZXNjWzBdLCBkZXNjWzFdLCBkZXNjWzJdLAorCQkoZGVzY1syXSAmIDB4MDEpCisJCQk/ICIgICAgU1JQIChTZXNzaW9uIFJlcXVlc3QgUHJvdG9jb2wpXG4iIDogIiIsCisJCShkZXNjWzJdICYgMHgwMikKKwkJCT8gIiAgICBITlAgKEhvc3QgTmVnb3RpYXRpb24gUHJvdG9jb2wpXG4iIDogIiIpOworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZAorZHVtcF9kZXZpY2Vfc3RhdHVzKHN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZmQsIGludCBvdGcsIGludCB3aXJlbGVzcykKK3sKKwl1bnNpZ25lZCBjaGFyIHN0YXR1c1s4XTsKKwlpbnQgcmV0OworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGZkLCBVU0JfRU5EUE9JTlRfSU4gfCBVU0JfVFlQRV9TVEFOREFSRAorCQkJCXwgVVNCX1JFQ0lQX0RFVklDRSwKKwkJCVVTQl9SRVFfR0VUX1NUQVRVUywKKwkJCTAsIDAsCisJCQlzdGF0dXMsIDIsCisJCQlDVFJMX1RJTUVPVVQpOworCWlmIChyZXQgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImNhbm5vdCByZWFkIGRldmljZSBzdGF0dXMsICVzICglZClcbiIsCisJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuOworCX0KKworCXByaW50ZigiRGV2aWNlIFN0YXR1czogICAgIDB4JTAyeCUwMnhcbiIsCisJCQlzdGF0dXNbMV0sIHN0YXR1c1swXSk7CisJaWYgKHN0YXR1c1swXSAmICgxIDw8IDApKQorCQlwcmludGYoIiAgU2VsZiBQb3dlcmVkXG4iKTsKKwllbHNlCisJCXByaW50ZigiICAoQnVzIFBvd2VyZWQpXG4iKTsKKwlpZiAoc3RhdHVzWzBdICYgKDEgPDwgMSkpCisJCXByaW50ZigiICBSZW1vdGUgV2FrZXVwIEVuYWJsZWRcbiIpOworCWlmIChzdGF0dXNbMF0gJiAoMSA8PCAyKSkgeworCQkvKiBmb3IgaGlnaCBzcGVlZCBkZXZpY2VzICovCisJCWlmICghd2lyZWxlc3MpCisJCQlwcmludGYoIiAgVGVzdCBNb2RlXG4iKTsKKwkJLyogZm9yIGRldmljZXMgd2l0aCBXaXJlbGVzcyBVU0Igc3VwcG9ydCAqLworCQllbHNlCisJCQlwcmludGYoIiAgQmF0dGVyeSBQb3dlcmVkXG4iKTsKKwl9CisJLyogaWYgYm90aCBIT1NUIGFuZCBERVZJQ0Ugc3VwcG9ydCBPVEcgKi8KKwlpZiAob3RnKSB7CisJCWlmIChzdGF0dXNbMF0gJiAoMSA8PCAzKSkKKwkJCXByaW50ZigiICBITlAgRW5hYmxlZFxuIik7CisJCWlmIChzdGF0dXNbMF0gJiAoMSA8PCA0KSkKKwkJCXByaW50ZigiICBITlAgQ2FwYWJsZVxuIik7CisJCWlmIChzdGF0dXNbMF0gJiAoMSA8PCA1KSkKKwkJCXByaW50ZigiICBBTFQgcG9ydCBpcyBITlAgQ2FwYWJsZVxuIik7CisJfQorCS8qIGZvciBoaWdoIHNwZWVkIGRldmljZXMgd2l0aCBkZWJ1ZyBkZXNjcmlwdG9ycyAqLworCWlmIChzdGF0dXNbMF0gJiAoMSA8PCA2KSkKKwkJcHJpbnRmKCIgIERlYnVnIE1vZGVcbiIpOworCisJaWYgKCF3aXJlbGVzcykKKwkJcmV0dXJuOworCisJLyogV2lyZWxlc3MgVVNCIGV4cG9zZXMgRklWRSBkaWZmZXJlbnQgdHlwZXMgb2YgZGV2aWNlIHN0YXR1cywKKwkgKiBhY2Nlc3NlZCBieSBkaXN0aW5jdCB3SW5kZXggdmFsdWVzLgorCSAqLworCXJldCA9IHVzYl9jb250cm9sX21zZyhmZCwgVVNCX0VORFBPSU5UX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQKKwkJCQl8IFVTQl9SRUNJUF9ERVZJQ0UsCisJCQlVU0JfUkVRX0dFVF9TVEFUVVMsCisJCQkwLCAxIC8qIHdpcmVsZXNzIHN0YXR1cyAqLywKKwkJCXN0YXR1cywgMSwKKwkJCUNUUkxfVElNRU9VVCk7CisJaWYgKHJldCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiY2Fubm90IHJlYWQgd2lyZWxlc3MgJXMsICVzICglZClcbiIsCisJCQkic3RhdHVzIiwKKwkJCXN0cmVycm9yKGVycm5vKSwgZXJybm8pOworCQlyZXR1cm47CisJfQorCXByaW50ZigiV2lyZWxlc3MgU3RhdHVzOiAgICAgMHglMDJ4XG4iLCBzdGF0dXNbMF0pOworCWlmIChzdGF0dXNbMF0gJiAoMSA8PCAwKSkKKwkJcHJpbnRmKCIgIFRYIERycCBJRVxuIik7CisJaWYgKHN0YXR1c1swXSAmICgxIDw8IDEpKQorCQlwcmludGYoIiAgVHJhbnNtaXQgUGFja2V0XG4iKTsKKwlpZiAoc3RhdHVzWzBdICYgKDEgPDwgMikpCisJCXByaW50ZigiICBDb3VudCBQYWNrZXRzXG4iKTsKKwlpZiAoc3RhdHVzWzBdICYgKDEgPDwgMykpCisJCXByaW50ZigiICBDYXB0dXJlIFBhY2tldFxuIik7CisKKwlyZXQgPSB1c2JfY29udHJvbF9tc2coZmQsIFVTQl9FTkRQT0lOVF9JTiB8IFVTQl9UWVBFX1NUQU5EQVJECisJCQkJfCBVU0JfUkVDSVBfREVWSUNFLAorCQkJVVNCX1JFUV9HRVRfU1RBVFVTLAorCQkJMCwgMiAvKiBDaGFubmVsIEluZm8gKi8sCisJCQlzdGF0dXMsIDEsCisJCQlDVFJMX1RJTUVPVVQpOworCWlmIChyZXQgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImNhbm5vdCByZWFkIHdpcmVsZXNzICVzLCAlcyAoJWQpXG4iLAorCQkJImNoYW5uZWwgaW5mbyIsCisJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuOworCX0KKwlwcmludGYoIkNoYW5uZWwgSW5mbzogICAgICAgIDB4JTAyeFxuIiwgc3RhdHVzWzBdKTsKKworCS8qIDM9UmVjZWl2ZWQgZGF0YTogbWFueSBieXRlcywgZm9yIGNvdW50IHBhY2tldHMgb3IgY2FwdHVyZSBwYWNrZXQgKi8KKworCXJldCA9IHVzYl9jb250cm9sX21zZyhmZCwgVVNCX0VORFBPSU5UX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQKKwkJCQl8IFVTQl9SRUNJUF9ERVZJQ0UsCisJCQlVU0JfUkVRX0dFVF9TVEFUVVMsCisJCQkwLCAzIC8qIE1BUyBBdmFpbGFiaWxpdHkgKi8sCisJCQlzdGF0dXMsIDgsCisJCQlDVFJMX1RJTUVPVVQpOworCWlmIChyZXQgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLAorCQkJImNhbm5vdCByZWFkIHdpcmVsZXNzICVzLCAlcyAoJWQpXG4iLAorCQkJIk1BUyBpbmZvIiwKKwkJCXN0cmVycm9yKGVycm5vKSwgZXJybm8pOworCQlyZXR1cm47CisJfQorCXByaW50ZigiTUFTIEF2YWlsYWJpbGl0eTogICAgIik7CisJZHVtcF9ieXRlcyhzdGF0dXMsIDgpOworCisJcmV0ID0gdXNiX2NvbnRyb2xfbXNnKGZkLCBVU0JfRU5EUE9JTlRfSU4gfCBVU0JfVFlQRV9TVEFOREFSRAorCQkJCXwgVVNCX1JFQ0lQX0RFVklDRSwKKwkJCVVTQl9SRVFfR0VUX1NUQVRVUywKKwkJCTAsIDUgLyogQ3VycmVudCBUcmFuc21pdCBQb3dlciAqLywKKwkJCXN0YXR1cywgMiwKKwkJCUNUUkxfVElNRU9VVCk7CisJaWYgKHJldCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiY2Fubm90IHJlYWQgd2lyZWxlc3MgJXMsICVzICglZClcbiIsCisJCQkidHJhbnNtaXQgcG93ZXIiLAorCQkJc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCJUcmFuc21pdCBQb3dlcjpcbiIpOworCXByaW50ZigiIFR4Tm90aWZpY2F0aW9uOiAgICAgMHglMDJ4XG4iLCBzdGF0dXNbMF0pOworCXByaW50ZigiIFR4QmVhY29uOiAgICAgOiAgICAgMHglMDJ4XG4iLCBzdGF0dXNbMV0pOworfQorCitzdGF0aWMgaW50IGRvX3dpcmVsZXNzKHN0cnVjdCB1c2JfZGV2X2hhbmRsZSAqZmQpCit7CisJLyogRklYTUUgZmV0Y2ggYW5kIGR1bXAgQk9TIGV0YyAqLworCWlmIChmZCkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBkZXYoc3RydWN0IHVzYl9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdXNiX2Rldl9oYW5kbGUgKnVkZXY7CisJaW50IGk7CisJaW50IG90Zywgd2lyZWxlc3M7CisKKwlvdGcgPSB3aXJlbGVzcyA9IDA7CisJdWRldiA9IHVzYl9vcGVuKGRldik7CisJaWYgKCF1ZGV2KQorCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IG9wZW4gZGV2aWNlLCBzb21lIGluZm9ybWF0aW9uICIKKwkJCSJ3aWxsIGJlIG1pc3NpbmdcbiIpOworCisJZHVtcF9kZXZpY2UodWRldiwgJmRldi0+ZGVzY3JpcHRvcik7CisJaWYgKGRldi0+ZGVzY3JpcHRvci5iY2RVU0IgPj0gMHgwMjUwKQorCQl3aXJlbGVzcyA9IGRvX3dpcmVsZXNzKHVkZXYpOworCWlmIChkZXYtPmNvbmZpZykgeworCQlvdGcgPSBkb19vdGcoJmRldi0+Y29uZmlnWzBdKSB8fCBvdGc7CisJCWZvciAoaSA9IDA7IGkgPCBkZXYtPmRlc2NyaXB0b3IuYk51bUNvbmZpZ3VyYXRpb25zOworCQkJCWkrKykgeworCQkJZHVtcF9jb25maWcodWRldiwgJmRldi0+Y29uZmlnW2ldKTsKKwkJfQorCX0KKwlpZiAoIXVkZXYpCisJCXJldHVybjsKKworCWlmIChkZXYtPmRlc2NyaXB0b3IuYkRldmljZUNsYXNzID09IFVTQl9DTEFTU19IVUIpCisJCWRvX2h1Yih1ZGV2LCBkZXYtPmRlc2NyaXB0b3IuYkRldmljZVByb3RvY29sKTsKKwlpZiAoZGV2LT5kZXNjcmlwdG9yLmJjZFVTQiA+PSAweDAyMDApIHsKKwkJZG9fZHVhbHNwZWVkKHVkZXYpOworCQlkb19kZWJ1Zyh1ZGV2KTsKKwl9CisJZHVtcF9kZXZpY2Vfc3RhdHVzKHVkZXYsIG90Zywgd2lyZWxlc3MpOworCXVzYl9jbG9zZSh1ZGV2KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW50IGR1bXBfb25lX2RldmljZShjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CisJY2hhciB2ZW5kb3JbMTI4XSwgcHJvZHVjdFsxMjhdOworCisJZGV2ID0gZ2V0X3VzYl9kZXZpY2UocGF0aCk7CisJaWYgKCFkZXYpIHsKKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlc1xuIiwgcGF0aCk7CisJCXJldHVybiAxOworCX0KKwlnZXRfdmVuZG9yX3N0cmluZyh2ZW5kb3IsIHNpemVvZih2ZW5kb3IpLCBkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3IpOworCWdldF9wcm9kdWN0X3N0cmluZyhwcm9kdWN0LCBzaXplb2YocHJvZHVjdCksIGRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciwgZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7CisJcHJpbnRmKCJEZXZpY2U6IElEICUwNHg6JTA0eCAlcyAlc1xuIiwgZGV2LT5kZXNjcmlwdG9yLmlkVmVuZG9yLAorCQkJCQkgICAgICAgZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCwKKwkJCQkJICAgICAgIHZlbmRvciwKKwkJCQkJICAgICAgIHByb2R1Y3QpOworCWR1bXBkZXYoZGV2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBsaXN0X2RldmljZXMoaW50IGJ1c251bSwgaW50IGRldm51bSwgaW50IHZlbmRvcmlkLCBpbnQgcHJvZHVjdGlkKQoreworCXN0cnVjdCB1c2JfYnVzICpidXM7CisJc3RydWN0IHVzYl9kZXZpY2UgKmRldjsKKwljaGFyIHZlbmRvclsxMjhdLCBwcm9kdWN0WzEyOF07CisJaW50IHN0YXR1czsKKworCXN0YXR1cz0xOyAvKiAxIGRldmljZSBub3QgZm91bmQsIDAgZGV2aWNlIGZvdW5kICovCisKKwlmb3IgKGJ1cyA9IHVzYl9idXNzZXM7IGJ1czsgYnVzID0gYnVzLT5uZXh0KSB7CisJCWlmIChidXNudW0gIT0gLTEgJiYgc3RydG9sKGJ1cy0+ZGlybmFtZSwgTlVMTCwgMTApICE9IGJ1c251bSkKKwkJCWNvbnRpbnVlOworCQlmb3IgKGRldiA9IGJ1cy0+ZGV2aWNlczsgZGV2OyBkZXYgPSBkZXYtPm5leHQpIHsKKwkJCWlmIChkZXZudW0gIT0gLTEgJiYgc3RydG9sKGRldi0+ZmlsZW5hbWUsIE5VTEwsIDEwKQorCQkJCQkhPSBkZXZudW0pCisJCQkJY29udGludWU7CisJCQlpZiAoKHZlbmRvcmlkICE9IC0xICYmIHZlbmRvcmlkCisJCQkJCQkhPSBkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3IpCisJCQkJCXx8IChwcm9kdWN0aWQgIT0gLTEgJiYgcHJvZHVjdGlkCisJCQkJCQkhPSBkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KSkKKwkJCQljb250aW51ZTsKKwkJCXN0YXR1cyA9IDA7CisJCQlnZXRfdmVuZG9yX3N0cmluZyh2ZW5kb3IsIHNpemVvZih2ZW5kb3IpLAorCQkJCQlkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3IpOworCQkJZ2V0X3Byb2R1Y3Rfc3RyaW5nKHByb2R1Y3QsIHNpemVvZihwcm9kdWN0KSwKKwkJCQkJZGV2LT5kZXNjcmlwdG9yLmlkVmVuZG9yLAorCQkJCQlkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KTsKKwkJCWlmICh2ZXJibGV2ZWwgPiAwKQorCQkJCXByaW50ZigiXG4iKTsKKwkJCXByaW50ZigiQnVzICVzIERldmljZSAlczogSUQgJTA0eDolMDR4ICVzICVzXG4iLAorCQkJCQlidXMtPmRpcm5hbWUsIGRldi0+ZmlsZW5hbWUsCisJCQkJCWRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciwKKwkJCQkJZGV2LT5kZXNjcmlwdG9yLmlkUHJvZHVjdCwKKwkJCQkJdmVuZG9yLCBwcm9kdWN0KTsKKwkJCWlmICh2ZXJibGV2ZWwgPiAwKQorCQkJCWR1bXBkZXYoZGV2KTsKKwkJfQorCX0KKwlyZXR1cm4oc3RhdHVzKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIGRldnRyZWVfYnVzY29ubmVjdChzdHJ1Y3QgdXNiYnVzbm9kZSAqYnVzKQoreworCWJ1cyA9IGJ1czsJLyogcmVkdWNlIGNvbXBpbGVyIHdhcm5pbmdzICovCit9CisKK3ZvaWQgZGV2dHJlZV9idXNkaXNjb25uZWN0KHN0cnVjdCB1c2JidXNub2RlICpidXMpCit7CisJYnVzID0gYnVzOwkvKiByZWR1Y2UgY29tcGlsZXIgd2FybmluZ3MgKi8KK30KKwordm9pZCBkZXZ0cmVlX2RldmNvbm5lY3Qoc3RydWN0IHVzYmRldm5vZGUgKmRldikKK3sKKwlkZXYgPSBkZXY7CS8qIHJlZHVjZSBjb21waWxlciB3YXJuaW5ncyAqLworfQorCit2b2lkIGRldnRyZWVfZGV2ZGlzY29ubmVjdChzdHJ1Y3QgdXNiZGV2bm9kZSAqZGV2KQoreworCWRldiA9IGRldjsJLyogcmVkdWNlIGNvbXBpbGVyIHdhcm5pbmdzICovCit9CisKK3N0YXRpYyBpbnQgdHJlZWR1bXAodm9pZCkKK3sKKwlpbnQgZmQ7CisJY2hhciBidWZbNTEyXTsKKworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcy9kZXZpY2VzIiwgcHJvY2J1c3VzYik7CisJaWYgKGFjY2VzcyhidWYsIFJfT0spIDwgMCkKKwkJcmV0dXJuIGxzdXNiX3QoKTsKKwlpZiAoKGZkID0gb3BlbihidWYsIE9fUkRPTkxZKSkgPT0gLTEpIHsKKwkJZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiAlcywgJXMgKCVkKVxuIiwgYnVmLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKwkJcmV0dXJuKDEpOworCX0KKwlkZXZ0cmVlX3BhcnNlZGV2ZmlsZShmZCk7CisJY2xvc2UoZmQpOworCWRldnRyZWVfZHVtcCgpOworCXJldHVybigwKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0geworCQl7ICJ2ZXJzaW9uIiwgMCwgMCwgJ1YnIH0sCisJCXsgInZlcmJvc2UiLCAwLCAwLCAndicgfSwKKwkJeyAwLCAwLCAwLCAwIH0KKwl9OworCWludCBjLCBlcnIgPSAwOworCXVuc2lnbmVkIGludCBhbGxvd2N0cmxtc2cgPSAwLCB0cmVlbW9kZSA9IDA7CisJaW50IGJ1cyA9IC0xLCBkZXZudW0gPSAtMSwgdmVuZG9yID0gLTEsIHByb2R1Y3QgPSAtMTsKKwljb25zdCBjaGFyICpkZXZkdW1wID0gTlVMTDsKKwljaGFyICpjcDsKKwlpbnQgc3RhdHVzOworCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIkQ6dnh0UDpwOnM6ZDpWIiwKKwkJCWxvbmdfb3B0aW9ucywgTlVMTCkpICE9IEVPRikgeworCQlzd2l0Y2goYykgeworCQljYXNlICdWJzoKKwkJCXByaW50ZigibHN1c2IgKCIgUEFDS0FHRSAiKSAiIFZFUlNJT04gIlxuIik7CisJCQlleGl0KDApOworCisJCWNhc2UgJ3YnOgorCQkJdmVyYmxldmVsKys7CisJCQlicmVhazsKKworCQljYXNlICd4JzoKKwkJCWFsbG93Y3RybG1zZyA9IDE7CisJCQlicmVhazsKKworCQljYXNlICd0JzoKKwkJCXRyZWVtb2RlID0gMTsKKwkJCWJyZWFrOworCisJCWNhc2UgJ3MnOgorCQkJY3AgPSBzdHJjaHIob3B0YXJnLCAnOicpOworCQkJaWYgKGNwKSB7CisJCQkJKmNwKysgPSAwOworCQkJCWlmICgqb3B0YXJnKQorCQkJCQlidXMgPSBzdHJ0b3VsKG9wdGFyZywgTlVMTCwgMTApOworCQkJCWlmICgqY3ApCisJCQkJCWRldm51bSA9IHN0cnRvdWwoY3AsIE5VTEwsIDEwKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCpvcHRhcmcpCisJCQkJCWRldm51bSA9IHN0cnRvdWwob3B0YXJnLCBOVUxMLCAxMCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlICdkJzoKKwkJCWNwID0gc3RyY2hyKG9wdGFyZywgJzonKTsKKwkJCWlmICghY3ApIHsKKwkJCQllcnIrKzsKKwkJCQlicmVhazsKKwkJCX0KKwkJCSpjcCsrID0gMDsKKwkJCWlmICgqb3B0YXJnKQorCQkJCXZlbmRvciA9IHN0cnRvdWwob3B0YXJnLCBOVUxMLCAxNik7CisJCQlpZiAoKmNwKQorCQkJCXByb2R1Y3QgPSBzdHJ0b3VsKGNwLCBOVUxMLCAxNik7CisJCQlicmVhazsKKworCQljYXNlICdEJzoKKwkJCWRldmR1bXAgPSBvcHRhcmc7CisJCQlicmVhazsKKworCQljYXNlICc/JzoKKwkJZGVmYXVsdDoKKwkJCWVycisrOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGVyciB8fCBhcmdjID4gb3B0aW5kKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IGxzdXNiIFtvcHRpb25zXS4uLlxuIgorCQkJIkxpc3QgVVNCIGRldmljZXNcbiIKKwkJCSIgIC12LCAtLXZlcmJvc2VcbiIKKwkJCSIgICAgICBJbmNyZWFzZSB2ZXJib3NpdHkgKHNob3cgZGVzY3JpcHRvcnMpXG4iCisJCQkiICAtcyBbW2J1c106XVtkZXZudW1dXG4iCisJCQkiICAgICAgU2hvdyBvbmx5IGRldmljZXMgd2l0aCBzcGVjaWZpZWQgZGV2aWNlIGFuZC9vclxuIgorCQkJIiAgICAgIGJ1cyBudW1iZXJzIChpbiBkZWNpbWFsKVxuIgorCQkJIiAgLWQgdmVuZG9yOltwcm9kdWN0XVxuIgorCQkJIiAgICAgIFNob3cgb25seSBkZXZpY2VzIHdpdGggdGhlIHNwZWNpZmllZCB2ZW5kb3IgYW5kXG4iCisJCQkiICAgICAgcHJvZHVjdCBJRCBudW1iZXJzIChpbiBoZXhhZGVjaW1hbClcbiIKKwkJCSIgIC1EIGRldmljZVxuIgorCQkJIiAgICAgIFNlbGVjdHMgd2hpY2ggZGV2aWNlIGxzdXNiIHdpbGwgZXhhbWluZVxuIgorCQkJIiAgLXRcbiIKKwkJCSIgICAgICBEdW1wIHRoZSBwaHlzaWNhbCBVU0IgZGV2aWNlIGhpZXJhcmNoeSBhcyBhIHRyZWVcbiIKKwkJCSIgIC1WLCAtLXZlcnNpb25cbiIKKwkJCSIgICAgICBTaG93IHZlcnNpb24gb2YgcHJvZ3JhbVxuIgorCQkJKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBieSBkZWZhdWx0LCBwcmludCBuYW1lcyBhcyB3ZWxsIGFzIG51bWJlcnMgKi8KKwllcnIgPSBuYW1lc19pbml0KERBVEFESVIgIi91c2IuaWRzIik7CisjaWZkZWYgSEFWRV9MSUJaCisJaWYgKGVyciAhPSAwKQorCQllcnIgPSBuYW1lc19pbml0KERBVEFESVIgIi91c2IuaWRzLmd6Iik7CisjZW5kaWYKKwlpZiAoZXJyICE9IDApCisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGNhbm5vdCBvcGVuIFwiJXNcIiwgJXNcbiIsCisJCQkJYXJndlswXSwKKwkJCQlEQVRBRElSICIvdXNiLmlkcyIsCisJCQkJc3RyZXJyb3IoZXJyKSk7CisJc3RhdHVzID0gMDsKKworCXVzYl9pbml0KCk7CisKKwl1c2JfZmluZF9idXNzZXMoKTsKKwl1c2JfZmluZF9kZXZpY2VzKCk7CisKKwlpZiAodHJlZW1vZGUpIHsKKwkJLyogdHJlZW1vZGUgcmVxdWlyZXMgYXQgbGVhc3QgdmVyYmxldmVsIDEgKi8KKyAJCXZlcmJsZXZlbCArPSAxIC0gVkVSQkxFVkVMX0RFRkFVTFQ7CisJCXN0YXR1cyA9IHRyZWVkdW1wKCk7CisJfSBlbHNlIGlmIChkZXZkdW1wKQorCQlzdGF0dXMgPSBkdW1wX29uZV9kZXZpY2UoZGV2ZHVtcCk7CisJZWxzZQorCQlzdGF0dXMgPSBsaXN0X2RldmljZXMoYnVzLCBkZXZudW0sIHZlbmRvciwgcHJvZHVjdCk7CisJcmV0dXJuIHN0YXR1czsKK30KZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvbWlzc2luZyBiL3VzYnV0aWxzLTAuODYvbWlzc2luZwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xYzhmZjcwCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9taXNzaW5nCkBAIC0wLDAgKzEsMzY3IEBACisjISAvYmluL3NoCisjIENvbW1vbiBzdHViIGZvciBhIGZldyBtaXNzaW5nIEdOVSBwcm9ncmFtcyB3aGlsZSBpbnN0YWxsaW5nLgorCitzY3JpcHR2ZXJzaW9uPTIwMDYtMDUtMTAuMjMKKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTksIDIwMDAsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgT3JpZ2luYWxseSBieSBGcmFuLGNvaXMgUGluYXJkIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4sIDE5OTYuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKKyMgMDIxMTAtMTMwMSwgVVNBLgorCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgorICBlY2hvIDE+JjIgIlRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCisgIGV4aXQgMQorZmkKKworcnVuPToKK3NlZF9vdXRwdXQ9J3MvLiogLS1vdXRwdXRbID1dXChbXiBdKlwpLiovXDEvcCcKK3NlZF9taW51c289J3MvLiogLW8gXChbXiBdKlwpLiovXDEvcCcKKworIyBJbiB0aGUgY2FzZXMgd2hlcmUgdGhpcyBtYXR0ZXJzLCBgbWlzc2luZycgaXMgYmVpbmcgcnVuIGluIHRoZQorIyBzcmNkaXIgYWxyZWFkeS4KK2lmIHRlc3QgLWYgY29uZmlndXJlLmFjOyB0aGVuCisgIGNvbmZpZ3VyZV9hYz1jb25maWd1cmUuYWMKK2Vsc2UKKyAgY29uZmlndXJlX2FjPWNvbmZpZ3VyZS5pbgorZmkKKworbXNnPSJtaXNzaW5nIG9uIHlvdXIgc3lzdGVtIgorCitjYXNlICQxIGluCistLXJ1bikKKyAgIyBUcnkgdG8gcnVuIHJlcXVlc3RlZCBwcm9ncmFtLCBhbmQganVzdCBleGl0IGlmIGl0IHN1Y2NlZWRzLgorICBydW49CisgIHNoaWZ0CisgICIkQCIgJiYgZXhpdCAwCisgICMgRXhpdCBjb2RlIDYzIG1lYW5zIHZlcnNpb24gbWlzbWF0Y2guICBUaGlzIG9mdGVuIGhhcHBlbnMKKyAgIyB3aGVuIHRoZSB1c2VyIHRyeSB0byB1c2UgYW4gYW5jaWVudCB2ZXJzaW9uIG9mIGEgdG9vbCBvbgorICAjIGEgZmlsZSB0aGF0IHJlcXVpcmVzIGEgbWluaW11bSB2ZXJzaW9uLiAgSW4gdGhpcyBjYXNlIHdlCisgICMgd2Ugc2hvdWxkIHByb2NlZWQgaGFzIGlmIHRoZSBwcm9ncmFtIGhhZCBiZWVuIGFic2VudCwgb3IKKyAgIyBpZiAtLXJ1biBoYWRuJ3QgYmVlbiBwYXNzZWQuCisgIGlmIHRlc3QgJD8gPSA2MzsgdGhlbgorICAgIHJ1bj06CisgICAgbXNnPSJwcm9iYWJseSB0b28gb2xkIgorICBmaQorICA7OworCisgIC1ofC0taHwtLWhlfC0taGVsfC0taGVscCkKKyAgICBlY2hvICJcCiskMCBbT1BUSU9OXS4uLiBQUk9HUkFNIFtBUkdVTUVOVF0uLi4KKworSGFuZGxlIFxgUFJPR1JBTSBbQVJHVU1FTlRdLi4uJyBmb3Igd2hlbiBQUk9HUkFNIGlzIG1pc3NpbmcsIG9yIHJldHVybiBhbgorZXJyb3Igc3RhdHVzIGlmIHRoZXJlIGlzIG5vIGtub3duIGhhbmRsaW5nIGZvciBQUk9HUkFNLgorCitPcHRpb25zOgorICAtaCwgLS1oZWxwICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC0tcnVuICAgICAgICAgICB0cnkgdG8gcnVuIHRoZSBnaXZlbiBjb21tYW5kLCBhbmQgZW11bGF0ZSBpdCBpZiBpdCBmYWlscworCitTdXBwb3J0ZWQgUFJPR1JBTSB2YWx1ZXM6CisgIGFjbG9jYWwgICAgICB0b3VjaCBmaWxlIFxgYWNsb2NhbC5tNCcKKyAgYXV0b2NvbmYgICAgIHRvdWNoIGZpbGUgXGBjb25maWd1cmUnCisgIGF1dG9oZWFkZXIgICB0b3VjaCBmaWxlIFxgY29uZmlnLmguaW4nCisgIGF1dG9tNHRlICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUsIG9yIGNyZWF0ZSBhIHN0dWIgb25lCisgIGF1dG9tYWtlICAgICB0b3VjaCBhbGwgXGBNYWtlZmlsZS5pbicgZmlsZXMKKyAgYmlzb24gICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQorICBmbGV4ICAgICAgICAgY3JlYXRlIFxgbGV4Lnl5LmMnLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuYworICBoZWxwMm1hbiAgICAgdG91Y2ggdGhlIG91dHB1dCBmaWxlCisgIGxleCAgICAgICAgICBjcmVhdGUgXGBsZXgueXkuYycsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5jCisgIG1ha2VpbmZvICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUKKyAgdGFyICAgICAgICAgIHRyeSB0YXIsIGdudXRhciwgZ3RhciwgdGhlbiB0YXIgd2l0aG91dCBub24tcG9ydGFibGUgZmxhZ3MKKyAgeWFjYyAgICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQorCitTZW5kIGJ1ZyByZXBvcnRzIHRvIDxidWctYXV0b21ha2VAZ251Lm9yZz4uIgorICAgIGV4aXQgJD8KKyAgICA7OworCisgIC12fC0tdnwtLXZlfC0tdmVyfC0tdmVyc3wtLXZlcnNpfC0tdmVyc2lvfC0tdmVyc2lvbikKKyAgICBlY2hvICJtaXNzaW5nICRzY3JpcHR2ZXJzaW9uIChHTlUgQXV0b21ha2UpIgorICAgIGV4aXQgJD8KKyAgICA7OworCisgIC0qKQorICAgIGVjaG8gMT4mMiAiJDA6IFVua25vd24gXGAkMScgb3B0aW9uIgorICAgIGVjaG8gMT4mMiAiVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKKyAgICBleGl0IDEKKyAgICA7OworCitlc2FjCisKKyMgTm93IGV4aXQgaWYgd2UgaGF2ZSBpdCwgYnV0IGl0IGZhaWxlZC4gIEFsc28gZXhpdCBub3cgaWYgd2UKKyMgZG9uJ3QgaGF2ZSBpdCBhbmQgLS12ZXJzaW9uIHdhcyBwYXNzZWQgKG1vc3QgbGlrZWx5IHRvIGRldGVjdAorIyB0aGUgcHJvZ3JhbSkuCitjYXNlICQxIGluCisgIGxleHx5YWNjKQorICAgICMgTm90IEdOVSBwcm9ncmFtcywgdGhleSBkb24ndCBoYXZlIC0tdmVyc2lvbi4KKyAgICA7OworCisgIHRhcikKKyAgICBpZiB0ZXN0IC1uICIkcnVuIjsgdGhlbgorICAgICAgIGVjaG8gMT4mMiAiRVJST1I6IFxgdGFyJyByZXF1aXJlcyAtLXJ1biIKKyAgICAgICBleGl0IDEKKyAgICBlbGlmIHRlc3QgIngkMiIgPSAieC0tdmVyc2lvbiIgfHwgdGVzdCAieCQyIiA9ICJ4LS1oZWxwIjsgdGhlbgorICAgICAgIGV4aXQgMQorICAgIGZpCisgICAgOzsKKworICAqKQorICAgIGlmIHRlc3QgLXogIiRydW4iICYmICgkMSAtLXZlcnNpb24pID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAjIFdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuCisgICAgICAgZXhpdCAxCisgICAgZWxpZiB0ZXN0ICJ4JDIiID0gIngtLXZlcnNpb24iIHx8IHRlc3QgIngkMiIgPSAieC0taGVscCI7IHRoZW4KKyAgICAgICAjIENvdWxkIG5vdCBydW4gLS12ZXJzaW9uIG9yIC0taGVscC4gIFRoaXMgaXMgcHJvYmFibHkgc29tZW9uZQorICAgICAgICMgcnVubmluZyBgJFRPT0wgLS12ZXJzaW9uJyBvciBgJFRPT0wgLS1oZWxwJyB0byBjaGVjayB3aGV0aGVyCisgICAgICAgIyAkVE9PTCBleGlzdHMgYW5kIG5vdCBrbm93aW5nICRUT09MIHVzZXMgbWlzc2luZy4KKyAgICAgICBleGl0IDEKKyAgICBmaQorICAgIDs7Citlc2FjCisKKyMgSWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGZhaWxzIHRvIHJ1biAocG9zc2libHkgYW4gb3V0ZGF0ZWQgdmVyc2lvbiksCisjIHRyeSB0byBlbXVsYXRlIGl0LgorY2FzZSAkMSBpbgorICBhY2xvY2FsKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIFxgYWNpbmNsdWRlLm00JyBvciBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudAorICAgICAgICAgdG8gaW5zdGFsbCB0aGUgXGBBdXRvbWFrZScgYW5kIFxgUGVybCcgcGFja2FnZXMuICBHcmFiIHRoZW0gZnJvbQorICAgICAgICAgYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIHRvdWNoIGFjbG9jYWwubTQKKyAgICA7OworCisgIGF1dG9jb25mKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGAke2NvbmZpZ3VyZV9hY30nLiAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgIFxgQXV0b2NvbmYnIGFuZCBcYEdOVSBtNCcgcGFja2FnZXMuICBHcmFiIHRoZW0gZnJvbSBhbnkgR05VCisgICAgICAgICBhcmNoaXZlIHNpdGUuIgorICAgIHRvdWNoIGNvbmZpZ3VyZQorICAgIDs7CisKKyAgYXV0b2hlYWRlcikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIFxgYWNjb25maWcuaCcgb3IgXGAke2NvbmZpZ3VyZV9hY30nLiAgWW91IG1pZ2h0IHdhbnQKKyAgICAgICAgIHRvIGluc3RhbGwgdGhlIFxgQXV0b2NvbmYnIGFuZCBcYEdOVSBtNCcgcGFja2FnZXMuICBHcmFiIHRoZW0KKyAgICAgICAgIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIGZpbGVzPWBzZWQgLW4gJ3MvXlsgXSpBW0NNXV9DT05GSUdfSEVBREVSKFwoW14pXSpcKSkuKi9cMS9wJyAke2NvbmZpZ3VyZV9hY31gCisgICAgdGVzdCAteiAiJGZpbGVzIiAmJiBmaWxlcz0iY29uZmlnLmgiCisgICAgdG91Y2hfZmlsZXM9CisgICAgZm9yIGYgaW4gJGZpbGVzOyBkbworICAgICAgY2FzZSAkZiBpbgorICAgICAgKjoqKSB0b3VjaF9maWxlcz0iJHRvdWNoX2ZpbGVzICJgZWNobyAiJGYiIHwKKwkJCQkgICAgICAgc2VkIC1lICdzL15bXjpdKjovLycgLWUgJ3MvOi4qLy8nYDs7CisgICAgICAqKSB0b3VjaF9maWxlcz0iJHRvdWNoX2ZpbGVzICRmLmluIjs7CisgICAgICBlc2FjCisgICAgZG9uZQorICAgIHRvdWNoICR0b3VjaF9maWxlcworICAgIDs7CisKKyAgYXV0b21ha2UqKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGBNYWtlZmlsZS5hbScsIFxgYWNpbmNsdWRlLm00JyBvciBcYCR7Y29uZmlndXJlX2FjfScuCisgICAgICAgICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZSBcYEF1dG9tYWtlJyBhbmQgXGBQZXJsJyBwYWNrYWdlcy4KKyAgICAgICAgIEdyYWIgdGhlbSBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKyAgICBmaW5kIC4gLXR5cGUgZiAtbmFtZSBNYWtlZmlsZS5hbSAtcHJpbnQgfAorCSAgIHNlZCAncy9cLmFtJC8uaW4vJyB8CisJICAgd2hpbGUgcmVhZCBmOyBkbyB0b3VjaCAiJGYiOyBkb25lCisgICAgOzsKKworICBhdXRvbTR0ZSkKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG5lZWRlZCwgYnV0IGlzICRtc2cuCisgICAgICAgICBZb3UgbWlnaHQgaGF2ZSBtb2RpZmllZCBzb21lIGZpbGVzIHdpdGhvdXQgaGF2aW5nIHRoZQorICAgICAgICAgcHJvcGVyIHRvb2xzIGZvciBmdXJ0aGVyIGhhbmRsaW5nIHRoZW0uCisgICAgICAgICBZb3UgY2FuIGdldCBcYCQxJyBhcyBwYXJ0IG9mIFxgQXV0b2NvbmYnIGZyb20gYW55IEdOVQorICAgICAgICAgYXJjaGl2ZSBzaXRlLiIKKworICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKKyAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KKwl0b3VjaCAkZmlsZQorICAgIGVsc2UKKwl0ZXN0IC16ICIkZmlsZSIgfHwgZXhlYyA+JGZpbGUKKwllY2hvICIjISAvYmluL3NoIgorCWVjaG8gIiMgQ3JlYXRlZCBieSBHTlUgQXV0b21ha2UgbWlzc2luZyBhcyBhIHJlcGxhY2VtZW50IG9mIgorCWVjaG8gIiMgICQgJEAiCisJZWNobyAiZXhpdCAwIgorCWNobW9kICt4ICRmaWxlCisJZXhpdCAxCisgICAgZmkKKyAgICA7OworCisgIGJpc29ufHlhY2MpCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnknIGZpbGUuICBZb3UgbWF5IG5lZWQgdGhlIFxgQmlzb24nIHBhY2thZ2UKKyAgICAgICAgIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UgZWZmZWN0LiAgWW91IGNhbiBnZXQKKyAgICAgICAgIFxgQmlzb24nIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIHJtIC1mIHkudGFiLmMgeS50YWIuaAorICAgIGlmIHRlc3QgJCMgLW5lIDE7IHRoZW4KKyAgICAgICAgZXZhbCBMQVNUQVJHPSJcJHskI30iCisJY2FzZSAkTEFTVEFSRyBpbgorCSoueSkKKwkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2MvJ2AKKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCisJICAgICAgICAgY3AgIiRTUkNGSUxFIiB5LnRhYi5jCisJICAgIGZpCisJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy95JC9oLydgCisJICAgIGlmIHRlc3QgLWYgIiRTUkNGSUxFIjsgdGhlbgorCSAgICAgICAgIGNwICIkU1JDRklMRSIgeS50YWIuaAorCSAgICBmaQorCSAgOzsKKwllc2FjCisgICAgZmkKKyAgICBpZiB0ZXN0ICEgLWYgeS50YWIuaDsgdGhlbgorCWVjaG8gPnkudGFiLmgKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiB5LnRhYi5jOyB0aGVuCisJZWNobyAnbWFpbigpIHsgcmV0dXJuIDA7IH0nID55LnRhYi5jCisgICAgZmkKKyAgICA7OworCisgIGxleHxmbGV4KQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgYSBcYC5sJyBmaWxlLiAgWW91IG1heSBuZWVkIHRoZSBcYEZsZXgnIHBhY2thZ2UKKyAgICAgICAgIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UgZWZmZWN0LiAgWW91IGNhbiBnZXQKKyAgICAgICAgIFxgRmxleCcgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgcm0gLWYgbGV4Lnl5LmMKKyAgICBpZiB0ZXN0ICQjIC1uZSAxOyB0aGVuCisgICAgICAgIGV2YWwgTEFTVEFSRz0iXCR7JCN9IgorCWNhc2UgJExBU1RBUkcgaW4KKwkqLmwpCisJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy9sJC9jLydgCisJICAgIGlmIHRlc3QgLWYgIiRTUkNGSUxFIjsgdGhlbgorCSAgICAgICAgIGNwICIkU1JDRklMRSIgbGV4Lnl5LmMKKwkgICAgZmkKKwkgIDs7CisJZXNhYworICAgIGZpCisgICAgaWYgdGVzdCAhIC1mIGxleC55eS5jOyB0aGVuCisJZWNobyAnbWFpbigpIHsgcmV0dXJuIDA7IH0nID5sZXgueXkuYworICAgIGZpCisgICAgOzsKKworICBoZWxwMm1hbikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorCSB5b3UgbW9kaWZpZWQgYSBkZXBlbmRlbmN5IG9mIGEgbWFudWFsIHBhZ2UuICBZb3UgbWF5IG5lZWQgdGhlCisJIFxgSGVscDJtYW4nIHBhY2thZ2UgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZQorCSBlZmZlY3QuICBZb3UgY2FuIGdldCBcYEhlbHAybWFuJyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKworICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKKyAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KKwl0b3VjaCAkZmlsZQorICAgIGVsc2UKKwl0ZXN0IC16ICIkZmlsZSIgfHwgZXhlYyA+JGZpbGUKKwllY2hvICIuYWIgaGVscDJtYW4gaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWdlIgorCWV4aXQgMQorICAgIGZpCisgICAgOzsKKworICBtYWtlaW5mbykKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAudGV4aScgb3IgXGAudGV4aW5mbycgZmlsZSwgb3IgYW55IG90aGVyIGZpbGUKKyAgICAgICAgIGluZGlyZWN0bHkgYWZmZWN0aW5nIHRoZSBhc3BlY3Qgb2YgdGhlIG1hbnVhbC4gIFRoZSBzcHVyaW91cworICAgICAgICAgY2FsbCBtaWdodCBhbHNvIGJlIHRoZSBjb25zZXF1ZW5jZSBvZiB1c2luZyBhIGJ1Z2d5IFxgbWFrZScgKEFJWCwKKyAgICAgICAgIERVLCBJUklYKS4gIFlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwgdGhlIFxgVGV4aW5mbycgcGFja2FnZSBvcgorICAgICAgICAgdGhlIFxgR05VIG1ha2UnIHBhY2thZ2UuICBHcmFiIGVpdGhlciBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKKyAgICAjIFRoZSBmaWxlIHRvIHRvdWNoIGlzIHRoYXQgc3BlY2lmaWVkIHdpdGggLW8gLi4uCisgICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX291dHB1dCJgCisgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9taW51c28iYAorICAgIGlmIHRlc3QgLXogIiRmaWxlIjsgdGhlbgorICAgICAgIyAuLi4gb3IgaXQgaXMgdGhlIG9uZSBzcGVjaWZpZWQgd2l0aCBAc2V0ZmlsZW5hbWUgLi4uCisgICAgICBpbmZpbGU9YGVjaG8gIiQqIiB8IHNlZCAncy8uKiBcKFteIF0qXCkgKiQvXDEvJ2AKKyAgICAgIGZpbGU9YHNlZCAtbiAnCisJL15Ac2V0ZmlsZW5hbWUveworCSAgcy8uKiBcKFteIF0qXCkgKiQvXDEvCisJICBwCisJICBxCisJfScgJGluZmlsZWAKKyAgICAgICMgLi4uIG9yIGl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgc291cmNlIG5hbWUgKGRpci9mLnRleGkgYmVjb21lcyBmLmluZm8pCisgICAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJGluZmlsZSIgfCBzZWQgJ3MsLiovLCw7cywuW14uXSokLCwnYC5pbmZvCisgICAgZmkKKyAgICAjIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGUgdXNlciByZWFsbHkgbmVlZHMgbWFrZWluZm87CisgICAgIyBsZXQncyBmYWlsIHdpdGhvdXQgdG91Y2hpbmcgYW55dGhpbmcuCisgICAgdGVzdCAtZiAkZmlsZSB8fCBleGl0IDEKKyAgICB0b3VjaCAkZmlsZQorICAgIDs7CisKKyAgdGFyKQorICAgIHNoaWZ0CisKKyAgICAjIFdlIGhhdmUgYWxyZWFkeSB0cmllZCB0YXIgaW4gdGhlIGdlbmVyaWMgcGFydC4KKyAgICAjIExvb2sgZm9yIGdudXRhci9ndGFyIGJlZm9yZSBpbnZvY2F0aW9uIHRvIGF2b2lkIHVnbHkgZXJyb3IKKyAgICAjIG1lc3NhZ2VzLgorICAgIGlmIChnbnV0YXIgLS12ZXJzaW9uID4gL2Rldi9udWxsIDI+JjEpOyB0aGVuCisgICAgICAgZ251dGFyICIkQCIgJiYgZXhpdCAwCisgICAgZmkKKyAgICBpZiAoZ3RhciAtLXZlcnNpb24gPiAvZGV2L251bGwgMj4mMSk7IHRoZW4KKyAgICAgICBndGFyICIkQCIgJiYgZXhpdCAwCisgICAgZmkKKyAgICBmaXJzdGFyZz0iJDEiCisgICAgaWYgc2hpZnQ7IHRoZW4KKwljYXNlICRmaXJzdGFyZyBpbgorCSpvKikKKwkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9vLy9gCisJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMAorCSAgICA7OworCWVzYWMKKwljYXNlICRmaXJzdGFyZyBpbgorCSpoKikKKwkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9oLy9gCisJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMAorCSAgICA7OworCWVzYWMKKyAgICBmaQorCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBJIGNhbid0IHNlZW0gdG8gYmUgYWJsZSB0byBydW4gXGB0YXInIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4KKyAgICAgICAgIFlvdSBtYXkgd2FudCB0byBpbnN0YWxsIEdOVSB0YXIgb3IgRnJlZSBwYXh1dGlscywgb3IgY2hlY2sgdGhlCisgICAgICAgICBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiIKKyAgICBleGl0IDEKKyAgICA7OworCisgICopCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGFuZCBpcyAkbXNnLgorICAgICAgICAgWW91IG1pZ2h0IGhhdmUgbW9kaWZpZWQgc29tZSBmaWxlcyB3aXRob3V0IGhhdmluZyB0aGUKKyAgICAgICAgIHByb3BlciB0b29scyBmb3IgZnVydGhlciBoYW5kbGluZyB0aGVtLiAgQ2hlY2sgdGhlIFxgUkVBRE1FJyBmaWxlLAorICAgICAgICAgaXQgb2Z0ZW4gdGVsbHMgeW91IGFib3V0IHRoZSBuZWVkZWQgcHJlcmVxdWlzaXRlcyBmb3IgaW5zdGFsbGluZworICAgICAgICAgdGhpcyBwYWNrYWdlLiAgWW91IG1heSBhbHNvIHBlZWsgYXQgYW55IEdOVSBhcmNoaXZlIHNpdGUsIGluIGNhc2UKKyAgICAgICAgIHNvbWUgb3RoZXIgcGFja2FnZSB3b3VsZCBjb250YWluIHRoaXMgbWlzc2luZyBcYCQxJyBwcm9ncmFtLiIKKyAgICBleGl0IDEKKyAgICA7OworZXNhYworCitleGl0IDAKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyBFbmQ6CmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L25hbWVzLmMgYi91c2J1dGlscy0wLjg2L25hbWVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlMDQwYwotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvbmFtZXMuYwpAQCAtMCwwICsxLDgwOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICAgICAgbmFtZXMuYyAgLS0gIFVTQiBuYW1lIGRhdGFiYXNlIG1hbmlwdWxhdGlvbiByb3V0aW5lcworICoKKyAqICAgICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwICBUaG9tYXMgU2FpbGVyIChzYWlsZXJAaWZlLmVlLmV0aHouY2gpCisgKgorICogICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICoKKyAqCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJQloKKyNpbmNsdWRlIDx6bGliLmg+CisjZGVmaW5lIAl1c2JfZmlsZQkJCQlnekZpbGUKKyNkZWZpbmUgCXVzYl9mb3BlbihwYXRoLCBtb2RlKSAJCWd6b3BlbihwYXRoLCBtb2RlKQorI2RlZmluZSAJdXNiX2ZnZXRzKHMsIHNpemUsIHN0cmVhbSkJZ3pnZXRzKHN0cmVhbSwgcywgc2l6ZSkKKyNkZWZpbmUgCXVzYl9jbG9zZShmKQkJCWd6Y2xvc2UoZikKKyNlbHNlCisjZGVmaW5lIAl1c2JfZmlsZQkJCQlGSUxFKgorI2RlZmluZSAJdXNiX2ZvcGVuKHBhdGgsIG1vZGUpCQlmb3BlbihwYXRoLCBtb2RlKQorI2RlZmluZSAJdXNiX2ZnZXRzKHMsIHNpemUsIHN0cmVhbSkJZmdldHMocywgc2l6ZSwgc3RyZWFtKQorI2RlZmluZSAJdXNiX2Nsb3NlKGYpCQkJZmNsb3NlKGYpCisjZW5kaWYKKworI2luY2x1ZGUgIm5hbWVzLmgiCisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdHJ1Y3QgdmVuZG9yIHsKKwlzdHJ1Y3QgdmVuZG9yICpuZXh0OworCXVfaW50MTZfdCB2ZW5kb3JpZDsKKwljaGFyIG5hbWVbMV07Cit9OworCitzdHJ1Y3QgcHJvZHVjdCB7CisJc3RydWN0IHByb2R1Y3QgKm5leHQ7CisJdV9pbnQxNl90IHZlbmRvcmlkLCBwcm9kdWN0aWQ7CisJY2hhciBuYW1lWzFdOworfTsKKworc3RydWN0IGNsYXNzIHsKKwlzdHJ1Y3QgY2xhc3MgKm5leHQ7CisJdV9pbnQ4X3QgY2xhc3NpZDsKKwljaGFyIG5hbWVbMV07Cit9OworCitzdHJ1Y3Qgc3ViY2xhc3MgeworCXN0cnVjdCBzdWJjbGFzcyAqbmV4dDsKKwl1X2ludDhfdCBjbGFzc2lkLCBzdWJjbGFzc2lkOworCWNoYXIgbmFtZVsxXTsKK307CisKK3N0cnVjdCBwcm90b2NvbCB7CisJc3RydWN0IHByb3RvY29sICpuZXh0OworCXVfaW50OF90IGNsYXNzaWQsIHN1YmNsYXNzaWQsIHByb3RvY29saWQ7CisJY2hhciBuYW1lWzFdOworfTsKKworc3RydWN0IGF1ZGlvdGVybWluYWwgeworCXN0cnVjdCBhdWRpb3Rlcm1pbmFsICpuZXh0OworCXVfaW50MTZfdCB0ZXJtdDsKKwljaGFyIG5hbWVbMV07Cit9OworCitzdHJ1Y3QgdmlkZW90ZXJtaW5hbCB7CisJc3RydWN0IHZpZGVvdGVybWluYWwgKm5leHQ7CisJdV9pbnQxNl90IHRlcm10OworCWNoYXIgbmFtZVsxXTsKK307CisKK3N0cnVjdCBnZW5lcmljc3RydGFibGUgeworICAgICAgICBzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlICpuZXh0OworICAgICAgICB1bnNpZ25lZCBpbnQgbnVtOworICAgICAgICBjaGFyIG5hbWVbMV07Cit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgSEFTSDEgIDB4MTAKKyNkZWZpbmUgSEFTSDIgIDB4MDIKKyNkZWZpbmUgSEFTSFNaIDE2CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgaGFzaG51bSh1bnNpZ25lZCBpbnQgbnVtKQoreworCXVuc2lnbmVkIGludCBtYXNrMSA9IEhBU0gxIDw8IDI3LCBtYXNrMiA9IEhBU0gyIDw8IDI3OworCisJZm9yICg7IG1hc2sxID49IEhBU0gxOyBtYXNrMSA+Pj0gMSwgbWFzazIgPj49IDEpCisJCWlmIChudW0gJiBtYXNrMSkKKwkJCW51bSBePSBtYXNrMjsKKwlyZXR1cm4gbnVtICYgKEhBU0hTWi0xKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgc3RydWN0IHZlbmRvciAqdmVuZG9yc1tIQVNIU1pdID0geyBOVUxMLCB9Oworc3RhdGljIHN0cnVjdCBwcm9kdWN0ICpwcm9kdWN0c1tIQVNIU1pdID0geyBOVUxMLCB9Oworc3RhdGljIHN0cnVjdCBjbGFzcyAqY2xhc3Nlc1tIQVNIU1pdID0geyBOVUxMLCB9Oworc3RhdGljIHN0cnVjdCBzdWJjbGFzcyAqc3ViY2xhc3Nlc1tIQVNIU1pdID0geyBOVUxMLCB9Oworc3RhdGljIHN0cnVjdCBwcm90b2NvbCAqcHJvdG9jb2xzW0hBU0hTWl0gPSB7IE5VTEwsIH07CitzdGF0aWMgc3RydWN0IGF1ZGlvdGVybWluYWwgKmF1ZGlvdGVybWluYWxzW0hBU0hTWl0gPSB7IE5VTEwsIH07CitzdGF0aWMgc3RydWN0IHZpZGVvdGVybWluYWwgKnZpZGVvdGVybWluYWxzW0hBU0hTWl0gPSB7IE5VTEwsIH07CitzdGF0aWMgc3RydWN0IGdlbmVyaWNzdHJ0YWJsZSAqaGlkZGVzY3JpcHRvcnNbSEFTSFNaXSA9IHsgTlVMTCwgfTsKK3N0YXRpYyBzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlICpyZXBvcnRzW0hBU0hTWl0gPSB7IE5VTEwsIH07CitzdGF0aWMgc3RydWN0IGdlbmVyaWNzdHJ0YWJsZSAqaHV0c1tIQVNIU1pdID0geyBOVUxMLCB9Oworc3RhdGljIHN0cnVjdCBnZW5lcmljc3RydGFibGUgKmJpYXNzW0hBU0hTWl0gPSB7IE5VTEwsIH07CitzdGF0aWMgc3RydWN0IGdlbmVyaWNzdHJ0YWJsZSAqcGh5c2Rlc3NbSEFTSFNaXSA9IHsgTlVMTCwgfTsKK3N0YXRpYyBzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlICpodXR1c1tIQVNIU1pdID0geyBOVUxMLCB9Oworc3RhdGljIHN0cnVjdCBnZW5lcmljc3RydGFibGUgKmxhbmdpZHNbSEFTSFNaXSA9IHsgTlVMTCwgfTsKK3N0YXRpYyBzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlICpjb3VudHJ5Y29kZXNbSEFTSFNaXSA9IHsgTlVMTCwgfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgY29uc3QgY2hhciAqbmFtZXNfZ2VuZXJpY3N0cnRhYmxlKHN0cnVjdCBnZW5lcmljc3RydGFibGUgKnRbSEFTSFNaXSwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgICAgICBzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlICpoOworCisgICAgICAgIGZvciAoaCA9IHRbaGFzaG51bShpbmRleCldOyBoOyBoID0gaC0+bmV4dCkKKyAgICAgICAgICAgICAgICBpZiAoaC0+bnVtID09IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGgtPm5hbWU7CisgICAgICAgIHJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICpuYW1lc19oaWQodV9pbnQ4X3QgaGlkZCkKK3sKKwlyZXR1cm4gbmFtZXNfZ2VuZXJpY3N0cnRhYmxlKGhpZGRlc2NyaXB0b3JzLCBoaWRkKTsKK30KKworY29uc3QgY2hhciAqbmFtZXNfcmVwb3J0dGFnKHVfaW50OF90IHJ0KQoreworCXJldHVybiBuYW1lc19nZW5lcmljc3RydGFibGUocmVwb3J0cywgcnQpOworfQorCitjb25zdCBjaGFyICpuYW1lc19odXRzKHVuc2lnbmVkIGludCBkYXRhKQoreworCXJldHVybiBuYW1lc19nZW5lcmljc3RydGFibGUoaHV0cywgZGF0YSk7Cit9CisKK2NvbnN0IGNoYXIgKm5hbWVzX2h1dHVzKHVuc2lnbmVkIGludCBkYXRhKQoreworCXJldHVybiBuYW1lc19nZW5lcmljc3RydGFibGUoaHV0dXMsIGRhdGEpOworfQorCitjb25zdCBjaGFyICpuYW1lc19sYW5naWQodV9pbnQxNl90IGxhbmdpZCkKK3sKKwlyZXR1cm4gbmFtZXNfZ2VuZXJpY3N0cnRhYmxlKGxhbmdpZHMsIGxhbmdpZCk7Cit9CisKK2NvbnN0IGNoYXIgKm5hbWVzX3BoeXNkZXModV9pbnQ4X3QgcGgpCit7CisJcmV0dXJuIG5hbWVzX2dlbmVyaWNzdHJ0YWJsZShwaHlzZGVzcywgcGgpOworfQorCitjb25zdCBjaGFyICpuYW1lc19iaWFzKHVfaW50OF90IGIpCit7CisJcmV0dXJuIG5hbWVzX2dlbmVyaWNzdHJ0YWJsZShiaWFzcywgYik7Cit9CisKK2NvbnN0IGNoYXIgKm5hbWVzX2NvdW50cnljb2RlKHVuc2lnbmVkIGludCBjb3VudHJ5Y29kZSkKK3sKKwlyZXR1cm4gbmFtZXNfZ2VuZXJpY3N0cnRhYmxlKGNvdW50cnljb2RlcywgY291bnRyeWNvZGUpOworfQorCitjb25zdCBjaGFyICpuYW1lc192ZW5kb3IodV9pbnQxNl90IHZlbmRvcmlkKQoreworCXN0cnVjdCB2ZW5kb3IgKnY7CisKKwl2ID0gdmVuZG9yc1toYXNobnVtKHZlbmRvcmlkKV07CisJZm9yICg7IHY7IHYgPSB2LT5uZXh0KQorCQlpZiAodi0+dmVuZG9yaWQgPT0gdmVuZG9yaWQpCisJCQlyZXR1cm4gdi0+bmFtZTsKKwlyZXR1cm4gTlVMTDsKK30KKworY29uc3QgY2hhciAqbmFtZXNfcHJvZHVjdCh1X2ludDE2X3QgdmVuZG9yaWQsIHVfaW50MTZfdCBwcm9kdWN0aWQpCit7CisJc3RydWN0IHByb2R1Y3QgKnA7CisKKwlwID0gcHJvZHVjdHNbaGFzaG51bSgodmVuZG9yaWQgPDwgMTYpIHwgcHJvZHVjdGlkKV07CisJZm9yICg7IHA7IHAgPSBwLT5uZXh0KQorCQlpZiAocC0+dmVuZG9yaWQgPT0gdmVuZG9yaWQgJiYgcC0+cHJvZHVjdGlkID09IHByb2R1Y3RpZCkKKwkJCXJldHVybiBwLT5uYW1lOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICpuYW1lc19jbGFzcyh1X2ludDhfdCBjbGFzc2lkKQoreworCXN0cnVjdCBjbGFzcyAqYzsKKworCWMgPSBjbGFzc2VzW2hhc2hudW0oY2xhc3NpZCldOworCWZvciAoOyBjOyBjID0gYy0+bmV4dCkKKwkJaWYgKGMtPmNsYXNzaWQgPT0gY2xhc3NpZCkKKwkJCXJldHVybiBjLT5uYW1lOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICpuYW1lc19zdWJjbGFzcyh1X2ludDhfdCBjbGFzc2lkLCB1X2ludDhfdCBzdWJjbGFzc2lkKQoreworCXN0cnVjdCBzdWJjbGFzcyAqczsKKworCXMgPSBzdWJjbGFzc2VzW2hhc2hudW0oKGNsYXNzaWQgPDwgOCkgfCBzdWJjbGFzc2lkKV07CisJZm9yICg7IHM7IHMgPSBzLT5uZXh0KQorCQlpZiAocy0+Y2xhc3NpZCA9PSBjbGFzc2lkICYmIHMtPnN1YmNsYXNzaWQgPT0gc3ViY2xhc3NpZCkKKwkJCXJldHVybiBzLT5uYW1lOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICpuYW1lc19wcm90b2NvbCh1X2ludDhfdCBjbGFzc2lkLCB1X2ludDhfdCBzdWJjbGFzc2lkLCB1X2ludDhfdCBwcm90b2NvbGlkKQoreworCXN0cnVjdCBwcm90b2NvbCAqcDsKKworCXAgPSBwcm90b2NvbHNbaGFzaG51bSgoY2xhc3NpZCA8PCAxNikgfCAoc3ViY2xhc3NpZCA8PCA4KSB8IHByb3RvY29saWQpXTsKKwlmb3IgKDsgcDsgcCA9IHAtPm5leHQpCisJCWlmIChwLT5jbGFzc2lkID09IGNsYXNzaWQgJiYgcC0+c3ViY2xhc3NpZCA9PSBzdWJjbGFzc2lkICYmIHAtPnByb3RvY29saWQgPT0gcHJvdG9jb2xpZCkKKwkJCXJldHVybiBwLT5uYW1lOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICpuYW1lc19hdWRpb3Rlcm1pbmFsKHVfaW50MTZfdCB0ZXJtdCkKK3sKKwlzdHJ1Y3QgYXVkaW90ZXJtaW5hbCAqYXQ7CisKKwlhdCA9IGF1ZGlvdGVybWluYWxzW2hhc2hudW0odGVybXQpXTsKKwlmb3IgKDsgYXQ7IGF0ID0gYXQtPm5leHQpCisJCWlmIChhdC0+dGVybXQgPT0gdGVybXQpCisJCQlyZXR1cm4gYXQtPm5hbWU7CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IGNoYXIgKm5hbWVzX3ZpZGVvdGVybWluYWwodV9pbnQxNl90IHRlcm10KQoreworCXN0cnVjdCB2aWRlb3Rlcm1pbmFsICp2dDsKKworCXZ0ID0gdmlkZW90ZXJtaW5hbHNbaGFzaG51bSh0ZXJtdCldOworCWZvciAoOyB2dDsgdnQgPSB2dC0+bmV4dCkKKwkJaWYgKHZ0LT50ZXJtdCA9PSB0ZXJtdCkKKwkJCXJldHVybiB2dC0+bmFtZTsKKwlyZXR1cm4gTlVMTDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW50IG5ld192ZW5kb3IoY29uc3QgY2hhciAqbmFtZSwgdV9pbnQxNl90IHZlbmRvcmlkKQoreworCXN0cnVjdCB2ZW5kb3IgKnY7CisJdW5zaWduZWQgaW50IGggPSBoYXNobnVtKHZlbmRvcmlkKTsKKworCXYgPSB2ZW5kb3JzW2hdOworCWZvciAoOyB2OyB2ID0gdi0+bmV4dCkKKwkJaWYgKHYtPnZlbmRvcmlkID09IHZlbmRvcmlkKQorCQkJcmV0dXJuIC0xOworCXYgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB2ZW5kb3IpICsgc3RybGVuKG5hbWUpKTsKKwlpZiAoIXYpCisJCXJldHVybiAtMTsKKwlzdHJjcHkodi0+bmFtZSwgbmFtZSk7CisJdi0+dmVuZG9yaWQgPSB2ZW5kb3JpZDsKKwl2LT5uZXh0ID0gdmVuZG9yc1toXTsKKwl2ZW5kb3JzW2hdID0gdjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXdfcHJvZHVjdChjb25zdCBjaGFyICpuYW1lLCB1X2ludDE2X3QgdmVuZG9yaWQsIHVfaW50MTZfdCBwcm9kdWN0aWQpCit7CisJc3RydWN0IHByb2R1Y3QgKnA7CisJdW5zaWduZWQgaW50IGggPSBoYXNobnVtKCh2ZW5kb3JpZCA8PCAxNikgfCBwcm9kdWN0aWQpOworCisJcCA9IHByb2R1Y3RzW2hdOworCWZvciAoOyBwOyBwID0gcC0+bmV4dCkKKwkJaWYgKHAtPnZlbmRvcmlkID09IHZlbmRvcmlkICYmIHAtPnByb2R1Y3RpZCA9PSBwcm9kdWN0aWQpCisJCQlyZXR1cm4gLTE7CisJcCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHByb2R1Y3QpICsgc3RybGVuKG5hbWUpKTsKKwlpZiAoIXApCisJCXJldHVybiAtMTsKKwlzdHJjcHkocC0+bmFtZSwgbmFtZSk7CisJcC0+dmVuZG9yaWQgPSB2ZW5kb3JpZDsKKwlwLT5wcm9kdWN0aWQgPSBwcm9kdWN0aWQ7CisJcC0+bmV4dCA9IHByb2R1Y3RzW2hdOworCXByb2R1Y3RzW2hdID0gcDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXdfY2xhc3MoY29uc3QgY2hhciAqbmFtZSwgdV9pbnQ4X3QgY2xhc3NpZCkKK3sKKwlzdHJ1Y3QgY2xhc3MgKmM7CisJdW5zaWduZWQgaW50IGggPSBoYXNobnVtKGNsYXNzaWQpOworCisJYyA9IGNsYXNzZXNbaF07CisJZm9yICg7IGM7IGMgPSBjLT5uZXh0KQorCQlpZiAoYy0+Y2xhc3NpZCA9PSBjbGFzc2lkKQorCQkJcmV0dXJuIC0xOworCWMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBjbGFzcykgKyBzdHJsZW4obmFtZSkpOworCWlmICghYykKKwkJcmV0dXJuIC0xOworCXN0cmNweShjLT5uYW1lLCBuYW1lKTsKKwljLT5jbGFzc2lkID0gY2xhc3NpZDsKKwljLT5uZXh0ID0gY2xhc3Nlc1toXTsKKwljbGFzc2VzW2hdID0gYzsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXdfc3ViY2xhc3MoY29uc3QgY2hhciAqbmFtZSwgdV9pbnQ4X3QgY2xhc3NpZCwgdV9pbnQ4X3Qgc3ViY2xhc3NpZCkKK3sKKwlzdHJ1Y3Qgc3ViY2xhc3MgKnM7CisJdW5zaWduZWQgaW50IGggPSBoYXNobnVtKChjbGFzc2lkIDw8IDgpIHwgc3ViY2xhc3NpZCk7CisKKwlzID0gc3ViY2xhc3Nlc1toXTsKKwlmb3IgKDsgczsgcyA9IHMtPm5leHQpCisJCWlmIChzLT5jbGFzc2lkID09IGNsYXNzaWQgJiYgcy0+c3ViY2xhc3NpZCA9PSBzdWJjbGFzc2lkKQorCQkJcmV0dXJuIC0xOworCXMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzdWJjbGFzcykgKyBzdHJsZW4obmFtZSkpOworCWlmICghcykKKwkJcmV0dXJuIC0xOworCXN0cmNweShzLT5uYW1lLCBuYW1lKTsKKwlzLT5jbGFzc2lkID0gY2xhc3NpZDsKKwlzLT5zdWJjbGFzc2lkID0gc3ViY2xhc3NpZDsKKwlzLT5uZXh0ID0gc3ViY2xhc3Nlc1toXTsKKwlzdWJjbGFzc2VzW2hdID0gczsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXdfcHJvdG9jb2woY29uc3QgY2hhciAqbmFtZSwgdV9pbnQ4X3QgY2xhc3NpZCwgdV9pbnQ4X3Qgc3ViY2xhc3NpZCwgdV9pbnQ4X3QgcHJvdG9jb2xpZCkKK3sKKwlzdHJ1Y3QgcHJvdG9jb2wgKnA7CisJdW5zaWduZWQgaW50IGggPSBoYXNobnVtKChjbGFzc2lkIDw8IDE2KSB8IChzdWJjbGFzc2lkIDw8IDgpIHwgcHJvdG9jb2xpZCk7CisKKwlwID0gcHJvdG9jb2xzW2hdOworCWZvciAoOyBwOyBwID0gcC0+bmV4dCkKKwkJaWYgKHAtPmNsYXNzaWQgPT0gY2xhc3NpZCAmJiBwLT5zdWJjbGFzc2lkID09IHN1YmNsYXNzaWQgJiYgcC0+cHJvdG9jb2xpZCA9PSBwcm90b2NvbGlkKQorCQkJcmV0dXJuIC0xOworCXAgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBwcm90b2NvbCkgKyBzdHJsZW4obmFtZSkpOworCWlmICghcCkKKwkJcmV0dXJuIC0xOworCXN0cmNweShwLT5uYW1lLCBuYW1lKTsKKwlwLT5jbGFzc2lkID0gY2xhc3NpZDsKKwlwLT5zdWJjbGFzc2lkID0gc3ViY2xhc3NpZDsKKwlwLT5wcm90b2NvbGlkID0gcHJvdG9jb2xpZDsKKwlwLT5uZXh0ID0gcHJvdG9jb2xzW2hdOworCXByb3RvY29sc1toXSA9IHA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbmV3X2F1ZGlvdGVybWluYWwoY29uc3QgY2hhciAqbmFtZSwgdV9pbnQxNl90IHRlcm10KQoreworCXN0cnVjdCBhdWRpb3Rlcm1pbmFsICphdDsKKwl1bnNpZ25lZCBpbnQgaCA9IGhhc2hudW0odGVybXQpOworCisJYXQgPSBhdWRpb3Rlcm1pbmFsc1toXTsKKwlmb3IgKDsgYXQ7IGF0ID0gYXQtPm5leHQpCisJCWlmIChhdC0+dGVybXQgPT0gdGVybXQpCisJCQlyZXR1cm4gLTE7CisJYXQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBhdWRpb3Rlcm1pbmFsKSArIHN0cmxlbihuYW1lKSk7CisJaWYgKCFhdCkKKwkJcmV0dXJuIC0xOworCXN0cmNweShhdC0+bmFtZSwgbmFtZSk7CisJYXQtPnRlcm10ID0gdGVybXQ7CisJYXQtPm5leHQgPSBhdWRpb3Rlcm1pbmFsc1toXTsKKwlhdWRpb3Rlcm1pbmFsc1toXSA9IGF0OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG5ld192aWRlb3Rlcm1pbmFsKGNvbnN0IGNoYXIgKm5hbWUsIHVfaW50MTZfdCB0ZXJtdCkKK3sKKwlzdHJ1Y3QgdmlkZW90ZXJtaW5hbCAqdnQ7CisJdW5zaWduZWQgaW50IGggPSBoYXNobnVtKHRlcm10KTsKKworCXZ0ID0gdmlkZW90ZXJtaW5hbHNbaF07CisJZm9yICg7IHZ0OyB2dCA9IHZ0LT5uZXh0KQorCQlpZiAodnQtPnRlcm10ID09IHRlcm10KQorCQkJcmV0dXJuIC0xOworCXZ0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgdmlkZW90ZXJtaW5hbCkgKyBzdHJsZW4obmFtZSkpOworCWlmICghdnQpCisJCXJldHVybiAtMTsKKwlzdHJjcHkodnQtPm5hbWUsIG5hbWUpOworCXZ0LT50ZXJtdCA9IHRlcm10OworCXZ0LT5uZXh0ID0gdmlkZW90ZXJtaW5hbHNbaF07CisJdmlkZW90ZXJtaW5hbHNbaF0gPSB2dDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuZXdfZ2VuZXJpY3N0cnRhYmxlKHN0cnVjdCBnZW5lcmljc3RydGFibGUgKnRbSEFTSFNaXSwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgICAgICBzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlICpnOworCXVuc2lnbmVkIGludCBoID0gaGFzaG51bShpbmRleCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGcgPSB0W2hdOyBnOyBnID0gZy0+bmV4dCkKKyAgICAgICAgICAgICAgICBpZiAoZy0+bnVtID09IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBnID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZ2VuZXJpY3N0cnRhYmxlKSArIHN0cmxlbihuYW1lKSk7CisgICAgICAgIGlmICghZykKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHN0cmNweShnLT5uYW1lLCBuYW1lKTsKKyAgICAgICAgZy0+bnVtID0gaW5kZXg7CisgICAgICAgIGctPm5leHQgPSB0W2hdOworICAgICAgICB0W2hdID0gZzsKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbmV3X2hpZChjb25zdCBjaGFyICpuYW1lLCB1X2ludDhfdCBoaWRkKQoreworCXJldHVybiBuZXdfZ2VuZXJpY3N0cnRhYmxlKGhpZGRlc2NyaXB0b3JzLCBuYW1lLCBoaWRkKTsKK30KKworc3RhdGljIGludCBuZXdfcmVwb3J0dGFnKGNvbnN0IGNoYXIgKm5hbWUsIHVfaW50OF90IHJ0KQoreworCXJldHVybiBuZXdfZ2VuZXJpY3N0cnRhYmxlKHJlcG9ydHMsIG5hbWUsIHJ0KTsKK30KKworc3RhdGljIGludCBuZXdfaHV0cyhjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgZGF0YSkKK3sKKwlyZXR1cm4gbmV3X2dlbmVyaWNzdHJ0YWJsZShodXRzLCBuYW1lLCBkYXRhKTsKK30KKworc3RhdGljIGludCBuZXdfaHV0dXMoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGRhdGEpCit7CisJcmV0dXJuIG5ld19nZW5lcmljc3RydGFibGUoaHV0dXMsIG5hbWUsIGRhdGEpOworfQorCitzdGF0aWMgaW50IG5ld19sYW5naWQoY29uc3QgY2hhciAqbmFtZSwgdV9pbnQxNl90IGxhbmdpZCkKK3sKKwlyZXR1cm4gbmV3X2dlbmVyaWNzdHJ0YWJsZShsYW5naWRzLCBuYW1lLCBsYW5naWQpOworfQorCitzdGF0aWMgaW50IG5ld19waHlzZGVzKGNvbnN0IGNoYXIgKm5hbWUsIHVfaW50OF90IHBoKQoreworCXJldHVybiBuZXdfZ2VuZXJpY3N0cnRhYmxlKHBoeXNkZXNzLCBuYW1lLCBwaCk7Cit9CitzdGF0aWMgaW50IG5ld19iaWFzKGNvbnN0IGNoYXIgKm5hbWUsIHVfaW50OF90IGIpCit7CisJcmV0dXJuIG5ld19nZW5lcmljc3RydGFibGUoYmlhc3MsIG5hbWUsIGIpOworfQorCitzdGF0aWMgaW50IG5ld19jb3VudHJ5Y29kZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgY291bnRyeWNvZGUpCit7CisJcmV0dXJuIG5ld19nZW5lcmljc3RydGFibGUoY291bnRyeWNvZGVzLCBuYW1lLCBjb3VudHJ5Y29kZSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBEQkcoeCkgCisKK3N0YXRpYyB2b2lkIHBhcnNlKHVzYl9maWxlIGYpCit7CisJY2hhciBidWZbNTEyXSwgKmNwOworCXVuc2lnbmVkIGludCBsaW5lY3RyID0gMDsKKwlpbnQgbGFzdHZlbmRvciA9IC0xLCBsYXN0Y2xhc3MgPSAtMSwgbGFzdHN1YmNsYXNzID0gLTEsIGxhc3RodXQ9LTEsIGxhc3RsYW5nPS0xOworCXVuc2lnbmVkIGludCB1OworCisJd2hpbGUgKHVzYl9mZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgeworCQlsaW5lY3RyKys7CisJCS8qIHJlbW92ZSBsaW5lIGVuZHMgKi8KKwkJaWYgKChjcCA9IHN0cmNocihidWYsIDEzKSkpCisJCQkqY3AgPSAwOworCQlpZiAoKGNwID0gc3RyY2hyKGJ1ZiwgMTApKSkKKwkJCSpjcCA9IDA7CisJCWlmIChidWZbMF0gPT0gJyMnIHx8ICFidWZbMF0pCisJCQljb250aW51ZTsKKwkJY3AgPSBidWY7CisgICAgICAgICAgICAgICAgaWYgKGJ1ZlswXSA9PSAnUCcgJiYgYnVmWzFdID09ICdIJyAmJiBidWZbMl0gPT0gJ1knICYmIGJ1ZlszXSA9PSAnUycgJiYgYnVmWzRdID09ICdEJyAmJgorICAgICAgICAgICAgICAgICAgICBidWZbNV0gPT0gJ0UnICYmIGJ1Zls2XSA9PSAnUycgJiYgLyppc3NwYWNlKGJ1Zls3XSkqLyBidWZbN10gPT0gJyAnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjcCA9IGJ1ZiArIDg7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3ApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcCsrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdCgqY3ApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBQaHlzZGVzIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHN0cnRvdWwoY3AsICZjcCwgMTYpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKmNwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBQaHlzZGVzIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld19waHlzZGVzKGNwLCB1KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJEdXBsaWNhdGUgUGh5c2RlcyAgdHlwZSBzcGVjIGF0IGxpbmUgJXUgdGVybWluYWwgdHlwZSAlMDR4ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBEQkcocHJpbnRmKCJsaW5lICU1dSBwaHlzZGVzIHR5cGUgJTAyeCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChidWZbMF0gPT0gJ1AnICYmIGJ1ZlsxXSA9PSAnSCcgJiYgYnVmWzJdID09ICdZJyAmJiAvKmlzc3BhY2UoYnVmWzNdKSovIGJ1ZlszXSA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwID0gYnVmICsgNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKCpjcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KCpjcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFBIWSB0eXBlIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzdHJ0b3VsKGNwLCAmY3AsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKCpjcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISpjcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgUEhZIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld19waHlzZGVzKGNwLCB1KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJEdXBsaWNhdGUgUEhZIHR5cGUgc3BlYyBhdCBsaW5lICV1IHRlcm1pbmFsIHR5cGUgJTA0eCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApOworICAgICAgICAgICAgICAgICAgICAgICAgREJHKHByaW50ZigibGluZSAlNXUgUEhZIHR5cGUgJTAyeCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChidWZbMF0gPT0gJ0InICYmIGJ1ZlsxXSA9PSAnSScgJiYgYnVmWzJdID09ICdBJyAmJiBidWZbM10gPT0gJ1MnICYmIC8qaXNzcGFjZShidWZbNF0pKi8gYnVmWzRdID09ICcgJykgeworICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSBidWYgKyA1OworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoKmNwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgQklBUyB0eXBlIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzdHJ0b3VsKGNwLCAmY3AsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKCpjcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISpjcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgQklBUyB0eXBlIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdfYmlhcyhjcCwgdSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRHVwbGljYXRlIEJJQVMgIHR5cGUgc3BlYyBhdCBsaW5lICV1IHRlcm1pbmFsIHR5cGUgJTA0eCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApOworICAgICAgICAgICAgICAgICAgICAgICAgREJHKHByaW50ZigibGluZSAlNXUgQklBUyB0eXBlICUwMnggJXNcbiIsIGxpbmVjdHIsIHUsIGNwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYnVmWzBdID09ICdMJyAmJiAvKmlzc3BhY2UoYnVmWzFdKSovIGJ1ZlsxXSA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwID0gIGJ1ZisyOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoKmNwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgTEFOR0lEIHNwZWMgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHN0cnRvdWwoY3AsICZjcCwgMTYpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKmNwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBMQU5HSUQgc3BlYyBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3X2xhbmdpZChjcCwgdSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRHVwbGljYXRlIExBTkdJRCBzcGVjIGF0IGxpbmUgJXUgbGFuZ3VhZ2UtaWQgJTA0eCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApOworICAgICAgICAgICAgICAgICAgICAgICAgREJHKHByaW50ZigibGluZSAlNXUgTEFOR0lEICUwMnggJXNcbiIsIGxpbmVjdHIsIHUsIGNwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0aHV0ID0gbGFzdGNsYXNzID0gbGFzdHZlbmRvciA9IGxhc3RzdWJjbGFzcyA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGxhbmcgPSB1OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCQlpZiAoYnVmWzBdID09ICdDJyAmJiAvKmlzc3BhY2UoYnVmWzFdKSovIGJ1ZlsxXSA9PSAnICcpIHsKKwkJCS8qIGNsYXNzIHNwZWMgKi8KKwkJCWNwID0gYnVmKzI7CisJCQl3aGlsZSAoaXNzcGFjZSgqY3ApKQorCQkJCWNwKys7CisJCQlpZiAoIWlzeGRpZ2l0KCpjcCkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgY2xhc3Mgc3BlYyBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXUgPSBzdHJ0b3VsKGNwLCAmY3AsIDE2KTsKKwkJCXdoaWxlIChpc3NwYWNlKCpjcCkpCisJCQkJY3ArKzsKKwkJCWlmICghKmNwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGNsYXNzIHNwZWMgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAobmV3X2NsYXNzKGNwLCB1KSkKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBjbGFzcyBzcGVjIGF0IGxpbmUgJXUgY2xhc3MgJTA0eCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApOworCQkJREJHKHByaW50ZigibGluZSAlNXUgY2xhc3MgJTAyeCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApKTsKKwkJCWxhc3RodXQgPSBsYXN0bGFuZyA9IGxhc3R2ZW5kb3IgPSBsYXN0c3ViY2xhc3MgPSAtMTsKKwkJCWxhc3RjbGFzcyA9IHU7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoYnVmWzBdID09ICdBJyAmJiBidWZbMV0gPT0gJ1QnICYmIGlzc3BhY2UoYnVmWzJdKSkgeworCQkJLyogYXVkaW8gdGVybWluYWwgdHlwZSBzcGVjICovCisJCQljcCA9IGJ1ZiszOworCQkJd2hpbGUgKGlzc3BhY2UoKmNwKSkKKwkJCQljcCsrOworCQkJaWYgKCFpc3hkaWdpdCgqY3ApKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGF1ZGlvIHRlcm1pbmFsIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisJCQkJY29udGludWU7CisJCQl9CisJCQl1ID0gc3RydG91bChjcCwgJmNwLCAxNik7CisJCQl3aGlsZSAoaXNzcGFjZSgqY3ApKQorCQkJCWNwKys7CisJCQlpZiAoISpjcCkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBhdWRpbyB0ZXJtaW5hbCB0eXBlIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKG5ld19hdWRpb3Rlcm1pbmFsKGNwLCB1KSkKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBhdWRpbyB0ZXJtaW5hbCB0eXBlIHNwZWMgYXQgbGluZSAldSB0ZXJtaW5hbCB0eXBlICUwNHggJXNcbiIsIGxpbmVjdHIsIHUsIGNwKTsKKwkJCURCRyhwcmludGYoImxpbmUgJTV1IGF1ZGlvIHRlcm1pbmFsIHR5cGUgJTAyeCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChidWZbMF0gPT0gJ1YnICYmIGJ1ZlsxXSA9PSAnVCcgJiYgaXNzcGFjZShidWZbMl0pKSB7CisJCQkvKiB2aWRlbyB0ZXJtaW5hbCB0eXBlIHNwZWMgKi8KKwkJCWNwID0gYnVmKzM7CisJCQl3aGlsZSAoaXNzcGFjZSgqY3ApKQorCQkJCWNwKys7CisJCQlpZiAoIWlzeGRpZ2l0KCpjcCkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgdmlkZW8gdGVybWluYWwgdHlwZSBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXUgPSBzdHJ0b3VsKGNwLCAmY3AsIDE2KTsKKwkJCXdoaWxlIChpc3NwYWNlKCpjcCkpCisJCQkJY3ArKzsKKwkJCWlmICghKmNwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHZpZGVvIHRlcm1pbmFsIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAobmV3X3ZpZGVvdGVybWluYWwoY3AsIHUpKQorCQkJCWZwcmludGYoc3RkZXJyLCAiRHVwbGljYXRlIHZpZGVvIHRlcm1pbmFsIHR5cGUgc3BlYyBhdCBsaW5lICV1IHRlcm1pbmFsIHR5cGUgJTA0eCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApOworCQkJREJHKHByaW50ZigibGluZSAlNXUgdmlkZW8gdGVybWluYWwgdHlwZSAlMDJ4ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCkpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGJ1ZlswXSA9PSAnSCcgJiYgYnVmWzFdID09ICdDJyAmJiBidWZbMl0gPT0gJ0MnICYmIGlzc3BhY2UoYnVmWzNdKSkgeworCQkJLyogSElEIERlc2NyaXB0b3IgYkNvdW50cnlDb2RlICovCisgICAgICAgICAgICAgICAgICAgICAgICBjcCA9ICBidWYrMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKCpjcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KCpjcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIEhJRCBjb3VudHJ5IGNvZGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHN0cnRvdWwoY3AsICZjcCwgMTApOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKmNwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBISUQgY291bnRyeSBjb2RlIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdfY291bnRyeWNvZGUoY3AsIHUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBISUQgY291bnRyeSBjb2RlIGF0IGxpbmUgJXUgY291bnRyeSAlMDJ1ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBEQkcocHJpbnRmKCJsaW5lICU1dSBrZXlib2FyZCBjb3VudHJ5IGNvZGUgJTAydSAlc1xuIiwgbGluZWN0ciwgdSwgY3ApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCQl9CisJCWlmIChpc3hkaWdpdCgqY3ApKSB7CisJCQkvKiB2ZW5kb3IgKi8KKwkJCXUgPSBzdHJ0b3VsKGNwLCAmY3AsIDE2KTsKKwkJCXdoaWxlIChpc3NwYWNlKCpjcCkpCisJCQkJY3ArKzsKKwkJCWlmICghKmNwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHZlbmRvciBzcGVjIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKG5ld192ZW5kb3IoY3AsIHUpKQorCQkJCWZwcmludGYoc3RkZXJyLCAiRHVwbGljYXRlIHZlbmRvciBzcGVjIGF0IGxpbmUgJXUgdmVuZG9yICUwNHggJXNcbiIsIGxpbmVjdHIsIHUsIGNwKTsKKwkJCURCRyhwcmludGYoImxpbmUgJTV1IHZlbmRvciAlMDR4ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCkpOworCQkJbGFzdHZlbmRvciA9IHU7CisJCQlsYXN0aHV0ID0gbGFzdGxhbmcgPSBsYXN0Y2xhc3MgPSBsYXN0c3ViY2xhc3MgPSAtMTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChidWZbMF0gPT0gJ1x0JyAmJiBpc3hkaWdpdChidWZbMV0pKSB7CisJCQkvKiBwcm9kdWN0IG9yIHN1YmNsYXNzIHNwZWMgKi8KKwkJCXUgPSBzdHJ0b3VsKGJ1ZisxLCAmY3AsIDE2KTsKKwkJCXdoaWxlIChpc3NwYWNlKCpjcCkpCisJCQkJY3ArKzsKKwkJCWlmICghKmNwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHByb2R1Y3Qvc3ViY2xhc3Mgc3BlYyBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChsYXN0dmVuZG9yICE9IC0xKSB7CisJCQkJaWYgKG5ld19wcm9kdWN0KGNwLCBsYXN0dmVuZG9yLCB1KSkKKwkJCQkJZnByaW50ZihzdGRlcnIsICJEdXBsaWNhdGUgcHJvZHVjdCBzcGVjIGF0IGxpbmUgJXUgcHJvZHVjdCAlMDR4OiUwNHggJXNcbiIsIGxpbmVjdHIsIGxhc3R2ZW5kb3IsIHUsIGNwKTsKKwkJCQlEQkcocHJpbnRmKCJsaW5lICU1dSBwcm9kdWN0ICUwNHg6JTA0eCAlc1xuIiwgbGluZWN0ciwgbGFzdHZlbmRvciwgdSwgY3ApKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChsYXN0Y2xhc3MgIT0gLTEpIHsKKwkJCQlpZiAobmV3X3N1YmNsYXNzKGNwLCBsYXN0Y2xhc3MsIHUpKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBzdWJjbGFzcyBzcGVjIGF0IGxpbmUgJXUgY2xhc3MgJTAyeDolMDJ4ICVzXG4iLCBsaW5lY3RyLCBsYXN0Y2xhc3MsIHUsIGNwKTsKKwkJCQlEQkcocHJpbnRmKCJsaW5lICU1dSBzdWJjbGFzcyAlMDJ4OiUwMnggJXNcbiIsIGxpbmVjdHIsIGxhc3RjbGFzcywgdSwgY3ApKTsKKwkJCQlsYXN0c3ViY2xhc3MgPSB1OworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKGxhc3RodXQgIT0gLTEpIHsKKwkJCQlpZiAobmV3X2h1dHVzKGNwLCAobGFzdGh1dCA8PCAxNikrdSkpCisJCQkJCWZwcmludGYoc3RkZXJyLCAiRHVwbGljYXRlIEhVVCBVc2FnZSBTcGVjIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKGxhc3RsYW5nICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdfbGFuZ2lkKGNwLCBsYXN0bGFuZysodTw8MTApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBMQU5HSUQgVXNhZ2UgU3BlYyBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisJCQlmcHJpbnRmKHN0ZGVyciwgIlByb2R1Y3QvU3ViY2xhc3Mgc3BlYyB3aXRob3V0IHByaW9yIFZlbmRvci9DbGFzcyBzcGVjIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGJ1ZlswXSA9PSAnXHQnICYmIGJ1ZlsxXSA9PSAnXHQnICYmIGlzeGRpZ2l0KGJ1ZlsyXSkpIHsKKwkJCS8qIHByb3RvY29sIHNwZWMgKi8KKwkJCXUgPSBzdHJ0b3VsKGJ1ZisyLCAmY3AsIDE2KTsKKwkJCXdoaWxlIChpc3NwYWNlKCpjcCkpCisJCQkJY3ArKzsKKwkJCWlmICghKmNwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHByb3RvY29sIHNwZWMgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAobGFzdGNsYXNzICE9IC0xICYmIGxhc3RzdWJjbGFzcyAhPSAtMSkgeworCQkJCWlmIChuZXdfcHJvdG9jb2woY3AsIGxhc3RjbGFzcywgbGFzdHN1YmNsYXNzLCB1KSkKKwkJCQkJZnByaW50ZihzdGRlcnIsICJEdXBsaWNhdGUgcHJvdG9jb2wgc3BlYyBhdCBsaW5lICV1IGNsYXNzICUwMng6JTAyeDolMDJ4ICVzXG4iLCBsaW5lY3RyLCBsYXN0Y2xhc3MsIGxhc3RzdWJjbGFzcywgdSwgY3ApOworCQkJCURCRyhwcmludGYoImxpbmUgJTV1IHByb3RvY29sICUwMng6JTAyeDolMDJ4ICVzXG4iLCBsaW5lY3RyLCBsYXN0Y2xhc3MsIGxhc3RzdWJjbGFzcywgdSwgY3ApKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWZwcmludGYoc3RkZXJyLCAiUHJvdG9jb2wgc3BlYyB3aXRob3V0IHByaW9yIENsYXNzIGFuZCBTdWJjbGFzcyBzcGVjIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGJ1ZlswXSA9PSAnSCcgJiYgYnVmWzFdID09ICdJJyAmJiBidWZbMl0gPT0gJ0QnICYmIC8qaXNzcGFjZShidWZbM10pKi8gYnVmWzNdID09ICcgJykgeworCQkJY3AgPSBidWYgKyA0OworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoKmNwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgSElEIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHN0cnRvdWwoY3AsICZjcCwgMTYpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKmNwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBISUQgdHlwZSBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3X2hpZChjcCwgdSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRHVwbGljYXRlIEhJRCB0eXBlIHNwZWMgYXQgbGluZSAldSB0ZXJtaW5hbCB0eXBlICUwNHggJXNcbiIsIGxpbmVjdHIsIHUsIGNwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIERCRyhwcmludGYoImxpbmUgJTV1IEhJRCB0eXBlICUwMnggJXNcbiIsIGxpbmVjdHIsIHUsIGNwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworCQl9CisgICAgICAgICAgICAgICAgaWYgKGJ1ZlswXSA9PSAnSCcgJiYgYnVmWzFdID09ICdVJyAmJiBidWZbMl0gPT0gJ1QnICYmIC8qaXNzcGFjZShidWZbM10pKi8gYnVmWzNdID09ICcgJykgeworICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSBidWYgKyA0OworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoKmNwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgSFVUIHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdSA9IHN0cnRvdWwoY3AsICZjcCwgMTYpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKmNwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKmNwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBIVVQgdHlwZSBhdCBsaW5lICV1XG4iLCBsaW5lY3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3X2h1dHMoY3AsIHUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBIVVQgdHlwZSBzcGVjIGF0IGxpbmUgJXUgdGVybWluYWwgdHlwZSAlMDR4ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCk7CisJCQlsYXN0bGFuZyA9IGxhc3RjbGFzcyA9IGxhc3R2ZW5kb3IgPSBsYXN0c3ViY2xhc3MgPSAtMTsKKwkJCWxhc3RodXQgPSB1OworICAgICAgICAgICAgICAgICAgICAgICAgREJHKHByaW50ZigibGluZSAlNXUgSFVUIHR5cGUgJTAyeCAlc1xuIiwgbGluZWN0ciwgdSwgY3ApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChidWZbMF0gPT0gJ1InICYmIGJ1ZlsxXSA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwID0gYnVmICsgMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKCpjcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KCpjcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFJlcG9ydCB0eXBlIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBzdHJ0b3VsKGNwLCAmY3AsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKCpjcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISpjcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgUmVwb3J0IHR5cGUgYXQgbGluZSAldVxuIiwgbGluZWN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld19yZXBvcnR0YWcoY3AsIHUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkR1cGxpY2F0ZSBSZXBvcnQgdHlwZSBzcGVjIGF0IGxpbmUgJXUgdGVybWluYWwgdHlwZSAlMDR4ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBEQkcocHJpbnRmKCJsaW5lICU1dSBSZXBvcnQgdHlwZSAlMDJ4ICVzXG4iLCBsaW5lY3RyLCB1LCBjcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB9CQkJCisJCWZwcmludGYoc3RkZXJyLCAiVW5rbm93biBsaW5lIGF0IGxpbmUgJXVcbiIsIGxpbmVjdHIpOworCX0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgbmFtZXNfaW5pdChjaGFyICpuKQoreworCXVzYl9maWxlIGY7CisJCisJaWYgKCEoZiA9IHVzYl9mb3BlbihuLCAiciIpKSkgeworCQlyZXR1cm4gZXJybm87CisJfQorCXBhcnNlKGYpOworCXVzYl9jbG9zZShmKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvbmFtZXMuaCBiL3VzYnV0aWxzLTAuODYvbmFtZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2RlODkxCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMtMC44Ni9uYW1lcy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqICAgICAgbmFtZXMuaCAgLS0gIFVTQiBuYW1lIGRhdGFiYXNlIG1hbmlwdWxhdGlvbiByb3V0aW5lcworICoKKyAqICAgICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwICBUaG9tYXMgU2FpbGVyIChzYWlsZXJAaWZlLmVlLmV0aHouY2gpCisgKgorICogICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICoKKyAqCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9OQU1FU19ICisjZGVmaW5lIF9OQU1FU19ICisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitleHRlcm4gY29uc3QgY2hhciAqbmFtZXNfdmVuZG9yKHVfaW50MTZfdCB2ZW5kb3JpZCk7CitleHRlcm4gY29uc3QgY2hhciAqbmFtZXNfcHJvZHVjdCh1X2ludDE2X3QgdmVuZG9yaWQsIHVfaW50MTZfdCBwcm9kdWN0aWQpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX2NsYXNzKHVfaW50OF90IGNsYXNzaWQpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX3N1YmNsYXNzKHVfaW50OF90IGNsYXNzaWQsIHVfaW50OF90IHN1YmNsYXNzaWQpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX3Byb3RvY29sKHVfaW50OF90IGNsYXNzaWQsIHVfaW50OF90IHN1YmNsYXNzaWQsIHVfaW50OF90IHByb3RvY29saWQpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX2F1ZGlvdGVybWluYWwodV9pbnQxNl90IHRlcm10KTsKK2V4dGVybiBjb25zdCBjaGFyICpuYW1lc192aWRlb3Rlcm1pbmFsKHVfaW50MTZfdCB0ZXJtdCk7CitleHRlcm4gY29uc3QgY2hhciAqbmFtZXNfaGlkKHVfaW50OF90IGhpZGQpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX3JlcG9ydHRhZyh1X2ludDhfdCBydCk7CitleHRlcm4gY29uc3QgY2hhciAqbmFtZXNfaHV0cyh1bnNpZ25lZCBpbnQgZGF0YSk7CitleHRlcm4gY29uc3QgY2hhciAqbmFtZXNfaHV0dXModW5zaWduZWQgaW50IGRhdGEpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX2xhbmdpZCh1X2ludDE2X3QgbGFuZ2lkKTsKK2V4dGVybiBjb25zdCBjaGFyICpuYW1lc19waHlzZGVzKHVfaW50OF90IHBoKTsKK2V4dGVybiBjb25zdCBjaGFyICpuYW1lc19iaWFzKHVfaW50OF90IGIpOworZXh0ZXJuIGNvbnN0IGNoYXIgKm5hbWVzX2NvdW50cnljb2RlKHVuc2lnbmVkIGludCBjb3VudHJ5Y29kZSk7CitleHRlcm4gaW50IG5hbWVzX2luaXQoY2hhciAqbik7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyNlbmRpZiAvKiBfTkFNRVNfSCAqLwpkaWZmIC0tZ2l0IGEvdXNidXRpbHMtMC44Ni91cGRhdGUtdXNiaWRzLnNoLmluIGIvdXNidXRpbHMtMC44Ni91cGRhdGUtdXNiaWRzLnNoLmluCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRhNDg3ZWQKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L3VwZGF0ZS11c2JpZHMuc2guaW4KQEAgLTAsMCArMSw0NiBAQAorIyEvYmluL3NoCisKKyMgc2VlIGFsc28gdXBkYXRlLXBjaWlkcy5zaCAoZmFuY2llcikKKworWyAiJDEiID0gIi1xIiBdICYmIHF1aWV0PSJ0cnVlIiB8fCBxdWlldD0iZmFsc2UiCisKK3NldCAtZQorU1JDPSJodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvdXNiLmlkcyIKK0RFU1Q9QHVzYmlkc0AKKworIyBpZiB1c2IuaWRzIGlzIHJlYWQtb25seSAoYmVjYXVzZSB0aGUgZmlsZXN5c3RlbSBpcyByZWFkLW9ubHkpLAorIyB0aGVuIGp1c3Qgc2tpcCB0aGlzIHdob2xlIHByb2Nlc3MuCitpZiAhIHRvdWNoICR7REVTVH0gPiYyID4vZGV2L251bGwgOyB0aGVuCisJJHtxdWlldH0gfHwgZWNobyAiJHtERVNUfSBpcyByZWFkLW9ubHksIGV4aXRpbmcuIgorCWV4aXQgMAorZmkKKworaWYgd2hpY2ggd2dldCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJREw9IndnZXQgLU8gJERFU1QubmV3ICRTUkMiCisJJHtxdWlldH0gJiYgREw9IiRETCAtcSIKK2VsaWYgd2hpY2ggbHlueCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJREw9ImV2YWwgbHlueCAtc291cmNlICRTUkMgPiRERVNULm5ldyIKK2Vsc2UKKwllY2hvID4mMiAidXBkYXRlLXVzYmlkczogY2Fubm90IGZpbmQgd2dldCBub3IgbHlueCIKKwlleGl0IDEKK2ZpCisKK2lmICEgJERMIDsgdGhlbgorCWVjaG8gPiYyICJ1cGRhdGUtdXNiaWRzOiBkb3dubG9hZCBmYWlsZWQiCisJcm0gLWYgJERFU1QubmV3CisJZXhpdCAxCitmaQorCitpZiAhIGdyZXAgPi9kZXYvbnVsbCAiXkMgIiAkREVTVC5uZXcgOyB0aGVuCisJZWNobyA+JjIgInVwZGF0ZS11c2JpZHM6IG1pc3NpbmcgY2xhc3MgaW5mbywgcHJvYmFibHkgdHJ1bmNhdGVkIGZpbGUiCisJZXhpdCAxCitmaQorCitpZiBbIC1mICRERVNUIF0gOyB0aGVuCisJbXYgJERFU1QgJERFU1Qub2xkCisJIyAtLXJlZmVyZW5jZSBpcyBzdXBwb3J0ZWQgb25seSBieSBjaG1vZCBmcm9tIEdOVSBmaWxlLCBzbyBsZXQncyBpZ25vcmUgYW55IGVycm9ycworCWNobW9kIC1mIC0tcmVmZXJlbmNlPSRERVNULm9sZCAkREVTVC5uZXcgMj4vZGV2L251bGwgfHwgdHJ1ZQorZmkKK212ICRERVNULm5ldyAkREVTVAorCiske3F1aWV0fSB8fCBlY2hvICJEb25lLiIKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvdXNiLWRldmljZXMgYi91c2J1dGlscy0wLjg2L3VzYi1kZXZpY2VzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIyMDUyZTIKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L3VzYi1kZXZpY2VzCkBAIC0wLDAgKzEsMTcyIEBACisjIS9iaW4vYmFzaAorCisjIENvcHlyaWdodDogMjAwOSBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPgorIyAgICAgICAgICAgIDIwMDkgUmFuZHkgRHVubGFwIDxyZHVubGFwQHhlbm90aW1lLm5ldD4KKyMgICAgICAgICAgICAyMDA5IEZyYW5zIFBvcCA8ZWxlbmRpbEBwbGFuZXQubmw+CisjCisjIFRoaXMgc29mdHdhcmUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIGFjY29yZGluZyB0byB0aGUgdGVybXMgb2YKKyMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpLCB2ZXJzaW9uIDIsIG9yIGF0IHlvdXIgb3B0aW9uCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCitwcmludF9zdHJpbmcoKSB7CisJZmlsZT0kMQorCW5hbWU9JDIKKwlpZiBbIC1mICRmaWxlIF07IHRoZW4KKwkJZWNobyAiUzogICRuYW1lPWBjYXQgJGZpbGVgIgorCWZpCit9CisKK2NsYXNzX2RlY29kZSgpIHsKKwlsb2NhbCBjbGFzcz0kMQkJIyB2NDogaW4gaGV4CisKKwljYXNlICRjbGFzcyBpbgorCSIwMCIpIGVjaG8gIj5pZmMgIiA7OworCSIwMSIpIGVjaG8gImF1ZGlvIiA7OworCSIwMiIpIGVjaG8gImNvbW1jIiA7OworCSIwMyIpIGVjaG8gIkhJRCAgIiA7OworCSIwNSIpIGVjaG8gIlBJRCAgIiA7OworCSIwNiIpIGVjaG8gInN0aWxsIiA7OworCSIwNyIpIGVjaG8gInByaW50IiA7OworCSIwOCIpIGVjaG8gInN0b3IuIiA7OworCSIwOSIpIGVjaG8gImh1YiAgIiA7OworCSIwYSIpIGVjaG8gImRhdGEgIiA7OworCSIwYiIpIGVjaG8gInNjYXJkIiA7OworCSIwZCIpIGVjaG8gImMtc2VjIiA7OworCSIwZSIpIGVjaG8gInZpZGVvIiA7OworCSIwZiIpIGVjaG8gInBlcmhjIiA7OworCSJkYyIpIGVjaG8gImRpYWdkIiA7OworCSJlMCIpIGVjaG8gIndsY29uIiA7OworCSJlZiIpIGVjaG8gIm1pc2MgIiA7OworCSJmZSIpIGVjaG8gImFwcC4gIiA7OworCSJmZiIpIGVjaG8gInZlbmQuIiA7OworCSIqIikgIGVjaG8gInVuay4gIiA7OworCWVzYWMKK30KKworcHJpbnRfZW5kcG9pbnQoKSB7CisJbG9jYWwgZXBwYXRoPSQxCisKKwlhZGRyPWBjYXQgJGVwcGF0aC9iRW5kcG9pbnRBZGRyZXNzYAorCWF0dHI9YGNhdCAkZXBwYXRoL2JtQXR0cmlidXRlc2AKKwlkaXI9YGNhdCAkZXBwYXRoL2RpcmVjdGlvbmAKKwllcHR5cGU9YGNhdCAkZXBwYXRoL3R5cGVgCisJbWF4cHNfaGV4PSIweGBjYXQgJGVwcGF0aC93TWF4UGFja2V0U2l6ZWAiCisJIyBFeHRyYWN0IE1heFBTIHNpemUgKGJpdHMgMC0xMCkgYW5kIG11bHRpcGxpY2l0eSB2YWx1ZXMgKGJpdHMgMTEtMTIpCisJbWF4cHM9YHByaW50ZiAiJTRpKiVzXG4iICQoKCRtYXhwc19oZXggJiAweDdmZikpIFwKKwkJCQkkKCgxICsgKCgkbWF4cHNfaGV4ID4+IDExKSAmIDB4MykpKWAKKwlpbnRlcnZhbD1gY2F0ICRlcHBhdGgvaW50ZXJ2YWxgCisKKwlwcmludGYgIkU6ICBBZD0lcyglcykgQXRyPSVzKCVzKSBNeFBTPSVzIEl2bD0lc1xuIiBcCisJCSRhZGRyICRkaXIgJGF0dHIgJGVwdHlwZSAiJG1heHBzIiAkaW50ZXJ2YWwKK30KKworcHJpbnRfaW50ZXJmYWNlKCkgeworCWxvY2FsIGlmcGF0aD0kMQorCisJaWZudW09YGNhdCAkaWZwYXRoL2JJbnRlcmZhY2VOdW1iZXJgCisJYWx0c2V0PWBjYXQgJGlmcGF0aC9iQWx0ZXJuYXRlU2V0dGluZ2AKKwludW1lcHM9YGNhdCAkaWZwYXRoL2JOdW1FbmRwb2ludHNgCisJY2xhc3M9YGNhdCAkaWZwYXRoL2JJbnRlcmZhY2VDbGFzc2AKKwlzdWJjbGFzcz1gY2F0ICRpZnBhdGgvYkludGVyZmFjZVN1YkNsYXNzYAorCXByb3RvY29sPWBjYXQgJGlmcGF0aC9iSW50ZXJmYWNlUHJvdG9jb2xgCisJaWYgWyAtTCAkaWZwYXRoL2RyaXZlciBdOyB0aGVuCQkjIHY0OiBhbGxvdyBmb3Igbm8gZHJpdmVyCisJCWRyaXZlcj1gcmVhZGxpbmsgJGlmcGF0aC9kcml2ZXJgCisJCWRyaXZlcj1gYmFzZW5hbWUgJGRyaXZlcmAKKwllbHNlCisJCWRyaXZlcj0iKG5vbmUpIgorCWZpCisJY2xhc3NuYW1lPWBjbGFzc19kZWNvZGUgJGNsYXNzYAorCXByaW50ZiAiSTogIElmIz0lMmkgQWx0PSUyaSAjRVBzPSUyaSBDbHM9JXMoJXMpIFN1Yj0lcyBQcm90PSVzIERyaXZlcj0lc1xuIiBcCisJCSRpZm51bSAkYWx0c2V0ICRudW1lcHMgJGNsYXNzICIkY2xhc3NuYW1lIiAkc3ViY2xhc3MgXAorCQkkcHJvdG9jb2wgJGRyaXZlcgorCisJZm9yIGVuZHBvaW50IGluICRpZnBhdGgvZXBfPz8KKwlkbworCQlpZiBbIC1MICRlbmRwb2ludCBdOyB0aGVuCSMgdjQ6IHZlcmlmeSBlbmRwb2ludCBleGlzdHMKKwkJCXByaW50X2VuZHBvaW50ICRlbmRwb2ludAorCQlmaQorCWRvbmUKK30KKworcHJpbnRfZGV2aWNlKCkgeworCWxvY2FsIGRldnBhdGg9JDEKKwlsb2NhbCBwYXJlbnQ9JDIKKwlsb2NhbCBsZXZlbD0kMworCWxvY2FsIGNvdW50PSQ0CisKKwlbIC1kICRkZXZwYXRoIF0gfHwgcmV0dXJuCisJY2QgJGRldnBhdGgKKworCWxvY2FsIGJ1c251bT1gY2F0IGJ1c251bWAKKwlsb2NhbCBkZXZudW09YGNhdCBkZXZudW1gCisKKwlpZiBbICRsZXZlbCAtZ3QgMCBdOyB0aGVuCisJCXBvcnQ9JCgoJHtkZXZwYXRoIyMqWy0uXX0gLSAxKSkKKwllbHNlCisJCXBvcnQ9MAorCWZpCisJc3BlZWQ9YGNhdCBzcGVlZGAKKwltYXhjaGlsZD1gY2F0IG1heGNoaWxkYAorCXByaW50ZiAiXG5UOiAgQnVzPSUwMmkgTGV2PSUwMmkgUHJudD0lMDJpIFBvcnQ9JTAyaSBDbnQ9JTAyaSBEZXYjPSUzaSBTcGQ9JS0zcyBNeENoPSUyaVxuIiBcCisJCSRidXNudW0gJGxldmVsICRwYXJlbnQgJHBvcnQgJGNvdW50ICRkZXZudW0gJHNwZWVkICRtYXhjaGlsZAorCisJdmVyPWBjYXQgdmVyc2lvbmAKKwlkZXZjbGFzcz1gY2F0IGJEZXZpY2VDbGFzc2AKKwlkZXZzdWJjbGFzcz1gY2F0IGJEZXZpY2VTdWJDbGFzc2AKKwlkZXZwcm90b2NvbD1gY2F0IGJEZXZpY2VQcm90b2NvbGAKKwltYXhwczA9YGNhdCBiTWF4UGFja2V0U2l6ZTBgCisJbnVtY29uZmlncz1gY2F0IGJOdW1Db25maWd1cmF0aW9uc2AKKwljbGFzc25hbWU9YGNsYXNzX2RlY29kZSAkZGV2Y2xhc3NgCisJcHJpbnRmICJEOiAgVmVyPSU1cyBDbHM9JXMoJXMpIFN1Yj0lcyBQcm90PSVzIE14UFM9JTJpICNDZmdzPSUzaVxuIiBcCisJCSR2ZXIgJGRldmNsYXNzICIkY2xhc3NuYW1lIiAkZGV2c3ViY2xhc3MgJGRldnByb3RvY29sIFwKKwkJJG1heHBzMCAkbnVtY29uZmlncworCisJdmVuZGlkPWBjYXQgaWRWZW5kb3JgCisJcHJvZGlkPWBjYXQgaWRQcm9kdWN0YAorCXJldm1ham9yPWBjYXQgYmNkRGV2aWNlIHwgY3V0IC1jIDEtMmAKKwlyZXZtaW5vcj1gY2F0IGJjZERldmljZSB8IGN1dCAtYyAzLTRgCisJcHJpbnRmICJQOiAgVmVuZG9yPSVzIFByb2RJRD0lcyBSZXY9JXMuJXNcbiIgXAorCQkkdmVuZGlkICRwcm9kaWQgJHJldm1ham9yICRyZXZtaW5vcgorCisJcHJpbnRfc3RyaW5nIG1hbnVmYWN0dXJlciAiTWFudWZhY3R1cmVyIgorCXByaW50X3N0cmluZyBwcm9kdWN0IFByb2R1Y3QKKwlwcmludF9zdHJpbmcgc2VyaWFsIFNlcmlhbE51bWJlcgorCisJbnVtaWZzPWBjYXQgYk51bUludGVyZmFjZXNgCisJY2ZnbnVtPWBjYXQgYkNvbmZpZ3VyYXRpb25WYWx1ZWAKKwlhdHRyPWBjYXQgYm1BdHRyaWJ1dGVzYAorCW1heHBvd2VyPWBjYXQgYk1heFBvd2VyYAorCXByaW50ZiAiQzogICNJZnM9JTJpIENmZyM9JTJpIEF0cj0lcyBNeFB3cj0lc1xuIiBcCisJCSRudW1pZnMgJGNmZ251bSAkYXR0ciAkbWF4cG93ZXIKKworCSMgVGhlcmUncyBub3QgcmVhbGx5IGFueSB1c2VmdWwgaW5mbyBpbiBlbmRwb2ludCAwMAorCSNwcmludF9lbmRwb2ludCAkZGV2cGF0aC9lcF8wMAorCisJZm9yIGludGVyZmFjZSBpbiAkYnVzbnVtLSo6Py4qCisJZG8KKwkJcHJpbnRfaW50ZXJmYWNlICRkZXZwYXRoLyRpbnRlcmZhY2UKKwlkb25lCisKKwlsb2NhbCBkZXZjb3VudD0wCisJZm9yIHN1YmRldiBpbiAkYnVzbnVtLSoKKwlkbworCQllY2hvICIkc3ViZGV2IiB8IGdyZXAgLUVxICJeJGJ1c251bS1bMC05XSsoXC5bMC05XSspKiQiIFwKKwkJCXx8IGNvbnRpbnVlCisKKwkJZGV2Y291bnQ9JCgoJGRldmNvdW50ICsgMSkpCisJCWlmIFsgLWQgJGRldnBhdGgvJHN1YmRldiBdOyB0aGVuCisJCQlwcmludF9kZXZpY2UgJGRldnBhdGgvJHN1YmRldiBcCisJCQkJJGRldm51bSAkKCgkbGV2ZWwgKzEpKSAkZGV2Y291bnQKKwkJZmkKKwlkb25lCit9CisKK2lmIFsgISAtZCAvc3lzL2J1cyBdOyB0aGVuCisJZWNobyAiRXJyb3I6IGRpcmVjdG9yeSAvc3lzL2J1cyBkb2VzIG5vdCBleGlzdDsgaXMgc3lzZnMgbW91bnRlZD8iID4mMgorCWV4aXQgMQorZmkKKworZm9yIGRldmljZSBpbiAvc3lzL2J1cy91c2IvZGV2aWNlcy91c2IqCitkbworCXByaW50X2RldmljZSAkZGV2aWNlIDAgMCAwCitkb25lCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L3VzYi1kZXZpY2VzLjEuaW4gYi91c2J1dGlscy0wLjg2L3VzYi1kZXZpY2VzLjEuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmOWJiYgotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvdXNiLWRldmljZXMuMS5pbgpAQCAtMCwwICsxLDUxIEBACisuVEggdXNiLWRldmljZXMgMSAiMjMgSnVuZSAyMDA5IiAidXNidXRpbHMtVkVSU0lPTiIgIkxpbnV4IFVTQiBVdGlsaXRpZXMiCisuSVggdXNiLWRldmljZXMKKy5TSCBOQU1FCit1c2ItZGV2aWNlcyBcLSBwcmludCBVU0IgZGV2aWNlIGRldGFpbHMKKy5TSCBTWU5PUFNJUworLkIgdXNiLWRldmljZXMKKworLlNIIERFU0NSSVBUSU9OCisuQiB1c2ItZGV2aWNlcworaXMgYSAoYmFzaCkgc2hlbGwgc2NyaXB0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBkZXRhaWxzIG9mIFVTQgorYnVzZXMgaW4gdGhlIHN5c3RlbSBhbmQgdGhlIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZW0uCisKK1RoZSBvdXRwdXQgb2YgdGhlIHNjcmlwdCBpcyBzaW1pbGFyIHRvIHRoZSBcZkl1c2IvZGV2aWNlc1xmUCBmaWxlCithdmFpbGFibGUgZWl0aGVyIHVuZGVyIFxmSS9wcm9jL2J1c1xmUCAoaWYgdXNiZnMgaXMgbW91bnRlZCksIG9yIHVuZGVyCitcZkkvc3lzL2tlcm5lbC9kZWJ1Z1xmUCAoaWYgZGVidWdmcyBpcyBtb3VudGVkIHRoZXJlKS4gVGhlIHNjcmlwdCBpcworcHJpbWFpcmlseSBpbnRlbmRlZCB0byBiZSB1c2VkIGlmIHRoZSBmaWxlIGlzIG5vdCBhdmFpbGFibGUuCisKK0luIGNvbnRyYXN0IHRvIHRoZSBcZkl1c2IvZGV2aWNlc1xmUCBmaWxlLCB0aGlzIHNjcmlwdCBvbmx5IGxpc3RzCitcZklhY3RpdmVcZlAgaW50ZXJmYWNlcyAodGhvc2UgbWFya2VkIHdpdGggYSAiKiIgaW4gdGhlIFxmSXVzYi9kZXZpY2VzXGZQCitmaWxlKSBhbmQgdGhlaXIgZW5kcG9pbnRzLgorCitCZSBhZHZpc2VkIHRoYXQgdGhlcmUgY2FuIGJlIGRpZmZlcmVuY2VzIGluIHRoZSB3YXkgaW5mb3JtYXRpb24gaXMgc29ydGVkLAorYXMgd2VsbCBhcyBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQuCisKKy5TSCBSRVRVUk4gVkFMVUUKK0lmIHN5c2ZzIGlzIG5vdCBtb3VudGVkLCBhIG5vbi16ZXJvIGV4aXQgY29kZSBpcyByZXR1cm5lZC4KKworLlNIIEZJTEVTCisuVFAKKy5CIC9zeXMvYnVzL3VzYi9kZXZpY2VzL3VzYioKK1RoZSBwYXJ0IG9mIHRoZSBzeXNmcyB0cmVlIHRoZSBzY3JpcHQgd2Fsa3MgdGhyb3VnaCB0byBhc3NlbWJsZSB0aGUKK3ByaW50ZWQgaW5mb3JtYXRpb24uCisuVFAKKy5CIC9wcm9jL2J1cy91c2IvZGV2aWNlcworTG9jYXRpb24gd2hlcmUgdGhlIFxmSXVzYi9kZXZpY2VzXGZQIGZpbGUgY2FuIG5vcm1hbGx5IGJlIGZvdW5kIGZvcgorTGludXgga2VybmVscyBiZWZvcmUgMi42LjMxLCBpZiB1c2JmcyBpcyBtb3VudGVkLgorLlRQCisuQiAvc3lzL2tlcm5lbC9kZWJ1Zy91c2IvZGV2aWNlcworTG9jYXRpb24gd2hlcmUgdGhlIFxmSXVzYi9kZXZpY2VzXGZQIGZpbGUgY2FuIG5vcm1hbGx5IGJlIGZvdW5kIGZvcgorTGludXgga2VybmVsIDIuNi4zMSBhbmQgbGF0ZXIsIGlmIGRlYnVnZnMgaXMgbW91bnRlZC4KKworLlNIIFNFRSBBTFNPCisuQlIgbHN1c2IgKDgpLAorLkJSIHVzYnZpZXcgKDgpLgorCisuU0ggQVVUSE9SUworR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KKy5QCitSYW5keSBEdW5sYXAgPHJkdW5sYXBAeGVub3RpbWUubmV0PgorLlAKK0ZyYW5zIFBvcCA8ZWxlbmRpbEBwbGFuZXQubmw+CmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L3VzYi5pZHMgYi91c2J1dGlscy0wLjg2L3VzYi5pZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcyY2QwMgotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvdXNiLmlkcwpAQCAtMCwwICsxLDEzODMwIEBACisjCisjCUxpc3Qgb2YgVVNCIElEJ3MKKyMKKyMJTWFpbnRhaW5lZCBieSBTdGVwaGVuIEouIEdvd2R5IDxzZ293ZHkrdXNiLmlkc0BnbWFpbC5jb20+CisjCUlmIHlvdSBoYXZlIGFueSBuZXcgZW50cmllcywgc2VuZCB0aGVtIHRvIHRoZSBtYWludGFpbmVyLgorIwlTZW5kIGVudHJpZXMgYXMgcGF0Y2hlcyAoZGlmZiAtdSBvbGQgbmV3KS4KKyMJVGhlIGxhdGVzdCB2ZXJzaW9uIGNhbiBiZSBvYnRhaW5lZCBmcm9tCisjCQlodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvdXNiLmlkcworIworIyAkSWQ6IHVzYi5pZHMsdiAxLjM4MyAyMDA5LzA2LzIwIDA2OjQwOjI4IGdvd2R5IEV4cCAkCisjCisKKyMgVmVuZG9ycywgZGV2aWNlcyBhbmQgaW50ZXJmYWNlcy4gUGxlYXNlIGtlZXAgc29ydGVkLgorCisjIFN5bnRheDoKKyMgdmVuZG9yICB2ZW5kb3JfbmFtZQorIwlkZXZpY2UgIGRldmljZV9uYW1lCQkJCTwtLSBzaW5nbGUgdGFiCisjCQlpbnRlcmZhY2UgIGludGVyZmFjZV9uYW1lCQk8LS0gdHdvIHRhYnMKKworMDAwMSAgRnJ5J3MgRWxlY3Ryb25pY3MKKzAwMDIgIEluZ3JhbQorMDAwMyAgQ2x1YiBNYWMKKzAwMDQgIE5lYnJhc2thIEZ1cm5pdHVyZSBNYXJ0CiswMDUzICBQbGFuZXgKKwk1MzAxICBHVy1VUzU0WkdMIDgwMi4xMWJnCiswMDc5ICBEcmFnb25SaXNlIEluYy4KKwkwMDA2ICBHZW5lcmljIFVTQiBKb3lzdGljaworMDEwNSAgVW5rbm93bgorCTE0NWYgIDgwMi4xMWJnCiswMTQ1ICBVbmtub3duCisJMDExMiAgQ2FyZCBSZWFkZXIKKzAyMDQgIENoaXBzYmFuayBNaWNyb2VsZWN0cm9uaWNzIENvLiwgTHRkCisJNjAyNSAgQ0JNMjA4MCBGbGFzaCBkcml2ZSBjb250cm9sbGVyCisJNjAyNiAgQ0JNMTE4MCBGbGFzaCBkcml2ZSBjb250cm9sbGVyCiswMmFkICBIVU1BWCBDby4sIEx0ZC4KKwkxMzhjICBQVlIgTWFzcyBTdG9yYWdlCiswMzg2ICBMVFMKKwkwMDAxICBQU1ggZm9yIFVTQiBDb252ZXJ0ZXIKKzAzZTggIEVuZFBvaW50cywgSW5jLgorCTAwMDQgIFNFNDAxIFdlYmNhbQorCTAwMDggIDEwMSBFdGhlcm5ldCBba2xzaV0KKwkwMDE1ICBBVEFQSSBFbmNsb3N1cmUKKwkyMTIzICBTaVBpeCBTdHlsZUNhbSBEZWx1eGUKKwk4MDA0ICBBb3ggOTkwMDEKKzAzZTkgIFRoZXN5cyBNaWNyb2VsZWN0cm9uaWNzCiswM2VhICBEYXRhIEJyb2FkY2FzdGluZyBDb3JwLgorMDNlYiAgQXRtZWwgQ29ycC4KKwkwOTAyICA0LVBvcnQgSHViCisJMjAwMiAgTWFzcyBTdG9yYWdlIERldmljZQorCTIwMTUgIGF0OTB1c2JrZXkgc2FtcGxlIGZpcm13YXJlIChISUQga2V5Ym9hcmQpCisJMjAxOCAgYXQ5MHVzYmtleSBzYW1wbGUgZmlybXdhcmUgKENEQyBBQ00pCisJMjAxOSAgc3RrNTI1IHNhbXBsZSBmaXJtd2FyZSAobWljcm9waG9uZSkKKwkyMDFjICBhdDkwdXNia2V5IHNhbXBsZSBmaXJtd2FyZSAoSElEIG1vdXNlKQorCTIwMWQgIGF0OTB1c2JrZXkgc2FtcGxlIGZpcm13YXJlIChISUQgZ2VuZXJpYykKKwkyMDIyICBhdDkwdXNia2V5IHNhbXBsZSBmaXJtd2FyZSAoY29tcG9zaXRlIGRldmljZSkKKwkyMTAzICBKVEFHIElDRSBta0lJCisJMjEwNCAgQVZSIElTUCBta0lJCisJMjEwNiAgU1RLNjAwIGRldmVsb3BtZW50IGJvYXJkCisJMjEwNyAgQVZSIERyYWdvbgorCTJmZmIgIGF0OTB1c2IgQVZSIERGVSBib290bG9hZGVyCisJMmZmZCAgYXQ4OWM1MTMwL2M1MTMxIERGVSBib290bG9hZGVyCisJMmZmZiAgYXQ4OWM1MTMyL2M1MXNuZDFjIERGVSBib290bG9hZGVyCisJMzMwMSAgYXQ0MzMwMSA0LVBvcnQgSHViCisJMzMxMiAgNC1Qb3J0IEh1YgorCTU2MDEgIGF0NzZjNTEwIFByaXNtLUlJIDgwMi4xMWIgQWNjZXNzIFBvaW50CisJNTYwMyAgQ2lzY28gNzkyMCBXaUZpIElQIFBob25lCisJNjEyNCAgYXQ5MXNhbSBTQU1CQSBib290bG9hZGVyCisJNzYwMyAgYXQ3NmM1MDNhIEQtTGluayBEV0wtMTIwIDgwMi4xMWIgQWRhcHRlcgorCTc2MDQgIEZhc3RWTkVUCisJNzYwNSAgYXQ3NmM1MDNhIDgwMi4xMWIgQWRhcHRlcgorCTc2MDYgIGF0NzZjNTA1IDgwMi4xMWIgQWRhcHRlcgorCTc2MTEgIGF0NzZjNTEwIHJmbWQyOTQ4IDgwMi4xMWIgQWNjZXNzIFBvaW50CisJNzYxMyAgV0wtMTEzMCBVU0IKKwk3NjE0ICBBVDc2YzUwNWEgV2lyZWxlc3MgQWRhcHRlcgorCWZmMDcgIFR1eCBEcm9pZCBmaXNoIGRvbmdsZQorMDNlYyAgSXdhdHN1IEFtZXJpY2EsIEluYy4KKzAzZWQgIE1pdGVsIENvcnAuCiswM2VlICBNaXRzdW1pCisJMDAwMCAgQ0QtUi9SVyBEcml2ZQorCTI1MDEgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJMjUwMiAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKwk1NjA5ICBKYXBhbmVzZSBLZXlib2FyZAorCTY0MWYgIFdJRi0wNDAyQyBCbHVldG9vdGggQWRhcHRlcgorCTY0MzggIEJsdWV0b290aCBEZXZpY2UKKwk2NDQwICBXTUwtQzUyQVBSIEJsdWV0b290aCBBZGFwdGVyCisJNjkwMSAgU21hcnREaXNrIEZERAorCTY5MDIgIEZsb3BweSBEaXNrIERyaXZlCisJNzUwMCAgQ0QtUi9SVworCWZmZmYgIERvbmdsZSB3aXRoIEJsdWVDb3JlIGluIERGVSBtb2RlCiswM2YwICBIZXdsZXR0LVBhY2thcmQKKwkwMDA0ICBEZXNrSmV0IDg5NWMKKwkwMDExICBPZmZpY2VKZXQgRzU1CisJMDAxMiAgRGVza0pldCAxMTI1QyBQcmludGVyIFBvcnQKKwkwMDI0ICBLVS0wMzE2IEtleWJvYXJkCisJMDEwMSAgU2NhbkpldCA0MTAwYworCTAxMDIgIFBob3RvU21hcnQgUzIwCisJMDEwNCAgRGVza0pldCA4ODBjLzk3MGMKKwkwMTA1ICBTY2FuSmV0IDQyMDBjCisJMDEwNyAgQ0QtV3JpdGVyIFBsdXMKKwkwMTBjICBNdWx0aW1lZGlhIEtleWJvYXJkIEh1YgorCTAxMTEgIEc1NXhpIFByaW50ZXIvU2Nhbm5lci9Db3BpZXIKKwkwMTE3ICBMYXNlckpldCAzMjAwCisJMDExYyAgaG4yMTB3IDgwMi4xMWIgQWRhcHRlcgorCTAxMWQgIEludGVncmF0ZWQgQmx1ZXRvb3RoIE1vZHVsZQorCTAxMjEgIEhQNDlnKyBDYWxjdWxhdG9yCisJMDEyMiAgSElEIEludGVybmV0IEtleWJvYXJkCisJMDIwMSAgU2NhbkpldCA2MjAwYworCTAyMDIgIFBob3RvU21hcnQgUzIwCisJMDIwNCAgRGVza0pldCA4MTVjCisJMDIwNSAgU2NhbkpldCAzMzAwYworCTAyMDcgIENELVdyaXRlciBQbHVzIDgyMDBlCisJMDIwYyAgTXVsdGltZWRpYSBLZXlib2FyZAorCTAyMTEgIE9mZmljZUpldCBHODUKKwkwMjEyICBEZXNrSmV0IDEyMjBDCisJMDIxNyAgTGFzZXJKZXQgMjIwMAorCTAyMTggIEFQT0xMTyBQMjUwMC8yNjAwCisJMDMwNCAgRGVza0pldCA4MTBjLzgxMmMKKwkwMzA1ICBTY2FuSmV0IDQzMDBjCisJMDMwNyAgQ0QtV3JpdGVyKyBDRC00ZQorCTAzMTEgIE9mZmljZUpldCBHODV4aQorCTAzMTIgIENvbG9yIElua2pldCBDUDE3MDAKKwkwMzE0ICBkZXNpZ25qZXQgMzAvMTMwIHNlcmllcworCTAzMTcgIExhc2VySmV0IDEyMDAKKwkwNDAxICBTY2FuSmV0IDUyMDBjCisJMDQwNCAgRGVza0pldCA4MzBjLzgzMmMKKwkwNDA1ICBTY2FuSmV0IDM0MDBjc2UKKwkwNDExICBPZmZpY2VKZXQgRzk1CisJMDQxMiAgUHJpbnRpbmcgU3VwcG9ydAorCTA0MTcgIExhc2VySmV0IDEyMDAgc2VyaWVzCisJMDQyMyAgSFMtQ09NQk8KKwkwNTA0ICBEZXNrSmV0IDg4NWMKKwkwNTA1ICBTY2FuSmV0IDIxMDBjCisJMDUwNyAgRFZEK1JXCisJMDUwYyAgNTIxOSBXaXJlbGVzcyBLZXlib2FyZAorCTA1MTEgIE9mZmljZUpldCBLNjAKKwkwNTEyICBEZWNrSmV0IDQ1MAorCTA1MTcgIExhc2VySmV0IDEwMDAKKwkwNTFkICBpbnRlZ3JhdGVkIG1vZHVsZSB3aXRoIEJsdWV0b290aCB3aXJlbGVzcyB0ZWNobm9sb2d5LgorCTA2MDEgIFNjYW5KZXQgNjMwMGMKKwkwNjA0ICBEZXNrSmV0IDg0MGMKKwkwNjA1ICBTY2FuSmV0IDIyMDBjCisJMDYxMSAgT2ZmaWNlSmV0IEs2MHhpCisJMDYxMiAgYnVzaW5lc3MgaW5ramV0IDMwMDAKKwkwNjI0ICBCbHVldG9vdGggRG9uZ2xlCisJMDcwMSAgU2NhbkpldCA1MzAwYy81MzcwYworCTA3MDQgIERlc2tKZXQgODI1YworCTA3MDUgIFNjYW5KZXQgNDQwMGMKKwkwNzExICBPZmZpY2VKZXQgSzgwCisJMDcxMiAgRGVza0pldCAxMTgwYworCTA3MTQgIFByaW50aW5nIFN1cHBvcnQKKwkwODAxICBTY2FuSmV0IDc0MDBjCisJMDgwNCAgRGVza0pldCA4MTZjCisJMDgwNSAgSFA0NDcwQworCTA4MTEgIE9mZmljZUpldCBLODB4aQorCTA4MTcgIExhc2VySmV0IDMzMDAKKwkwOTAxICBTY2FuSmV0IDIzMDBjCisJMDkwNCAgRGVza0pldCA4NDVjCisJMDkxMiAgUHJpbnRpbmcgU3VwcG9ydAorCTA5MTcgIExhc2VySmV0IDMzMzAKKwkwOTI0ICBNb2R1bGFyIFNtYXJ0Y2FyZCBLZXlib2FyZAorCTBhMDEgIFNjYW5KZXQgMjQwMGMKKwkwYTE3ICBjb2xvciBMYXNlckpldCAzNzAwCisJMGIwMSAgU2NhbkpldCA4MngwQworCTBiMGMgIFdpcmVsZXNzIEtleWJvYXJkIGFuZCBPcHRpY2FsIE1vdXNlIHJlY2VpdmVyCisJMGIxNyAgTGFzZXJKZXQgMjMwMGQKKwkwYzE3ICBMYXNlckpldCAxMDEwCisJMGMyNCAgQmx1ZXRvb3RoIERvbmdsZQorCTBkMTIgIE9mZmljZUpldCA5MTAwIHNlcmllcworCTBkMTcgIExhc2VySmV0IDEwMTIKKwkwZTE3ICBMYXNlckpldCAxMDE1CisJMGYwYyAgV2lyZWxlc3MgS2V5Ym9hcmQgYW5kIE9wdGljYWwgTW91c2UgcmVjZWl2ZXIKKwkwZjExICBPZmZpY2VKZXQgVjQwCisJMGYxMiAgUHJpbnRpbmcgU3VwcG9ydAorCTBmMTcgIExhc2VySmV0IDExNTAKKwkxMDAxICBQaG90byBTY2FubmVyIDEwMDAKKwkxMDAyICBQaG90b1NtYXJ0IDE0MCBzZXJpZXMKKwkxMDA0ICBEZXNrSmV0IDk3MGMvOTcwY3NlCisJMTAwNSAgU2NhbkpldCA1NDAwYworCTEwMTEgIE9mZmljZUpldCBWNDB4aQorCTEwMTYgIEpvcm5hZGEgNTQ4IC8gaVBBUSBIVzY1MTUgUG9ja2V0IFBDCisJMTAxNyAgTGFzZXJKZXQgMTMwMAorCTEwMjQgIFNtYXJ0IENhcmQgS2V5Ym9hcmQKKwkxMTAyICBQaG90b1NtYXJ0IDI0MCBzZXJpZXMKKwkxMTA0ICBEZXNrSmV0IDk1OWMKKwkxMTA1ICBTY2FuSmV0IDU0NzBjCisJMTExMSAgT2ZmaWNlSmV0IHY2MAorCTExMTYgIEpvcm5hZGEgNTY4IFBvY2tldCBQQworCTExMTcgIExhc2VySmV0IDEzMDBuCisJMTE1MSAgUFNDLTc1MHhpIFByaW50ZXIvU2Nhbm5lci9Db3BpZXIKKwkxMjAyICBQaG90b1NtYXJ0IDMyMCBzZXJpZXMKKwkxMjA0ICBEZXNrSmV0IDkzMGMKKwkxMjA1ICBTY2FuSmV0IDQ1MDBDLzU1NTBDCisJMTIxMSAgT2ZmaWNlSmV0IHY2MHhpCisJMTIxNyAgTGFzZXJKZXQgMjMwMEwKKwkxMzAyICBQaG90b1NtYXJ0IDM3MCBzZXJpZXMKKwkxMzA1ICBTY2FuSmV0IDQ1NzBjCisJMTMxMSAgT2ZmaWNlSmV0IFYzMAorCTEzMTIgIERlc2tKZXQgNDYwCisJMTMxNyAgTGFzZXJKZXQgMTAwNQorCTE0MDUgIFNjYW5KZXQgMzY3MAorCTE0MTEgIFBTQyA3NTAKKwkxNDI0ICBmMjEwNSBNb25pdG9yIEh1YgorCTE1MDIgIFBob3RvU21hcnQgNDIwIHNlcmllcworCTE1MDQgIERlc2tKZXQgOTIwYworCTE1MTEgIFBTQyA3NTB4aQorCTE1MTIgIFByaW50aW5nIFN1cHBvcnQKKwkxNTE3ICBjb2xvciBMYXNlckpldCAzNTAwCisJMTUyNCAgU21hcnQgQ2FyZCBLZXlib2FyZCAtIEtSCisJMTYwMiAgUGhvdG9TbWFydCAzMzAgc2VyaWVzCisJMTYwNCAgRGVza0pldCA5NDBjCisJMTYwNSAgU2NhbkpldCA1NTMwQyBQaG90b1NtYXJ0CisJMTYxMSAgcHNjIDc4MAorCTE2MTcgIExhc2VySmV0IDMwMTUKKwkxNjFkICBXaXJlbGVzcyBSZWNoYXJnZWFibGUgT3B0aWNhbCBNb3VzZSAoSElEKQorCTE2MjQgIFNtYXJ0IENhcmQgS2V5Ym9hcmQgLSBKUAorCTE3MDIgIFBob3RvU21hcnQgMzgwIHNlcmllcworCTE3MDQgIERlc2tKZXQgOTQ4QworCTE3MDUgIFNjYW5KZXQgNTU5MAorCTE3MTEgIHBzYyA3ODB4aQorCTE3MTIgIFByaW50aW5nIFN1cHBvcnQKKwkxNzE3ICBMYXNlckpldCAzMDIwCisJMTcxZCAgV2lyZWxlc3MgKEJsdWV0b290aCArIFdMQU4pIEludGVyZmFjZSBbSW50ZWdyYXRlZCBNb2R1bGVdCisJMTgwMSAgSW5ramV0IFAtMjAwMFUKKwkxODAyICBQaG90b1NtYXJ0IDQ3MCBzZXJpZXMKKwkxODA0ICBEZXNrSmV0IDkxNkMKKwkxODA1ICBTY2FuSmV0IDc2NTAKKwkxODExICBQU0MgNzIwCisJMTgxNyAgTGFzZXJKZXQgMzAzMAorCTE4MWQgIGludGVncmF0ZWQgbW9kdWxlIHdpdGggQmx1ZXRvb3RoIDIuMCB3aXJlbGVzcyB0ZWNobm9sb2d5LgorCTE5MDIgIFBob3RvU21hcnQgQTQzMCBzZXJpZXMKKwkxOTA0ICBEZXNrSmV0IDM4MjAKKwkxOTExICBPZmZpY2VKZXQgVjQ1CisJMTkxNyAgTGFzZXJKZXQgMzM4MAorCTFhMDIgIFBob3RvU21hcnQgQTUxMCBzZXJpZXMKKwkxYTExICBPZmZpY2VKZXQgNTEwMCBzZXJpZXMKKwkxYTE3ICBjb2xvciBMYXNlckpldCA0NjUwCisJMWIwMiAgUGhvdG9TbWFydCBBNjEwIHNlcmllcworCTFiMDQgIERlc2tKZXQgMzgxMAorCTFiMDUgIFNjYW5KZXQgNDg1MEMvNDg5MEMKKwkxYzAyICBQaG90b1NtYXJ0IEE3MTAgc2VyaWVzCisJMWMxNyAgQ29sb3IgTGFzZXJKZXQgMjU1MGwKKwkxZDAyICBQaG90b1NtYXJ0IEEzMTAgc2VyaWVzCisJMWQxNyAgTGFzZXJKZXQgMTMyMAorCTFlMDIgIFBob3RvU21hcnQgQTMyMCBQcmludGVyIHNlcmllcworCTFlMTEgIFBTQy05NTAKKwkxZTE3ICBMYXNlckpldCAxMTYwIHNlcmllcworCTFmMDIgIFBob3RvU21hcnQgQTQ0MCBQcmludGVyIHNlcmllcworCTFmMTEgIFBTQyA5MjAKKwkxZjEyICBPZmZpY2VKZXQgUHJvIEs1MzAwCisJMWYxNyAgY29sb3IgTGFzZXJKZXQgNTU1MAorCTIwMDEgIEZsb3BweQorCTIwMDIgIEh1YgorCTIwMDQgIERlc2tKZXQgNjQwYworCTIwMDUgIFNjYW5KZXQgMzU3MGMKKwkyMDEyICBPZmZpY2VKZXQgUHJvIEs1NDAwCisJMjEwMiAgUGhvdG9TbWFydCA3MzQ1CisJMjEwNCAgRGVza0pldCA2MzBjCisJMjExMiAgT2ZmaWNlSmV0IFBybyBMNzUwMAorCTIyMDIgIFBob3RvU21hcnQgNzYwMCBzZXJpZXMKKwkyMjA1ICBTY2FuSmV0IDM1MDBjCisJMjIxMiAgT2ZmaWNlSmV0IFBybyBMNzYwMAorCTIyMTcgIGNvbG9yIExhc2VySmV0IDk1MDAgTUZQCisJMjMwMiAgUGhvdG9TbWFydCA3NjAwIHNlcmllcworCTIzMDQgIERlc2tKZXQgNjU2YworCTIzMDUgIFNjYW5KZXQgMzk3MGMKKwkyMzExICBPZmZpY2VKZXQgZCBzZXJpZXMKKwkyMzEyICBPZmZpY2VKZXQgUHJvIEw3NzAwCisJMjMxNyAgTGFzZXJKZXQgNDM1MAorCTI0MDIgIFBob3RvU21hcnQgNzcwMCBzZXJpZXMKKwkyNDA1ICBTY2FuSmV0IDQwNzAgUGhvdG9TbWFydAorCTI0MTcgIExhc2VySmV0IDQyNTAKKwkyNDI0ICBMUDE5NjUgMTkiIE1vbml0b3IgSHViCisJMjUwMiAgUGhvdG9TbWFydCA3NzAwIHNlcmllcworCTI1MDUgIFNjYW5KZXQgMzc3MAorCTI1MTIgIE9mZmljZUpldCBQcm8gTDczMDAKKwkyNTE3ICBMYXNlckpldCAyNDEwCisJMjUyNCAgTFAzMDY1IDMwIiBNb25pdG9yIEh1YgorCTI2MDIgIFBob3RvU21hcnQgQTUyMCBzZXJpZXMKKwkyNjA1ICBTY2FuSmV0IDM4MDBjCisJMjYxMSAgT2ZmaWNlSmV0IDcxMDAgc2VyaWVzCisJMjYxNyAgQ29sb3IgTGFzZXJKZXQgMjgyMCBzZXJpZXMKKwkyNjI0ICBQb2xlIERpc3BsYXkgKEhQNTIyIDIgeCAyMCBMaW5lIERpc3BsYXkpCisJMjcwMiAgUGhvdG9TbWFydCBBNjIwIHNlcmllcworCTI3MDQgIERlc2tKZXQgOTE1CisJMjcxNyAgQ29sb3IgTGFzZXJKZXQgMjgzMAorCTI4MTEgIFBTQy0yMTAwCisJMjgxNyAgQ29sb3IgTGFzZXJKZXQgMjg0MAorCTI5MDIgIFBob3RvU21hcnQgQTgyMCBzZXJpZXMKKwkyOTExICBQU0MgMjIwMAorCTI5MTcgIExhc2VySmV0IDI0MjAKKwkyYTExICBQU0MgMjE1MCBzZXJpZXMKKwkyYTE3ICBMYXNlckpldCAyNDMwCisJMmIxMSAgUFNDIDIxNzAgc2VyaWVzCisJMmIxNyAgTGFzZXJKZXQgMTAyMAorCTJjMTIgIE9mZmljZWpldCBKNDY4MAorCTJjMTcgIFByaW50aW5nIFN1cHBvcnQKKwkyYzI0ICBMb2dpdGVjaCBNLVVBTC05NiBNb3VzZQorCTJkMTEgIE9mZmljZUpldCA2MTEwCisJMmQxNyAgUHJpbnRpbmcgU3VwcG9ydAorCTJlMTEgIFBTQyAxMDAwCisJMmUxNyAgUHJpbnRpbmcgU3VwcG9ydAorCTJlMjQgIExQMjI3NXcgTW9uaXRvciBIdWIKKwkyZjExICBQU0MgMTIwMAorCTJmMTcgIEVXUyAyNjA1ZG4KKwkzMDAyICBQaG90b1NtYXJ0IFAxMDAwCisJMzAwNCAgRGVza0pldCA5ODBjCisJMzAwNSAgU2NhbkpldCA0NjcwdgorCTMwMTEgIFBTQyAxMTAwIHNlcmllcworCTMwMTcgIFByaW50aW5nIFN1cHBvcnQKKwkzMTAyICBQaG90b1NtYXJ0IFAxMTAwIFByaW50ZXIgdy8gQ2FyZCBSZWFkZXIKKwkzMTA0ICBEZXNrSmV0IDk2MGMKKwkzMTExICBPZmZpY2VKZXQgNDEwMCBzZXJpZXMKKwkzMTE3ICBFV1MgMjYwNWR0bgorCTMyMDIgIFBob3RvU21hcnQgMTIxNQorCTMyMTEgIE9mZmljZUpldCA0MTA1IHNlcmllcworCTMyMTcgIExhc2VySmV0IDMwNTAKKwkzMzAyICBQaG90b1NtYXJ0IDEyMTgKKwkzMzA0ICBEZXNrSmV0IDk5MGMKKwkzMzE3ICBMYXNlckpldCAzMDUyCisJMzQwMiAgUGhvdG9TbWFydCAxMTE1CisJMzQwNCAgRGVza0pldCA2MTIyCisJMzQxNyAgTGFzZXJKZXQgMzA1NQorCTM1MDIgIFBob3RvU21hcnQgMjMwCisJMzUwNCAgRGVza0pldCA2MTI3YworCTM1MTEgIFBTQyAyMzAwCisJMzUxNyAgTGFzZXJKZXQgMzM5MAorCTM2MDIgIFBob3RvU21hcnQgMTMxNQorCTM2MTEgIFBTQyAyNDEwIFBob3RvU21hcnQKKwkzNjE3ICBFV1MgMjYwNQorCTM3MTEgIFBTQyAyNTAwCisJMzcxNyAgRVdTIFVQRAorCTM4MDIgIFBob3RvU21hcnQgMTAwCisJMzgxNyAgTGFzZXJKZXQgUDIwMTUgc2VyaWVzCisJMzkwMiAgUGhvdG9TbWFydCAxMzAKKwkzYTAyICBQaG90b1NtYXJ0IDcxNTAKKwkzYTExICBPZmZpY2VKZXQgNTUwMCBzZXJpZXMKKwkzYTE3ICBQcmludGluZyBTdXBwb3J0CisJM2IwMiAgUGhvdG9TbWFydCA3MTUwfgorCTNiMTEgIFBTQyAxMzAwIHNlcmllcworCTNiMTcgIExhc2VySmV0IE0xMDA1IE1GUAorCTNjMDIgIFBob3RvU21hcnQgNzM1MAorCTNjMTEgIFBTQyAxMzU4CisJM2MxNyAgRVdTIFVQRAorCTNkMDIgIFBob3RvU21hcnQgNzM1MH4KKwkzZDExICBPZmZpY2VKZXQgNDIxNQorCTNlMDIgIFBob3RvU21hcnQgNzU1MAorCTNlMTcgIExhc2VySmV0IFAxMDA2CisJM2YwMiAgUGhvdG9TbWFydCA3NTUwfgorCTNmMTEgIFBTQy0xMzE1L1BTQy0xMzE3CisJNDAwMiAgUGhvdG9TbWFydCA3MjAgLyBQaG90b1NtYXJ0IDkzNSAoc3RvcmFnZSkKKwk0MDA0ICBjcDExNjAKKwk0MTAyICBQaG90b1NtYXJ0IDYxOAorCTQxMDUgIFNjYW5KZXQgNDM3MAorCTQxMTEgIE9mZmljZUpldCA3MjAwIHNlcmllcworCTQxMTcgIFByaW50aW5nIFN1cHBvcnQKKwk0MjAyICBQaG90b1NtYXJ0IDgxMgorCTQyMDUgIFNjYW5KZXQgRzMwMTAKKwk0MjExICBPZmZpY2VKZXQgNzMwMCBzZXJpZXMKKwk0MjE3ICBFV1MgQ00xMDE1CisJNDMwMiAgUGhvdG9TbWFydCA4NTAgKHB0cCkKKwk0MzExICBPZmZpY2VKZXQgNzQwMCBzZXJpZXMKKwk0MzE3ICBDb2xvciBMYXNlckpldCBDTTEwMTcKKwk0NDAyICBQaG90b1NtYXJ0IDkzNSAocHRwKQorCTQ0MTcgIEVXUyBVUEQKKwk0NTAyICBQaG90b1NtYXJ0IDk0NSAoUFRQIG1vZGUpCisJNDUwNSAgU2NhbkpldCBHNDAxMAorCTQ1MTEgIFBob3RvU21hcnQgMjYwMAorCTQ1MTcgIEVXUyBVUEQKKwk0NjA1ICBTY2FuSmV0IEc0MDUwCisJNDYxMSAgUGhvdG9TbWFydCAyNzAwCisJNDgxMSAgUFNDIDE2MDAKKwk0OTExICBQU0MgMjM1MAorCTRiMTEgIE9mZmljZUpldCA2MjAwCisJNGMxMSAgUFNDIDE1MDAgc2VyaWVzCisJNGMxNyAgRVdTIFVQRAorCTRkMTEgIFBTQyAxNDAwCisJNGQxNyAgRVdTIFVQRAorCTRlMTEgIFBob3RvU21hcnQgMjU3MCBzZXJpZXMKKwk0ZjExICBPZmZpY2VKZXQgNTYwMCAoVVNCSFVCKQorCTUwMDQgIERlc2tKZXQgOTk1YworCTUwMTEgIFBob3RvU21hcnQgMzEwMCBzZXJpZXMKKwk1MDE3ICBFV1MgVVBECisJNTExMSAgUGhvdG9TbWFydCAzMjAwIHNlcmllcworCTUyMTEgIFBob3RvU21hcnQgMzMwMCBzZXJpZXMKKwk1MzExICBPZmZpY2VKZXQgNjMwMAorCTU0MTEgIE9mZmljZUpldCA0MzAwCisJNTUxMSAgRGVza0pldCBGMzAwIHNlcmllcworCTU2MTEgIFBob3RvU21hcnQgQzMxODAKKwk1NjE3ICBMYXNlckpldCBNMTEyMCBNRlAKKwk1NzExICBQaG90b1NtYXJ0IEM0MTAwIHNlcmllcworCTU3MTcgIExhc2VySmV0IE0xMTIwbiBNRlAKKwk1ODExICBQaG90b1NtYXJ0IEM1MTAwIHNlcmllcworCTU4MTcgIExhc2VySmV0IE0xMzE5ZiBNRlAKKwk1OTExICBQaG90b1NtYXJ0IEM2MTgwCisJNWExMSAgUGhvdG9TbWFydCBDNzEwMCBzZXJpZXMKKwk1YjExICBPZmZpY2VKZXQgSjIxMDAgc2VyaWVzCisJNWMxMSAgUGhvdG9TbWFydCBDNDIwMCBQcmludGVyIHNlcmllcworCTVkMTEgIFBob3RvU21hcnQgQzUyMDAgc2VyaWVzCisJNWUxMSAgUGhvdG9TbWFydCBENzQwMCBzZXJpZXMKKwk2MDA0ICBEZXNrSmV0IDU1NTAKKwk2MTAyICBIZXdsZXR0IFBhY2thcmQgRGlnaXRhbCBDYW1lcmEKKwk2MTA0ICBEZXNrSmV0IDU2NTBjCisJNjExNyAgY29sb3IgTGFzZXJKZXQgMzU1MAorCTYyMDIgIFBob3RvU21hcnQgMjE1CisJNjIwNCAgRGVza0pldCA1MTUwYworCTYyMTcgIENvbG9yIExhc2VySmV0IDQ3MDAKKwk2MzAyICBQaG90b1NtYXJ0IDMxOC82MTIKKwk2MzE3ICBDb2xvciBMYXNlckpldCA0NzMwbWZwCisJNjQwMiAgUGhvdG9TbWFydCA3MTUgKHB0cCkKKwk2NDExICBQaG90b1NtYXJ0IEM4MTAwIHNlcmllcworCTY0MTcgIExhc2VySmV0IDUyMDAKKwk2NTAyICBQaG90b1NtYXJ0IDEyMCAocHRwKQorCTY1MTEgIFBob3RvU21hcnQgQzcyMDAgc2VyaWVzCisJNjYwMiAgUGhvdG9TbWFydCAzMjAKKwk2NjExICBQaG90b1NtYXJ0IEM0MzgwIHNlcmllcworCTY2MTcgIExhc2VySmV0IDUyMDBMCisJNjcwMiAgUGhvdG9TbWFydCA3MjAgKHB0cCkKKwk2NzE3ICBDb2xvciBMYXNlckpldCAzMDAwCisJNjgwMiAgUGhvdG9TbWFydCA2MjAgKHB0cCkKKwk2ODExICBQaG90b1NtYXJ0IEQ1MzAwIHNlcmllcworCTY4MTcgIENvbG9yIExhc2VySmV0IDM4MDAKKwk2OTExICBQaG90b1NtYXJ0IEQ3MjAwIHNlcmllcworCTY5MTcgIENvbG9yIExhc2VySmV0IDM2MDAKKwk2YTAyICBQaG90b1NtYXJ0IDczNSAocHRwKQorCTZhMTEgIFBob3RvU21hcnQgQzYyMDAgc2VyaWVzCisJNmExNyAgTGFzZXJKZXQgNDI0MAorCTZiMDIgIFBob3RvU21hcnQgUjcwNyAoUFRQIG1vZGUpCisJNmMxNyAgQ29sb3IgTGFzZXJKZXQgNDYxMAorCTZmMTcgIENvbG9yIExhc2VySmV0IENQNjAxNSBzZXJpZXMKKwk3MDA0ICBEZXNrSmV0IDMzMjBjCisJNzEwMiAgUGhvdG9TbWFydCA2MzUgKFBUUCBtb2RlKQorCTcxMDQgIERlc2tKZXQgMzQyMGMKKwk3MTE3ICBDTTgwNjAgQ29sb3IgTUZQIHdpdGggRWRnZWxpbmUgVGVjaG5vbG9neQorCTcyMDIgIFBob3RvU21hcnQgNDN4IChwdHApCisJNzIwNCAgRGVza0pldCAzNnh4CisJNzIxNyAgTGFzZXJKZXQgTTUwMzUgTUZQCisJNzMwMiAgUGhvdG9TbWFydCBNMzA3IChQVFAgbW9kZSkKKwk3MzA0ICBEZXNrSmV0IDM1eHgKKwk3MzE3ICBMYXNlckpldCBQMzAwNQorCTc0MDQgIFByaW50aW5nIFN1cHBvcnQKKwk3NDE3ICBMYXNlckpldCBNNDM0NSBNRlAKKwk3NTA0ICBQcmludGluZyBTdXBwb3J0CisJNzUxNyAgTGFzZXJKZXQgTTMwMzUgTUZQCisJNzYwNCAgRGVza0pldCAzOTQwCisJNzYxNyAgTGFzZXJKZXQgUDMwMDQKKwk3NzAyICBQaG90b1NtYXJ0IFI4MTcgKFBUUCBtb2RlKQorCTc3MDQgIERlc2tKZXQgRDQxMDAKKwk3NzE3ICBDTTgwNTAgQ29sb3IgTUZQIHdpdGggRWRnZWxpbmUgVGVjaG5vbG9neQorCTc4MDQgIERlc2tKZXQgRDEzNjAKKwk3ODE3ICBDb2xvciBMYXNlckpldCBDUDM1MDUKKwk3OTE3ICBMYXNlckpldCBNNTAyNSBNRlAKKwk3YTAyICBQaG90b1NtYXJ0IE00MTUgKFBUUCBtb2RlKQorCTdhMTcgIExhc2VySmV0IE0zMDI3IE1GUAorCTdiMDIgIFBob3RvU21hcnQgTTIzIChQVFAgbW9kZSkKKwk3YjE3ICBDb2xvciBMYXNlckpldCBDUDQwMDUKKwk3YzE3ICBDb2xvciBMYXNlckpldCBDTTYwNDAgc2VyaWVzCisJN2QwNCAgRGVza0pldCBGMjEwMCBQcmludGVyIHNlcmllcworCTdkMTcgIENvbG9yIExhc2VySmV0IENNNDczMCBNRlAKKwk3ZTA0ICBEZXNrSmV0IEY0MTAwIFByaW50ZXIgc2VyaWVzCisJODAxNyAgTGFzZXJKZXQgUDQ1MTUKKwk4MTA0ICBQcmludGluZyBTdXBwb3J0CisJODExNyAgTGFzZXJKZXQgUDQwMTUKKwk4MTFjICBFdGhlcm5ldCBITjIxMEUKKwk4MjA0ICBQcmludGluZyBTdXBwb3J0CisJODIxNyAgTGFzZXJKZXQgUDQwMTQKKwk4MzE3ICBMYXNlckpldCBNOTA1MCBNRlAKKwk4NDA0ICBEZXNrSmV0IDY4MDAgc2VyaWVzCisJODQxNyAgTGFzZXJKZXQgTTkwNDAgTUZQCisJODUwNCAgRGVza0pldCA2NjAwIHNlcmllcworCTg2MDQgIERlc2tKZXQgNTQ0MAorCTg3MDQgIERlc2tKZXQgNTk0MAorCTg4MDQgIERlc2tKZXQgNjk4MCBzZXJpZXMKKwk4OTA0ICBEZXNrSmV0IDY5NDAgc2VyaWVzCisJOTAwMiAgUGhvdG9TbWFydCBNNDM3CisJOTEwMiAgUGhvdG9TbWFydCBNNTM3CisJOTMwMiAgUGhvdG9TbWFydCBSOTMwIHNlcmllcworCTk0MDIgIFBob3RvU21hcnQgUjgzNworCTk1MDIgIFBob3RvU21hcnQgUjg0MCBzZXJpZXMKKwk5NjAyICBQaG90b1NtYXJ0IE03MzAgc2VyaWVzCisJOTcwMiAgUGhvdG9TbWFydCBSNzQwIHNlcmllcworCTk4MDIgIFBob3RvU21hcnQgTXo2MCBzZXJpZXMKKwk5OTAyICBQaG90b1NtYXJ0IE02MzAgc2VyaWVzCisJOWEwMiAgUGhvdG9TbWFydCBFMzMwIHNlcmllcworCTliMDIgIFBob3RvU21hcnQgTTU0MCBzZXJpZXMKKwk5YzAyICBQaG90b1NtYXJ0IE00NDAgc2VyaWVzCisJYTAwNCAgRGVza0pldCA1ODUwYworCWIwMDIgIFBob3RvU21hcnQgNzIwMCBzZXJpZXMKKwliMTAyICBQaG90b1NtYXJ0IDcyMDAgc2VyaWVzCisJYjIwMiAgUGhvdG9TbWFydCA3NjAwIHNlcmllcworCWIzMDIgIFBob3RvU21hcnQgNzYwMCBzZXJpZXMKKwliNDAyICBQaG90b1NtYXJ0IDc3MDAgc2VyaWVzCisJYjUwMiAgUGhvdG9TbWFydCA3NzAwIHNlcmllcworCWI2MDIgIFBob3RvU21hcnQgNzkwMCBzZXJpZXMKKwliNzAyICBQaG90b1NtYXJ0IDc5MDAgc2VyaWVzCisJYjgwMiAgUGhvdG9TbWFydCA3NDAwIHNlcmllcworCWI5MDIgIFBob3RvU21hcnQgNzgwMCBzZXJpZXMKKwliYTAyICBQaG90b1NtYXJ0IDgxMDAgc2VyaWVzCisJYmIwMiAgUGhvdG9TbWFydCA4NDAwIHNlcmllcworCWJjMDIgIFBob3RvU21hcnQgODcwMCBzZXJpZXMKKwliZDAyICBQaG90b1NtYXJ0IFBybyBCOTEwMCBzZXJpZXMKKwliZWY0ICBORUMgUGljdHk3NjAKKwljMDAyICBQaG90b1NtYXJ0IDc4MDAgc2VyaWVzCisJYzEwMiAgUGhvdG9TbWFydCA4MDAwIHNlcmllcworCWMyMDIgIFBob3RvU21hcnQgODIwMCBzZXJpZXMKKwljMzAyICBEZXNrSmV0IEQyMzAwCisJYzQwMiAgUGhvdG9TbWFydCBENTEwMCBzZXJpZXMKKwljNTAyICBQaG90b1NtYXJ0IEQ2MTAwIHNlcmllcworCWM2MDIgIFBob3RvU21hcnQgRDcxMDAgc2VyaWVzCisJYzcwMiAgUGhvdG9TbWFydCBENzMwMCBzZXJpZXMKKwljODAyICBQaG90b1NtYXJ0IEQ1MDYwIFByaW50ZXIKKwlkMTA0ICBCbHVldG9vdGggRG9uZ2xlCisJZWZiZSAgTkVDIFBpY3R5OTAwCisJZjBiZSAgTkVDIFBpY3R5OTIwCisJZjFiZSAgTkVDIFBpY3R5ODAwCiswM2YxICBHZW5vYSBUZWNobm9sb2d5CiswM2YyICBPYWsgVGVjaG5vbG9neSwgSW5jLgorMDNmMyAgQWRhcHRlYywgSW5jLgorCTAwMjAgIEFXTi04MDIwIFdMQU4KKwkwMDgwICBBVkMtMTEwMCBBdWRpbyBDYXB0dXJlCisJMDA4MyAgQVZDLTIyMDAgRGV2aWNlCisJMDA4NyAgQVZDLTIyMTAgTG9hZGVyCisJMDA4OCAgQVZDLTIyMTAgRGV2aWNlCisJMDA4YiAgQVZDLTIzMTAgTG9hZGVyCisJMDA4YyAgQVZDLTIzMTAgRGV2aWNlCisJMDA5NCAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKwkwMDliICBBVkMtMTQxMCBHYW1lQnJpZGdlIFRWIE5UU0MKKwkyMDAwICBVU0JYY2hhbmdlCisJMjAwMSAgVVNCWGNoYW5nZSBBZGFwdGVyCisJMjAwMiAgVVNCMi1YY2hhbmdlCisJMjAwMyAgVVNCMi1YY2hhbmdlIEFkYXB0ZXIKKwlhZGNjICBDb21wb3NpdGUgRGV2aWNlIFN1cHBvcnQKKzAzZjQgIERpZWJvbGQsIEluYy4KKzAzZjUgIFNpZW1lbnMgRWxlY3Ryb21lY2hhbmljYWwKKzAzZjggIEVwc29uIEltYWdpbmcgVGVjaG5vbG9neSBDZW50ZXIKKzAzZjkgIEtleVRyb25pYyBDb3JwLgorCTAxMDAgIEtleWJvYXJkCisJMDEwMSAgS2V5Ym9hcmQKKwkwMTAyICBLZXlib2FyZCBNb3VzZQorMDNmYiAgT1BUaSwgSW5jLgorMDNmYyAgRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zCiswM2ZkICBYaWxpbngsIEluYy4KKzAzZmUgIEZhcmFsbG9uIENvbXVuaWNhdGlvbnMKKzA0MDAgIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgQ29ycC4KKwkwODA3ICBCbHVldG9vdGggRG9uZ2xlCisJMDgwYSAgQmx1ZXRvb3RoIERldmljZQorCTEwMDAgIE11c3RlayBCZWFyUGF3IDEyMDAgU2Nhbm5lcgorCTEwMDEgIE11c3RlayBCZWFyUGF3IDI0MDAgU2Nhbm5lcgorCTEyMzcgIEh1YgorCWEwMDAgIFNtYXJ0IERpc3BsYXkgUmVmZXJlbmNlIERldmljZQorCWMzNWIgIFByaW50aW5nIFN1cHBvcnQKKzA0MDEgIE5hdGlvbmFsIFJlZ2lzdHJ5LCBJbmMuCiswNDAyICBBTGkgQ29ycC4KKwk1NDYyICBNNTQ2MiBJREUgQ29udHJvbGxlcgorCTU2MDIgIFZpZGVvIENhbWVyYSBDb250cm9sbGVyCisJNTYwMyAgVVNCIDIuMCBRLXRlYyBXZWJjYW0gMzAwCisJNTYwNiAgVVNCIDIuMCBDYW1lcmEKKwk1NjIxICBVU0IgMi4wIFN0b3JhZ2UgRGV2aWNlCisJNTYyMyAgVmlzdGFTY2FuIEFzdHJhIDM2MDAKKwk1NjI3ICBXZWxsYW5kIE1FLTc0MFBTIFVTQjIgMy41IiBQb3dlciBTYXZpbmcgRW5jbG9zdXJlCisJNTYzMiAgVVNCIDIuMCBIb3N0LXRvLUhvc3QgTGluaworCTU2MzUgIFVTQiAyLjAgRmxhc2ggQ2FyZCBSZWFkZXIKKwk1NjM2ICBVU0IgMi4wIFN0b3JhZ2UgRGV2aWNlCisJNTYzNyAgTTU2MzcgSURFIENvbnRyb2xsZXIKKwk1NjY3ICBNdXNpYyBwbGF5ZXIKKzA0MDMgIEZ1dHVyZSBUZWNobm9sb2d5IERldmljZXMgSW50ZXJuYXRpb25hbCwgTHRkCisJMDAwMCAgSDRTTUsgNyBQb3J0IEh1YgorCTAyMzIgIFNlcmlhbCBDb252ZXJ0ZXIKKwk2MDAxICBGVDIzMiBVU0ItU2VyaWFsIChVQVJUKSBJQworCTYwMDcgIFNlcmlhbCBDb252ZXJ0ZXIKKwk2MDA4ICBTZXJpYWwgQ29udmVydGVyCisJNjAwOSAgU2VyaWFsIENvbnZlcnRlcgorCTYwMTAgIEZUMjIzMkMgRHVhbCBVU0ItVUFSVC9GSUZPIElDCisJODA0MCAgNCBQb3J0IEh1YgorCTgwNzAgIDcgUG9ydCBIdWIKKwk4MzcwICA3IFBvcnQgSHViCisJODM3MSAgUFMvMiBLZXlib2FyZCBBbmQgTW91c2UKKwk4MzcyICBGVDhVMTAwQVggU2VyaWFsIFBvcnQKKwliY2Q4ICBTdGVsbGFyaXMgRGV2ZWxvcG1lbnQgQm9hcmQKKyMJCTAgIFN0ZWxsYXJpcyBEZXZlbG9wbWVudCBCb2FyZCBBCisjCQkxICBTdGVsbGFyaXMgVmlydHVhbCBDT00gUG9ydAorCWJjZDkgIFN0ZWxsYXJpcyBFdmFsdWF0aW9uIEJvYXJkCisjCQkwICBTdGVsbGFyaXMgRXZhbHVhdGlvbiBCb2FyZCBBCisjCQkxICBTdGVsbGFyaXMgVmlydHVhbCBDT00gUG9ydAorCWM2MzAgIGxjZDJ1c2IgaW50ZXJmYWNlCisJYzdkMCAgUlItQ2lyS2l0cyBMb2NvQnVmZmVyLVVTQgorCWNjNDggIHByb2R1Y3QgRlRESSBUQUNUUklYX09QRU5QT1JUXzEzTSAweGNjNDggT3BlblBvcnQgMS4zIE1pdHN1YmlzaGkKKwljYzQ5ICBwcm9kdWN0IEZUREkgVEFDVFJJWF9PUEVOUE9SVF8xM1MgMHhjYzQ5IE9wZW5Qb3J0IDEuMyBTdWJhcnUKKwljYzRhICBwcm9kdWN0IEZUREkgVEFDVFJJWF9PUEVOUE9SVF8xM1UgMHhjYzRhIE9wZW5Qb3J0IDEuMyBVbml2ZXJzYWwKKwlkMDEwICBTQ1MgUFRDLUlJdXNiCisJZDAxMSAgU0NTIFBvc2l0aW9uLVRyYWNrZXIvVE5DCisJZDAxMiAgU0NTIERSQUdPTiAxCisJZDAxMyAgU0NTIERSQUdPTiAxCisJZDZmOCAgVU5JIEJsYWNrIEJPWAorCWU3MDAgIEVsc3RlciBVbmljb20gSUlJIE9wdGljYWwgUHJvYmUKKwllODg4ICBFeHBlcnQgSVNETiBDb250cm9sIFVTQgorCWU4ODkgIFVTQi1SUzIzMiBPcHRvQnJpZGdlCisJZTg4YSAgRXhwZXJ0IG1vdXNlQ0xPQ0sgVVNCIElJCisJZTg4YiAgUHJlY2lzaW9uIENsb2NrIE1TRiBVU0IKKwllODhjICBFeHBlcnQgbW91c2VDTE9DSyBVU0IgSUkgSEJHCisJZWE5MCAgRWNsbyAxLVdpcmUgQWRhcHRlcgorCWYxYTAgIEFzaXggUFJFU1RPIFByb2dyYW1tZXIKKwlmMjA4ICBQYXBlbm1laWVyIEJyYWlsbGUtRGlzcGxheQorCWY2ODAgIFN1dW50byBTcG9ydHMgSW5zdHJ1bWVudAorCWY5MTggIEFudDggTG9naWMgUHJvYmUKKwlmYTAwICBNYXRyaXggT3JiaXRhbCBVU0IgU2VyaWFsCisJZmEwMSAgTWF0cml4IE9yYml0YWwgTVgyIG9yIE1YMworCWZhMDIgIE1hdHJpeCBPcmJpdGFsIE1YNCBvciBNWDUKKwlmYTAzICBNYXRyaXggT3JiaXRhbCBWSy9MSzIwMiBGYW1pbHkKKwlmYTA0ICBNYXRyaXggT3JiaXRhbCBWSy9MSzIwNCBGYW1pbHkKKwlmYzA4ICBDcnlzdGFsZm9udHogQ0ZBLTYzMiBVU0IgTENECisJZmMwOSAgQ3J5c3RhbGZvbnR6IENGQS02MzQgVVNCIExDRAorCWZjMGIgIENyeXN0YWxmb250eiBDRkEtNjMzIFVTQiBMQ0QKKwlmYzBjICBDcnlzdGFsZm9udHogQ0ZBLTYzMSBVU0IgTENECisJZmMwZCAgQ3J5c3RhbGZvbnR6IENGQS02MzUgVVNCIExDRAorCWZjODIgIFNFTUMgRFNTLTIwIFN5bmNTdGF0aW9uCisJZmQ0OCAgU2hpcE1vZHVsIE1pbmlQbGV4LTR4VVNCIE5NRUEgTXVsdGlwbGV4ZXIKKwlmZjA4ICBUb29sSG91c2UgTG9vcEJhY2sgQWRhcHRlcgorCWZmMTggIExvZ2Jvb2sgQnVzCisJZmYxOSAgTG9nYm9vayBCdXMKKwlmZjFhICBMb2dib29rIEJ1cworCWZmMWIgIExvZ2Jvb2sgQnVzCisJZmYxYyAgTG9nYm9vayBCdXMKKwlmZjFkICBMb2dib29rIEJ1cworCWZmMWUgIExvZ2Jvb2sgQnVzCisJZmYxZiAgTG9nYm9vayBCdXMKKzA0MDQgIE5DUiBDb3JwLgorCTAyMDIgIDc4WFggU2Nhbm5lcgorCTAyMDMgIDc4WFggU2Nhbm5lciAtIEVtYmVkZGVkIFN5c3RlbQorCTAzMTAgIEs1OTAgUHJpbnRlciwgU2VsZi1TZXJ2aWNlCisJMDMxMSAgNzE2NyBQcmludGVyLCBSZWNlaXB0L1NsaXAKKwkwMzEyICA3MTk3IFByaW50ZXIgUmVjZWlwdAorCTAzMjAgIDU5MzItVVNCIEtleWJvYXJkCisJMDMyMSAgNTk1My1VU0IgRHluYWtleQorCTAzMjIgIDU5MzItVVNCIEVuaGFuY2VkIEtleWJvYXJkCisJMDMyMyAgNTkzMi1VU0IgRW5oYW5jZWQgS2V5Ym9hcmQsIEZsYXNoLVJlY292ZXJ5L0Rvd25sb2FkCisJMDMyNCAgNTk1My1VU0IgRW5oYW5jZWQgRHluYWtleQorCTAzMjUgIDU5NTMtVVNCIEVuaGFuY2VkIER5bmFrZXkgRmxhc2gtUmVjb3ZlcnkvRG93bmxvYWQKKwkwMzI4ICBLMDE2OiBVU0ItTVNSIElTTyAzLXRyYWNrIE1TUjogUE9TIFN0YW5kYXJkIChTZWUgSElEIHBhZ2VzKQorCTAzMjkgIEswMTg6IFVTQi1NU1IgSklTIDItVHJhY2sgTVNSOiBQT1MgU3RhbmRhcmQKKwkwMzJhICBLMDE2OiBVU0ItTVNSIElTTyAzLVRyYWNrIE1TUjogSElEIEtleWJvYXJkIE1vZGUKKwkwMzJiICBLMDE2L0swMTg6IFVTQi1NU1IgRmxhc2gtUmVjb3ZlcnkvRG93bmxvYWQKKzA0MDUgIFN5bm9wc3lzLCBJbmMuCiswNDA2ICBGdWppdHN1LUlDTCBDb21wdXRlcnMKKzA0MDcgIEZ1aml0c3UgUGVyc29uYWwgU3lzdGVtcywgSW5jLgorMDQwOCAgUXVhbnRhIENvbXB1dGVyLCBJbmMuCisJMDMwYyAgSFAgV2ViY2FtCiswNDA5ICBORUMgQ29ycC4KKwkwMDExICBQQzk4IFNlcmllcyBMYXlvdXQgS2V5Ym9hcmQgTW91c2UKKwkwMDEyICBBVGVybSBJVDc1RFNVIElTRE4gVEEKKwkwMDE0ICBKYXBhbmVzZSBLZXlib2FyZAorCTAwMTkgIDEwOSBKYXBhbmVzZSBLZXlib2FyZCB3aXRoIEJ1cy1Qb3dlcmVkIEh1YgorCTAwMWEgIFBDOTggU2VyaWVzIExheW91dCBLZXlib2FyZCB3aXRoIEJ1cy1Qb3dlcmVkIEh1YgorCTAwMjUgIE1pbmkgS2V5Ym9hcmQgd2l0aCBCdXMtUG93ZXJlZCBIdWIKKwkwMDI3ICBNdWx0aVN5bmMgTW9uaXRvcgorCTAwMmMgIENsaWshLVVTQiBEcml2ZQorCTAwMzQgIDEwOSBKYXBhbmVzZSBLZXlib2FyZCB3aXRoIE9uZS10b3VjaCBzdGFydCBidXR0b25zCisJMDAzZiAgV2lyZWxlc3MgS2V5Ym9hcmQgd2l0aCBPbmUtdG91Y2ggc3RhcnQgYnV0dG9ucworCTAwNDAgIEZsb3BweQorCTAwNGUgIFN1cGVyU2NyaXB0IDE0MDAgU2VyaWVzCisJMDA0ZiAgV2lyZWxlc3MgS2V5Ym9hcmQgd2l0aCBPbmUtdG91Y2ggc3RhcnQgYnV0dG9ucworCTAwNTggIEhpZ2hTcGVlZCBIdWIKKwkwMDU5ICBIaWdoU3BlZWQgSHViCisJMDA1YSAgSGlnaFNwZWVkIEh1YgorCTAwNmEgIENvbmNlcHRyb25pYyBVU0IgSGFyZGRpc2sgQm94CisJMDA4MSAgU3VwZXJTY3JpcHQgMTQwMCBTZXJpZXMKKwkwMDgyICBTdXBlclNjcmlwdCAxNDAwIFNlcmllcworCTAwOTQgIEphcGFuZXNlIEtleWJvYXJkIHdpdGggT25lLXRvdWNoIHN0YXJ0IGJ1dHRvbnMKKwkwMDk1ICBKYXBhbmVzZSBLZXlib2FyZAorCTAwYTkgIEF0ZXJtSVQyMUwgMTI4SyBTdXBwb3J0IFN0YW5kYXJkCisJMDBhYSAgQXRlcm1JVFg3MiAxMjhLIFN1cHBvcnQgU3RhbmRhcmQKKwkwMGFiICBBdGVybUlUWDYyIDEyOEsgU3VwcG9ydCBTdGFuZGFyZAorCTAwYWMgIEF0ZXJtSVQ0MiAxMjhLIFN1cHBvcnQgU3RhbmRhcmQKKwkwMGFlICBJTlNNQVRFVjcwRy1NQVggU3RhbmRhcmQKKwkwMGFmICBBdGVybUlUWDcwIDEyOEsgU3VwcG9ydCBTdGFuZGFyZAorCTAwYjAgIEF0ZXJtSVRYODAgMTI4SyBTdXBwb3J0IFN0YW5kYXJkCisJMDBiMiAgQXRlcm1JVFg4MEQgMTI4SyBTdXBwb3J0IFN0YW5kYXJkCisJMDBjMCAgV2lyZWxlc3MgUmVtb2NvbgorCTAwZjcgIFNtYXJ0IERpc3BsYXkgUEstU0QxMAorCTAxMWQgIGUyMjggTW9iaWxlIFBob25lCisJMDIwMyAgSElEIEF1ZGlvIENvbnRyb2xzCisJNTVhYSAgSHViCisJNTVhYiAgSHViIFtpTWFjL2lUb3VjaCBrYmRdCisJODAxMCAgSW50ZWxsaWJhc2UgSHViCisJODAxMSAgSW50ZWxsaWJhc2UgSHViCisJZWZiZSAgUCFjdHkgOTAwIFtIUCBESl0KKwlmMGJlICBQIWN0eSA5MjAgW0hQIERKIDgxMmNdCiswNDBhICBLb2RhayBDby4KKwkwMDAxICBEVkMtMzIzCisJMDAwMiAgRFZDLTMyNQorCTAxMDAgIERDLTIyMAorCTAxMTAgIERDLTI2MAorCTAxMTEgIERDLTI2NQorCTAxMTIgIERDLTI5MAorCTAxMjAgIERDLTI0MAorCTAxMjEgIERDLTI0MCAoUFRQIGZpcm13YXJlKQorCTAxMzAgIERDLTI4MAorCTAxMzEgIERDLTUwMDAKKwkwMTMyICBEQy0zNDAwCisJMDE0MCAgREMtNDgwMAorCTAxNjAgIERDNDgwMAorCTAxNzAgIERYMzkwMAorCTAyMDAgIERpZ2l0YWwgQ2FtZXJhCisJMDMwMCAgRVotMjAwCisJMDQwMCAgTUMzCisJMDQwMiAgRGlnaXRhbCBDYW1lcmEKKwkwNDAzICBaNzU5MAorCTA1MDAgIERYMzUwMAorCTA1MTAgIERYMzYwMAorCTA1MjUgIERYMzIxNQorCTA1MzAgIERYMzcwMAorCTA1MzUgIEVhc3lTaGFyZSBDWDQyMzAgQ2FtZXJhCisJMDU0MCAgTFM0MjAKKwkwNTUwICBEWDQ5MDAKKwkwNTU1ICBEWDQzMzAKKwkwNTYwICBDWDQyMDAKKwkwNTY1ICBDWDQyMTAKKwkwNTY2ICBDWDQzMDAKKwkwNTY3ICBMUzc1MworCTA1NjggIExTNDQzCisJMDU2OSAgTFM2NjMKKwkwNTcwICBEWDYzNDAKKwkwNTcxICBDWDYzMzAKKwkwNTcyICBEWDY0NDAKKwkwNTczICBDWDYyMzAKKwkwNTc0ICBDWDYyMDAKKwkwNTc1ICBEWDY0OTAKKwkwNTc2ICBEWDQ1MzAKKwkwNTc3ICBEWDc2MzAKKwkwNTc4ICBDWDczMDAvQ1g3MzEwCisJMDU3OSAgQ1g3MjIwCisJMDU3YSAgQ1g3MzMwCisJMDU3YiAgQ1g3NDMwCisJMDU3YyAgQ1g3NTMwCisJMDU3ZCAgRFg3NDQwCisJMDU3ZSAgQzMwMAorCTA1N2YgIERYNzU5MAorCTA1ODAgIFo3MzAKKwkwNTgxICBEaWdpdGFsIENhbWVyYQorCTA1ODIgIERpZ2l0YWwgQ2FtZXJhCisJMDU4MyAgRGlnaXRhbCBDYW1lcmEKKwkwNTg0ICBDWDY0NDUKKwkwNTg1ICBEaWdpdGFsIENhbWVyYQorCTA1ODYgIENYNzUyNQorCTA1ODcgIERpZ2l0YWwgQ2FtZXJhCisJMDU4OCAgRGlnaXRhbCBDYW1lcmEKKwkwNTg5ICBFYXN5U2hhcmUgQzM2MAorCTA1OGEgIEMzMTAKKwkwNThiICBEaWdpdGFsIENhbWVyYQorCTA1OGMgIEMzMzAKKwkwNThkICBDMzQwCisJMDU4ZSAgVjUzMAorCTA1OGYgIFY1NTAKKwkwNTkwICBEaWdpdGFsIENhbWVyYQorCTA1OTEgIERpZ2l0YWwgQ2FtZXJhCisJMDU5MiAgRGlnaXRhbCBDYW1lcmEKKwkwNTkzICBEaWdpdGFsIENhbWVyYQorCTA1OTQgIERpZ2l0YWwgQ2FtZXJhCisJMDU5NSAgRGlnaXRhbCBDYW1lcmEKKwkwNTk2ICBEaWdpdGFsIENhbWVyYQorCTA1OTcgIERpZ2l0YWwgQ2FtZXJhCisJMDU5OCAgRGlnaXRhbCBDYW1lcmEKKwkwNTk5ICBEaWdpdGFsIENhbWVyYQorCTA1OWEgIERpZ2l0YWwgQ2FtZXJhCisJMDU5YiAgRGlnaXRhbCBDYW1lcmEKKwkwNTljICBEaWdpdGFsIENhbWVyYQorCTA1OWQgIERpZ2l0YWwgQ2FtZXJhCisJMDU5ZSAgRGlnaXRhbCBDYW1lcmEKKwkwNTlmICBEaWdpdGFsIENhbWVyYQorCTA1YTAgIERpZ2l0YWwgQ2FtZXJhCisJMDVhMSAgRGlnaXRhbCBDYW1lcmEKKwkwNWEyICBEaWdpdGFsIENhbWVyYQorCTA1YTMgIERpZ2l0YWwgQ2FtZXJhCisJMDVhNCAgRGlnaXRhbCBDYW1lcmEKKwkwNWE1ICBEaWdpdGFsIENhbWVyYQorCTA1YTYgIERpZ2l0YWwgQ2FtZXJhCisJMDVhNyAgRGlnaXRhbCBDYW1lcmEKKwkwNWE4ICBEaWdpdGFsIENhbWVyYQorCTA1YTkgIERpZ2l0YWwgQ2FtZXJhCisJMDVhYSAgRGlnaXRhbCBDYW1lcmEKKwkwNWFiICBEaWdpdGFsIENhbWVyYQorCTA1YWMgIERpZ2l0YWwgQ2FtZXJhCisJMDVhZCAgRGlnaXRhbCBDYW1lcmEKKwkwNWFlICBEaWdpdGFsIENhbWVyYQorCTA1YWYgIERpZ2l0YWwgQ2FtZXJhCisJMDViMCAgRGlnaXRhbCBDYW1lcmEKKwkwNWIxICBEaWdpdGFsIENhbWVyYQorCTA1YjIgIERpZ2l0YWwgQ2FtZXJhCisJMDViMyAgRWFzeVNoYXJlIFo3MTAgQ2FtZXJhCisJMDViNCAgRGlnaXRhbCBDYW1lcmEKKwkwNWI1ICBEaWdpdGFsIENhbWVyYQorCTA1YjYgIERpZ2l0YWwgQ2FtZXJhCisJMDViNyAgRGlnaXRhbCBDYW1lcmEKKwkwNWI4ICBEaWdpdGFsIENhbWVyYQorCTA1YjkgIERpZ2l0YWwgQ2FtZXJhCisJMDViYSAgRGlnaXRhbCBDYW1lcmEKKwkwNWJiICBEaWdpdGFsIENhbWVyYQorCTA1YmMgIERpZ2l0YWwgQ2FtZXJhCisJMDViZCAgRGlnaXRhbCBDYW1lcmEKKwkwNWJlICBEaWdpdGFsIENhbWVyYQorCTA1YmYgIERpZ2l0YWwgQ2FtZXJhCisJMDVjMCAgRGlnaXRhbCBDYW1lcmEKKwkwNWMxICBEaWdpdGFsIENhbWVyYQorCTA1YzIgIERpZ2l0YWwgQ2FtZXJhCisJMDVjMyAgRGlnaXRhbCBDYW1lcmEKKwkwNWM0ICBEaWdpdGFsIENhbWVyYQorCTA1YzUgIERpZ2l0YWwgQ2FtZXJhCisJMTAwMSAgRWFzeVNoYXJlIFNWODExIERpZ2l0YWwgUGljdHVyZSBGcmFtZQorCTQwMDAgIElua0pldCBDb2xvciBQcmludGVyCisJNDEwZCAgRWFzeVNoYXJlIEc2MDAgUHJpbnRlciBEb2NrCisJNTAxMCAgV2lyZWxlc3MgQWRhcHRlcgorCTUwMTIgIERCVC0yMjAgQmx1ZXRvb3RoIEFkYXB0ZXIKKwk2MDAxICBpMzAKKwk2MDAyICBpNDAKKwk2MDAzICBpNTAKKwk2MDA0ICBpNjAKKwk2MDA1ICBpODAKKzA0MGIgIFdlbHRyZW5kIFNlbWljb25kdWN0b3IKKwk2NTEwICBXZWx0cmVuZCBCYXIgQ29kZSBSZWFkZXIKKwk2NTIwICBYQk9YIFhwbG9kZXIKKzA0MGMgIFZUZWNoIENvbXB1dGVycywgTHRkCiswNDBkICBWSUEgVGVjaG5vbG9naWVzLCBJbmMuCisJMzE4NCAgVk5UIFZUNjY1NiBVU0ItODAyLjExIFdpcmVsZXNzIExBTiBBZGFwdGVyCisJNjIwNSAgVVNCIDIuMCBDYXJkIFJlYWRlcgorMDQwZSAgTUNDSQorMDQwZiAgRWNobyBTcGVlY2ggQ29ycC4KKzA0MTEgIE1lbENvLiwgSW5jLgorCTAwMDEgIExVQS1UWCBFdGhlcm5ldCBbcGVnYXN1c10KKwkwMDA1ICBMVUEtVFggRXRoZXJuZXQKKwkwMDA2ICBXTEktVVNCLUwxMSBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTAwMDkgIExVQTItVFggRXRoZXJuZXQKKwkwMDBiICBXTEktVVNCLUwxMUctV1IgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwMDBkICBXTEktVVNCLUwxMUcgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwMDEyICBMVUEtS1RYIEV0aGVybmV0CisJMDAxMyAgVVNCMi1JREUgQWRhcHRlcgorCTAwMTYgIFdMSS1VU0ItUzExIDgwMi4xMWIgQWRhcHRlcgorCTAwMTggIFVTQjItSURFIEFkYXB0ZXIKKwkwMDFjICBVU0ItSURFIEJyaWRnZTogRFVCLVB4eEcKKwkwMDI3ICBXTEktVVNCLUtTMTFHIDgwMi4xMWIgQWRhcHRlcgorCTAwM2QgIExVQS1VMi1LVFggRXRoZXJuZXQKKwkwMDQ0ICBXTEktVVNCLUtCMTEgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwMDRkICBXTEktVVNCLUIxMSBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTAwNTAgIFdMSTItVVNCMi1HNTQgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwMDVlICBXTEktVTItS0c1NC1ZQiBXTEFOCisJMDA2NSAgUHl0aG9uMiBXRE0gRW5jb2RlcgorCTAwNjYgIFdMSS1VMi1LRzU0IFdMQU4KKwkwMDY3ICBXTEktVTItS0c1NC1BSSBXTEFOCisJMDA4OSAgQnVmZmFsbyBSVUYtQy9VMiBGbGFzaCBEcml2ZQorCTAwOGIgIE5pbnRlbmRvIFdpLUZpCisJMDA5MSAgV0xJLVUyLUtBTUc1NCBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTAwOTIgIFdMSS1VMi1LQU1HNTQgQm9vdGxvYWRlcgorCTAwOTcgIFdMSS1VMi1LRzU0LUJCCisJMDBhOSAgV0xJLVUyLUFNRzU0SFAgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwMGFhICBXTEktVTItQU1HNTRIUCBCb290bG9hZGVyCisJMDBiMyAgUEMtT1AtUlMxIFJlbW90ZVN0YXRpb24KKwkwMGNhICA4MDIuMTFuIE5ldHdvcmsgQWRhcHRlcgorCTAwY2IgIFdMSS1VMi1HMzAwTiA4MDIuMTFuIEFkYXB0ZXIKKwkwMGQ4ICBXTEktVTItU0c1NEhQCisJMDBkOSAgV0xJLVUyLUc1NEhQCisJMDBkYSAgV0xJLVUyLUtHNTRMIDgwMi4xMWJnCiswNDEyICBBd2FyZCBTb2Z0d2FyZSBJbnRlcm5hdGlvbmFsCiswNDEzICBMZWFkdGVrIFJlc2VhcmNoLCBJbmMuCisJMTMxMCAgV2luRmFzdCBUViAtIE5UU0MgKyBGTQorCTEzMTEgIFdpbkZhc3QgVFYgLSBOVFNDICsgTVRTICsgRk0KKwkxMzEyICBXaW5GYXN0IFRWIC0gUEFMIEJHICsgRk0KKwkxMzEzICBXaW5GYXN0IFRWIC0gUEFMIEJHK1RYVCArIEZNCisJMTMxNCAgV2luRmFzdCBUViBBdWRpbyAtIFBIUCBQQUwgSQorCTEzMTUgIFdpbkZhc3QgVFYgQXVkaW8gLSBQSFAgUEFMIEkrVFhUCisJMTMxNiAgV2luRmFzdCBUViBBdWRpbyAtIFBIUCBQQUwgREsKKwkxMzE3ICBXaW5GYXN0IFRWIEF1ZGlvIC0gUEhQIFBBTCBESytUWFQKKwkxMzE4ICBXaW5GYXN0IFRWIC0gUEFMIEkvREsgKyBGTQorCTEzMTkgIFdpbkZhc3QgVFYgLSBQQUwgTiArIEZNCisJMTMxYSAgV2luRmFzdCBUViBBdWRpbyAtIFBIUCBTRUNBTSBMTAorCTEzMWIgIFdpbkZhc3QgVFYgQXVkaW8gLSBQSFAgU0VDQU0gTEwrVFhUCisJMTMxYyAgV2luRmFzdCBUViBBdWRpbyAtIFBIUCBTRUNBTSBESworCTEzMWQgIFdpbkZhc3QgVFYgLSBTRUNBTSBESyArIFRYVCArIEZNCisJMTMxZSAgV2luRmFzdCBUViAtIE5UU0MgSmFwYW4gKyBGTQorCTEzMjAgIFdpbkZhc3QgVFYgLSBOVFNDCisJMTMyMSAgV2luRmFzdCBUViAtIE5UU0MgKyBNVFMKKwkxMzIyICBXaW5GYXN0IFRWIC0gUEFMIEJHCisJMTMyMyAgV2luRmFzdCBUViAtIFBBTCBCRytUWFQKKwkxMzI0ICBXaW5GYXN0IFRWIEF1ZGlvIC0gUEhQIFBBTCBJCisJMTMyNSAgV2luRmFzdCBUViBBdWRpbyAtIFBIUCBQQUwgSStUWFQKKwkxMzI2ICBXaW5GYXN0IFRWIEF1ZGlvIC0gUEhQIFBBTCBESworCTEzMjcgIFdpbkZhc3QgVFYgQXVkaW8gLSBQSFAgUEFMIERLK1RYVAorCTEzMjggIFdpbkZhc3QgVFYgLSBQQUwgSS9ESworCTEzMjkgIFdpbkZhc3QgVFYgLSBQQUwgTgorCTEzMmEgIFdpbkZhc3QgVFYgQXVkaW8gLSBQSFAgU0VDQU0gTEwKKwkxMzJiICBXaW5GYXN0IFRWIEF1ZGlvIC0gUEhQIFNFQ0FNIExMK1RYVAorCTEzMmMgIFdpbkZhc3QgVFYgQXVkaW8gLSBQSFAgU0VDQU0gREsKKwkxMzJkICBXaW5GYXN0IFRWIC0gU0VDQU0gREsgKyBUWFQKKwkxMzJlICBXaW5GYXN0IFRWIC0gTlRTQyBKYXBhbgorCTYwMjMgIEVNUCBBdWRpbyBEZXZpY2UKKwk2MDI0ICBXaW5GYXN0IFBhbG1Ub3AvTm92byBUViBWaWRlbworCTYwMjUgIFdpbkZhc3QgRFRWIERvbmdsZSAoY29sZCBzdGF0ZSkKKwk2MDI2ICBXaW5GYXN0IERUViBEb25nbGUgKHdhcm0gc3RhdGUpCisJNjEyNSAgV2luRmFzdCBEVFYgRG9uZ2xlCisJNjEyNiAgV2luRmFzdCBEVFYgRG9uZ2xlIEJEQSBEcml2ZXIKKwk2ZjAwICBXaW5GYXN0IERUViBEb25nbGUgKFNUSzc3MDBQIGJhc2VkKQorMDQxNCAgR2lnYS1CeXRlIFRlY2hub2xvZ3kgQ28uLCBMdGQKKzA0MTYgIFdpbmJvbmQgRWxlY3Ryb25pY3MgQ29ycC4KKwkwMDM1ICBXODlDMzUgODAyLjExYmcgV0xBTiBBZGFwdGVyCisJMDEwMSAgSHViCisJMDk2MSAgQVZMIEZsYXNoIENhcmQgUmVhZGVyCisJMzgxMCAgU21hcnQgQ2FyZCBDb250cm9sbGVyCisJMzgxMSAgR2VuZXJpYyBDb250cm9sbGVyIC0gU2luZ2xlIGludGVyZmFjZQorCTM4MTIgIFNtYXJ0IENhcmQgQ29udHJvbGxlcl8ySW50ZXJmYWNlCisJMzgxMyAgUGFuZWwgRGlzcGxheQorCTU1MTggIDQtUG9ydCBIdWIKKwk1NTFhICBQQyBTeW5jIEtleXBhZAorCTU1MWIgIFBDIEFzeW5jIEtleXBhZAorCTU1MWMgIFN5bmMgVGVua2V5CisJNTUxZCAgQXN5bmMgVGVua2V5CisJNTUxZSAgS2V5Ym9hcmQKKwk1NTFmICBLZXlib2FyZCB3LyBTeXMgYW5kIE1lZGlhCisJNTUyMSAgS2V5Ym9hcmQKKwk2NDgxICAxNi1iaXQgU2Nhbm5lcgorCTc3MjEgIE1lbW9yeSBTdGljayBSZWFkZXIvV3JpdGVyCisJNzcyMiAgTWVtb3J5IFN0aWNrIFJlYWRlci9Xcml0ZXIKKwk3NzIzICBTRCBDYXJkIFJlYWRlcgorMDQxNyAgU3ltYmlvcyBMb2dpYworMDQxOCAgQVNUIFJlc2VhcmNoCiswNDE5ICBTYW1zdW5nIEluZm8uIFN5c3RlbXMgQW1lcmljYSwgSW5jLgorCTAwMDEgIElyREEgUmVtb3RlIENvbnRyb2xsZXIKKwkzMDAxICBYZXJveCBQMTIwMiBMYXNlciBQcmludGVyCisJMzAwMyAgT2xpdmV0dGkgUEcgTDEyTAorCTMyMDEgIERvY3VwcmludCBQOGV4CisJMzQwNCAgU0NYLTV4MTIgc2VyaWVzCisJMzQwNiAgTUZQIDgzMCBzZXJpZXMKKwkzNDA3ICBNTC05MTIKKwkzNjAxICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTM2MDIgIElua0pldCBDb2xvciBQcmludGVyCisJNDYwMiAgUmVtb3RlIE5ESVMgTmV0d29yayBEZXZpY2UKKwk4MDAxICBIdWIKKwk4MDAyICBTeW5jTWFzdGVyIDc1N0RGWCBISUQgRGV2aWNlCiswNDFhICBQaG9lbml4IFRlY2hub2xvZ2llcywgTHRkCiswNDFiICBkJ1RWCiswNDFkICBTMywgSW5jLgorMDQxZSAgQ3JlYXRpdmUgVGVjaG5vbG9neSwgTHRkCisJMTAwMiAgTm9tYWQgSUkKKwkxMDAzICBCbGFzdGVyIEdhbWVQYWQgQ29icmEKKwkxMDUwICBHYW1lUGFkIENvYnJhCisJMTA1MyAgTW91c2UgR2FtZXIgSEQ3NjAwTAorCTMwMDAgIFNvdW5kQmxhc3RlciBFeHRpZ3kKKwkzMDAyICBTQiBFeHRlcm5hbCBDb21wb3NpdGUgRGV2aWNlCisJMzAxMCAgU291bmRCbGFzdGVyIE1QMysKKwkzMDE0ICBTQiBFeHRlcm5hbCBDb21wb3NpdGUgRGV2aWNlCisJMzAxNSAgU291bmQgQmxhc3RlciBEaWdpdGFsIE11c2ljIExYCisJMzAyMCAgU291bmRCbGFzdGVyIEF1ZGlneSAyIE5YCisJMzAzMCAgU0IgRXh0ZXJuYWwgQ29tcG9zaXRlIERldmljZQorCTMwNDAgIFNvdW5kQmxhc3RlciBMaXZlISAyNC1iaXQgRXh0ZXJuYWwgU0IwNDkwCisJMzA2MCAgU291bmQgQmxhc3RlciBBdWRpZ3kgMiBaUyBFeHRlcm5hbAorCTMwNjEgIFNvdW5kQmxhc3RlciBBdWRpZ3kgMiBaUyBWaWRlbyBFZGl0b3IKKwkzMDkwICBTb3VuZCBCbGFzdGVyIERpZ2l0YWwgTXVzaWMgU1gKKwkzZjAyICBFLU11IDAyMDIKKwkzZjA0ICBFLU11IDA0MDQKKwk0MDAzICBWaWRlb0JsYXN0ZXIgV2ViY2FtIEdvIFBsdXMgW1c5OTY3Q0ZdCisJNDAwNCAgTm9tYWQgSUkgTUcKKwk0MDA1ICBXZWJjYW0gQmxhc3RlciBHbyBFUworCTQwMDcgIEdvIE1pbmkKKwk0MDBhICBQQy1DYW0gMzAwCisJNDAwYiAgUEMtQ2FtIDYwMAorCTQwMGMgIFdlYmNhbSA1IFtwd2NdCisJNDAwZCAgV2ViY2FtIFBEMTAwMQorCTQwMGYgIFBDLUNBTSA1NTAgKENvbXBvc2l0ZSkKKwk0MDExICBXZWJjYW0gUFJPIGVYCisJNDAxMiAgUEMtQ0FNMzUwCisJNDAxMyAgUEMtQ2FtIDc1MAorCTQwMTUgIENhcmRDYW0gVmFsdWUKKwk0MDE2ICBDYXJkQ2FtCisJNDAxNyAgV2ViY2FtIE1vYmlsZSBbUEQxMDkwXQorCTQwMTggIFdlYmNhbSBWaXN0YSBbUEQxMTAwXQorCTQwMTkgIEF1ZGlvIERldmljZQorCTQwMWEgIFdlYmNhbSBWaXN0YSBbUEQxMTAwXQorCTQwMWMgIFdlYmNhbSBOWCBbUEQxMTEwXQorCTQwMWQgIFdlYmNhbSBOWCBVbHRyYQorCTQwMWUgIFdlYmNhbSBOWCBQcm8KKwk0MDFmICBXZWJjYW0gTm90ZWJvb2sgW1BEMTE3MV0KKwk0MDIwICBXZWJjYW0gTlgKKwk0MDIxICBXZWJjYW0gTlggVWx0cmEKKwk0MDIyICBXZWJjYW0gTlggUHJvCisJNDAyOCAgVmlzdGEgUGx1cyBjYW0gW1ZGMDA5MF0KKwk0MDI5ICBXZWJjYW0gTGl2ZSEKKwk0MDJmICBEQy1DQU0gMzAwMFoKKwk0MDM0ICBXZWJjYW0gSW5zdGFudAorCTQwMzUgIFdlYmNhbSBJbnN0YW50CisJNDAzNiAgV2ViY2FtIExpdmUhL0xpdmUhIFBybworCTQwMzcgIFdlYmNhbSBMaXZlIQorCTQwMzggIE9SSVRFIENDRCBXZWJjYW0gW1BDMzcwUl0KKwk0MDM5ICBXZWJjYW0gTGl2ZSEgRWZmZWN0cworCTQwM2EgIFdlYmNhbSBOWCBQcm8gMgorCTQwM2IgIENyZWF0aXZlIFdlYmNhbSBWaXN0YSBbVkYwMDEwXQorCTQwM2MgIFdlYmNhbSBMaXZlISBVbHRyYQorCTQwM2QgIFdlYmNhbSBOb3RlYm9vayBVbHRyYQorCTQwM2UgIFdlYmNhbSBWaXN0YSBQbHVzCisJNDA0MSAgV2ViY2FtIExpdmUhIE1vdGlvbgorCTQwNDUgIExpdmUhIENhbSBWb2ljZQorCTQwNDkgIExpdmUhIENhbSBWb2ljZQorCTQwNTEgIExpdmUhIENhbSBOb3RlYm9vayBQcm8gW1ZGMDI1MF0KKwk0MDUyICBMaXZlISBDYW0gVmlzdGEgSU0KKwk0MDUzICBMaXZlISBDYW0gVmlkZW8gSU0KKwk0MDU0ICBMaXZlISBDYW0gVmlkZW8gSU0KKwk0MDU1ICBMaXZlISBDYW0gVmlkZW8gSU0gUHJvCisJNDA1NiAgTGl2ZSEgQ2FtIFZpZGVvIElNIFBybworCTQwNTcgIExpdmUhIENhbSBPcHRpYQorCTQwNTggIExpdmUhIENhbSBPcHRpYSBBRgorCTQwNjEgIExpdmUhIENhbSBOb3RlYm9vayBQcm8gW1ZGMDQwMF0KKwk0MDYzICBMaXZlISBDYW0gVmlkZW8gSU0gUHJvCisJNDA2OCAgV2ViY2FtIExpdmUhIE5vdGVib29rCisJNDEwMCAgTm9tYWQgSnVrZWJveCAyCisJNDEwMSAgTm9tYWQgSnVrZWJveCAzCisJNDEwMiAgTk9NQUQgTXVWb14yCisJNDEwNiAgTm9tYWQgTXVWbworCTQxMDcgIE5PTUFEIE11Vm8KKwk0MTA4ICBOb21hZCBKdWtlYm94IFplbgorCTQxMDkgIE5vbWFkIEp1a2Vib3ggWmVuIE5YCisJNDEwYiAgTm9tYWQgSnVrZWJveCBaZW4gVVNCIDIuMAorCTQxMGMgIE5vbWFkIE11Vm8gTlgKKwk0MTBmICBOT01BRCBNdVZvXjIgKEZsYXNoKQorCTQxMTAgIE5vbWFkIEp1a2Vib3ggWmVuIFh0cmEKKwk0MTExICBEZWxsIERpZ2l0YWwgSnVrZWJveAorCTQxMTYgIE11Vm9eMgorCTQxMTcgIE5vbWFkIE11Vm8gVFgKKwk0MTFiICBaZW4gVG91Y2gKKwk0MTFjICBOb21hZCBNdVZvIFVTQiAyLjAKKwk0MTFkICBaZW4KKwk0MTFlICBaZW4gTWljcm8KKwk0MTIzICBaZW4gUG9ydGFibGUgTWVkaWEgQ2VudGVyCisJNDEyNCAgTXVWb14yIEZNICh1SEREKQorCTQxMjYgIERlbGwgREogKDJuZCBnZW4pCisJNDEyNyAgRGVsbCBESgorCTQxMjggIE5PTUFEIEp1a2Vib3ggWmVuIFh0cmEgKG10cCkKKwk0MTJiICBNdVZvIE4yMDAgd2l0aCBGTSByYWRpbworCTQxMmYgIERlbGwgRGlnaXRhbCBKdWtlYm94IDIuR2VuCisJNDEzMCAgWmVuIE1pY3JvIChtdHApCisJNDEzMSAgWmVuIFRvdWNoIChtdHApCisJNDEzMyAgTWFzcyBTdG9yYWdlIERldmljZQorCTQxMzQgIFplbiBOZWVvbgorCTQxMzYgIFplbiBTbGVlaworCTQxMzcgIFplbiBTbGVlayAobXRwKQorCTQxMzkgIFplbiBOYW5vIFBsdXMKKwk0MTNjICBaZW4gTWljcm9QaG90bworCTQxNTAgIFplbiBWIChNVFApCisJNDE1MSAgWmVuIFZpc2lvbjpNIChtdHApCisJNDE1MiAgWmVuIFYgUGx1cworCTQxNTUgIFplbiBTdG9uZSBwbHVzCisJNDE1NyAgWmVuIChNVFApCisJNTAwZiAgQnJvYWRiYW5kIEJsYXN0ZXIgODAxMlUtVgorCTUwMTUgIFRFQ09NIEJsdWV0b290aCBEZXZpY2UKKwlmZmZmICBXZWJjYW0gTGl2ZSEgVWx0cmEKKzA0MWYgIExDUyBUZWxlZ3JhcGhpY3MKKzA0MjAgIENoaXBzIGFuZCBUZWNobm9sb2dpZXMKKwkxMzA3ICBDZWxseSBTSU0gQ2FyZCBSZWFkZXIKKzA0MjEgIE5va2lhIE1vYmlsZSBQaG9uZXMKKwkwMDAxICBFNjFpIChQQyBTdWl0ZSBtb2RlKQorCTAwMTggIDYyODggR1NNIFNtYXJ0cGhvbmUKKwkwMDE5ICA2Mjg4IEdTTSBTbWFydHBob25lIChpbWFnaW5nIG1vZGUpCisJMDAxYSAgNjI4OCBHU00gU21hcnRwaG9uZSAoZmlsZSB0cmFuc2ZlciBtb2RlKQorCTAwMjQgIDU2MTAgWHByZXNzTXVzaWMgKFN0b3JhZ2UgbW9kZSkKKwkwMDI1ICA1NjEwIFhwcmVzc011c2ljIChQQyBTdWl0ZSBtb2RlKQorCTAwMjggIDU2MTAgWHByZXNzTXVzaWMgKEltYWdpbmcgbW9kZSkKKwkwMDQyICBFNTEgKFBDIFN1aXRlIG1vZGUpCisJMDA2ZCAgTjk1IChTdG9yYWdlIG1vZGUpCisJMDA2ZSAgTjk1IChNdWx0aW1lZGlhIG1vZGUpCisJMDA2ZiAgTjk1IChQcmludGluZyBtb2RlKQorCTAwNzAgIE45NSAoUEMgU3VpdGUgbW9kZSkKKwkwMDk2ICBOODEwIEludGVybmV0IFRhYmxldAorCTAwYWEgIEU3MSAoTWFzcyBzdG9yYWdlIG1vZGUpCisJMDBhYiAgRTcxIChQQyBTdWl0ZSBtb2RlKQorCTAwZTQgIEU3MSAoTWVkaWEgdHJhbnNmZXIgbW9kZSkKKwkwMTAzICBBREwgRmxhc2hpbmcgRW5naW5lIEFWQUxPTiBQYXJlbnQKKwkwMTA0ICBBREwgUmUtRmxhc2hpbmcgRW5naW5lIFBhcmVudAorCTAxMDUgIEU2MSAoRmlybXdhcmUgdXBkYXRlIG1vZGUpCisJMDEwNiAgUk9NIFBhcmVudAorCTA0MDAgIDc2MDAgUGhvbmUgUGFyZW50CisJMDQwMSAgNjY1MCBHU00gUGhvbmUKKwkwNDAyICA2MjU1IFBob25lIFBhcmVudAorCTA0MDQgIDU1MTAKKwkwNDA1ICA5NTAwIEdTTSBDb21tdW5pY2F0b3IKKwkwNDA3ICBNdXNpYyBQbGF5ZXIgSERSLTEodG0pCisJMDQwYiAgTi1HYWdlIEdTTSBQaG9uZQorCTA0MGQgIDY2MjAgUGhvbmUgUGFyZW50CisJMDQwZSAgNjY1MSBQaG9uZSBQYXJlbnQKKwkwNDBmICA2MjMwIEdTTSBQaG9uZQorCTA0MTAgIDY2MzAgSW1hZ2luZyBTbWFydHBob25lCisJMDQxMSAgNzYxMCBQaG9uZSBQYXJlbnQKKwkwNDEzICA2MjYwIFBob25lIFBhcmVudAorCTA0MTQgIDczNzAKKwkwNDE1ICA5MzAwIEdTTSBTbWFydHBob25lCisJMDQxNiAgNjE3MCBQaG9uZSBQYXJlbnQKKwkwNDE3ICA3MjcwIFBob25lIFBhcmVudAorCTA0MTggIEU3MCAoUEMgU3VpdGUgbW9kZSkKKwkwNDE5ICBFNjAgKFBDIFN1aXRlIG1vZGUpCisJMDQxYSAgOTUwMCBHU00gQ29tbXVuaWNhdG9yIChSTkRJUykKKwkwNDFiICA5MzAwIEdTTSBTbWFydHBob25lIChSTkRJUykKKwkwNDFjICA3NzEwIFBob25lIFBhcmVudAorCTA0MWQgIDY2NzAgUGhvbmUgUGFyZW50CisJMDQxZSAgNjY4MAorCTA0MWYgIDYyMzUgUGhvbmUgUGFyZW50CisJMDQyMSAgMzIzMCBQaG9uZSBQYXJlbnQKKwkwNDIyICA2NjgxIFBob25lIFBhcmVudAorCTA0MjMgIDY2ODIgUGhvbmUgUGFyZW50CisJMDQyOCAgNjIzMGkgTW9kZW0KKwkwNDI5ICA2MjMwaSBNdWx0aU1lZGlhIENhcmQKKwkwNDMxICA3NzAgSW50ZXJuZXQgVGFibGV0CisJMDQzMiAgTjkwIFBob25lIFBhcmVudAorCTA0MzUgIEU3MCAoSVAgUGFzc3Rocm91Z2gvUk5ESVMgbW9kZSkKKwkwNDM2ICBFNjAgKElQIFBhc3N0aHJvdWdoL1JORElTIG1vZGUpCisJMDQzNyAgNjI2NSBQaG9uZSBQYXJlbnQKKwkwNDNhICBONzAgVVNCIFBob25lIFBhcmVudAorCTA0M2IgIDMxNTUgUGhvbmUgUGFyZW50CisJMDQzYyAgNjE1NSBQaG9uZSBQYXJlbnQKKwkwNDNkICA2MjcwIFBob25lIFBhcmVudAorCTA0NDMgIE43MCBQaG9uZSBQYXJlbnQKKwkwNDRjICBOTTg1MGlHIFBob25lIFBhcmVudAorCTA0NGQgIEU2MSAoUEMgU3VpdGUgbW9kZSkKKwkwNDRlICBFNjEgKERhdGEgRXhjaGFuZ2UgbW9kZSkKKwkwNDRmICBFNjEgKElQIFBhc3N0aHJvdWdoL1JORElTIG1vZGUpCisJMDQ1MyAgOTMwMCBQaG9uZSBQYXJlbnQKKwkwNDU2ICA2MTExIFBob25lIFBhcmVudAorCTA0NTcgIDYxMTEgUGhvbmUgKFByaW50aW5nIG1vZGUpCisJMDQ1YSAgNjI4MCBQaG9uZSBQYXJlbnQKKwkwNDVkICA2MjgyIFBob25lIFBhcmVudAorCTA0NmUgIDYxMTAgTmF2aWdhdG9yCisJMDQ4NSAgTVRQIERldmljZQorCTA0YzMgIE44MDAgSW50ZXJuZXQgVGFibGV0CisJMDRjZSAgRTkwIENvbW11bmljYXRvciAoUEMgU3VpdGUgbW9kZSkKKwkwNGNmICBFOTAgQ29tbXVuaWNhdG9yIChTdG9yYWdlIG1vZGUpCisJMDRmOSAgNjMwMCAoUEMgU3VpdGUgbW9kZSkKKwkwNTA4ICBFNjUgKFBDIFN1aXRlIG1vZGUpCisJMDYwMCAgRGlnaXRhbCBQZW4gU1UtMUIKKwkwODAwICBDb25uZWN0aXZpdHkgQ2FibGUgREtVLTUKKwkwODAxICBEYXRhIENhYmxlIERLVS02CisJMDgwMiAgQ0EtNDIgUGhvbmUgUGFyZW50CiswNDIyICBBREkgU3lzdGVtcywgSW5jLgorMDQyMyAgQ29tcHV0ZXIgQWNjZXNzIFRlY2hub2xvZ3kgQ29ycC4KKwkwMDBhICBOZXRNYXRlIEV0aGVybmV0CisJMDAwYyAgTmV0TWF0ZTIgRXRoZXJuZXQKKwkwMDBkICBVU0IgQ2hpZWYgQW5hbHl6ZXIKKwkwMTAwICBHZW5lcmljIFVuaXZlcnNhbCBQcm90b2NvbCBBbmFseXplcgorCTAxMDEgIFVQQSBVU0JUcmFjZXIKKwkwMjAwICBHZW5lcmljIDEwSyBVbml2ZXJzYWwgUHJvdG9jb2wgQW5hbHl6ZXIKKwkwMjBhICBQRVRyYWNlciBNTAorCTAzMDAgIEdlbmVyaWMgVW5pdmVyc2FsIFByb3RvY29sIEFuYWx5emVyCisJMDMwMSAgMjUwMEggVHJhY2VyIFRyYWluZXIKKwkwMzBhICBQRVRyYWNlciB4MQorCTEyMzcgIEFuZHJvbWVkYSBIdWIKKzA0MjQgIFN0YW5kYXJkIE1pY3Jvc3lzdGVtcyBDb3JwLgorCTAwMDEgIEludGVncmF0ZWQgSHViCisJMGFjZCAgU2l0ZWNvbSBJbnRlcm5hbCBNdWx0aSBNZW1vcnkgcmVhZGVyL3dyaXRlciBNRC0wMDUKKwkwZmRjICBGbG9wcHkKKwkxMGNkICBTaXRlY29tIEludGVybmFsIE11bHRpIE1lbW9yeSByZWFkZXIvd3JpdGVyIE1ELTAwNQorCTIwMjAgIFVTQiBIdWIKKwkyMGNkICBTaXRlY29tIEludGVybmFsIE11bHRpIE1lbW9yeSByZWFkZXIvd3JpdGVyIE1ELTAwNQorCTIwZmMgIDYtaW4tMSBDYXJkIFJlYWRlcgorCTIyMjggIDktaW4tMiBDYXJkIFJlYWRlcgorCTIyM2EgIDgtaW4tMSBDYXJkIFJlYWRlcgorCTI1MDMgIFVTQiAyLjAgSHViCisJMjUwNCAgVVNCIDIuMCBIdWIKKwkyNTI0ICBVU0IgTXVsdGlTd2l0Y2ggSHViCiswNDI1ICBNb3Rvcm9sYSBTZW1pY29uZHVjdG9ycyBISywgTHRkCisJMDEwMSAgRy1UZWNoIFdpcmVsZXNzIE1vdXNlICYgS2V5Ym9hcmQKKwlmMTAyICBHLVRlY2ggVStQIFdpcmVsZXNzIE1vdXNlCiswNDI2ICBJbnRlZ3JhdGVkIERldmljZSBUZWNobm9sb2d5LCBJbmMuCisJMDQyNiAgV0RNIERyaXZlcgorMDQyNyAgTW90b3JvbGEgRWxlY3Ryb25pY3MgVGFpd2FuLCBMdGQKKzA0MjggIEFkdmFuY2VkIEdyYXZpcyBDb21wdXRlciBUZWNoLCBMdGQKKwk0MDAxICBHYW1lUGFkIFBybworMDQyOSAgQ2lycnVzIExvZ2ljCiswNDJhICBFcmljc3NvbiBBdXN0cmlhbiwgQUcKKzA0MmIgIEludGVsIENvcnAuCisJOTMxNiAgOHg5MzFIeCBDdXN0b21lciBIdWIKKzA0MmMgIElubm92YXRpdmUgU2VtaWNvbmR1Y3RvcnMsIEluYy4KKzA0MmQgIE1pY3JvbmljcworMDQyZSAgQWNlciwgSW5jLgorCTAzODAgIE1QMyBQbGF5ZXIKKzA0MmYgIE1vbGV4LCBJbmMuCiswNDMwICBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuCisJMDAwMiAgMTA5IEtleWJvYXJkCisJMDAwNSAgVHlwZSA2IEtleWJvYXJkCisJMDAwYSAgMTA5IEphcGFuZXNlIEtleWJvYXJkCisJMDAwYiAgMTA5IEphcGFuZXNlIEtleWJvYXJkCisJMDA4MiAgMTA5IEphcGFuZXNlIEtleWJvYXJkCisJMDA4MyAgMTA5IEphcGFuZXNlIEtleWJvYXJkCisJMDEwMCAgMy1idXR0b24gTW91c2UKKwkzNmJhICBCdXMgUG93ZXJlZCBIdWIKKzA0MzEgIEl0YWMgU3lzdGVtcywgSW5jLgorCTAxMDAgIE1vdXNlLVRyYWsgMy1idXR0b24gVHJhY2sgQmFsbAorMDQzMiAgVW5pc3lzIENvcnAuCiswNDMzICBBbHBzIEVsZWN0cmljLCBJbmMuCisJMTEwMSAgSUJNIEdhbWUgQ29udHJvbGxlcgorCWFiYWIgIEtleWJvYXJkCiswNDM0ICBTYW1zdW5nIEluZm8uIFN5c3RlbXMgQW1lcmljYSwgSW5jLgorMDQzNSAgSHl1bmRhaSBFbGVjdHJvbmljcyBBbWVyaWNhCiswNDM2ICBUYXVnYWdyZWluaW5nIEhGCisJMDAwNSAgQ2FtZXJhTWF0ZSAoRFBDTV9VU0IpCiswNDM3ICBGcmFtYXRvbWUgQ29ubmVjdG9ycyBVU0EKKzA0MzggIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKzA0MzkgIFZvaWNlIFRlY2hub2xvZ2llcyBHcm91cAorMDQzZCAgTGV4bWFyayBJbnRlcm5hdGlvbmFsLCBJbmMuCisJMDAwMSAgTGFzZXIgUHJpbnRlcgorCTAwMDIgIE9wdHJhIEUzMTAgUHJpbnRlcgorCTAwMDMgIExhc2VyIFByaW50ZXIKKwkwMDA0ICBMYXNlciBQcmludGVyCisJMDAwNSAgTGFzZXIgUHJpbnRlcgorCTAwMDYgIExhc2VyIFByaW50ZXIKKwkwMDA3ICBMYXNlciBQcmludGVyCisJMDAwOCAgSW5ramV0IENvbG9yIFByaW50ZXIKKwkwMDA5ICBPcHRyYSBTMjQ1MCBQcmludGVyCisJMDAwYSAgTGFzZXIgUHJpbnRlcgorCTAwMGIgIElua2pldCBDb2xvciBQcmludGVyCisJMDAwYyAgT3B0cmEgRTMxMiBQcmludGVyCisJMDAwZCAgTGFzZXIgUHJpbnRlcgorCTAwMGUgIExhc2VyIFByaW50ZXIKKwkwMDBmICBMYXNlciBQcmludGVyCisJMDAxMCAgTGFzZXIgUHJpbnRlcgorCTAwMTEgIExhc2VyIFByaW50ZXIKKwkwMDEyICBJbmtqZXQgQ29sb3IgUHJpbnRlcgorCTAwMTMgIElua2pldCBDb2xvciBQcmludGVyCisJMDAxNCAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDE1ICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwMTYgIFoxMiBDb2xvciBKZXRwcmludGVyCisJMDAxNyAgWjMyIHByaW50ZXIKKwkwMDE4ICBaNTIgUHJpbnRlcgorCTAwMTkgIEZvcm1zIFByaW50ZXIKKwkwMDFhICBaNjUgUHJpbnRlcgorCTAwMWIgIElua0pldCBQaG90byBQcmludGVyCisJMDAxYyAgS29kYWsgUGVyc29uYWwgUGljdHVyZSBNYWtlciAyMDAgUHJpbnRlcgorCTAwMWQgIElua0pldCBDb2xvciBQcmludGVyCisJMDAxZSAgSW5rSmV0IFBob3RvIFByaW50ZXIKKwkwMDFmICBLb2RhayBQZXJzb25hbCBQaWN0dXJlIE1ha2VyIDIwMCBDYXJkIFJlYWRlcgorCTAwMjAgIFo1MSBQcmludGVyCisJMDAyMSAgWjMzIFByaW50ZXIKKwkwMDIyICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwMjMgIExhc2VyIFByaW50ZXIKKwkwMDI0ICBMYXNlciBQcmludGVyCisJMDAyNSAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDI2ICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwMjcgIElua0pldCBDb2xvciBQcmludGVyCisJMDAyOCAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDI5ICBTY2FuIFByaW50IENvcHkKKwkwMDJhICBTY2FuIFByaW50IENvcHkKKwkwMDJiICBTY2FuIFByaW50IENvcHkKKwkwMDJjICBTY2FuIFByaW50IENvcHkKKwkwMDJkICBYNzAvWDczIFNjYW4vUHJpbnQvQ29weQorCTAwMmUgIFNjYW4gUHJpbnQgQ29weQorCTAwMmYgIFNjYW4gUHJpbnQgQ29weQorCTAwMzAgIFNjYW4gUHJpbnQgQ29weQorCTAwMzEgIFNjYW4gUHJpbnQgQ29weQorCTAwMzIgIFNjYW4gUHJpbnQgQ29weQorCTAwMzMgIFNjYW4gUHJpbnQgQ29weQorCTAwMzQgIFNjYW4gUHJpbnQgQ29weQorCTAwMzUgIFNjYW4gUHJpbnQgQ29weQorCTAwMzYgIFNjYW4gUHJpbnQgQ29weQorCTAwMzcgIFNjYW4gUHJpbnQgQ29weQorCTAwMzggIFNjYW4gUHJpbnQgQ29weQorCTAwMzkgIFNjYW4gUHJpbnQgQ29weQorCTAwM2EgIFNjYW4gUHJpbnQgQ29weQorCTAwM2IgIFNjYW4gUHJpbnQgQ29weQorCTAwM2MgIFNjYW4gUHJpbnQgQ29weQorCTAwM2QgIFg4MyBTY2FuL1ByaW50L0NvcHkKKwkwMDNlICBTY2FuIFByaW50IENvcHkKKwkwMDNmICBTY2FuIFByaW50IENvcHkKKwkwMDQwICBTY2FuIFByaW50IENvcHkKKwkwMDQxICBTY2FuIFByaW50IENvcHkKKwkwMDQyICBTY2FuIFByaW50IENvcHkKKwkwMDQzICBTY2FuIFByaW50IENvcHkKKwkwMDQ0ICBTY2FuIFByaW50IENvcHkKKwkwMDQ1ICBTY2FuIFByaW50IENvcHkKKwkwMDQ2ICBTY2FuIFByaW50IENvcHkKKwkwMDQ3ICBTY2FuIFByaW50IENvcHkKKwkwMDQ4ICBTY2FuIFByaW50IENvcHkKKwkwMDQ5ICBTY2FuIFByaW50IENvcHkKKwkwMDRhICBTY2FuIFByaW50IENvcHkKKwkwMDRiICBTY2FuIFByaW50IENvcHkKKwkwMDRjICBTY2FuIFByaW50IENvcHkKKwkwMDRkICBMYXNlciBQcmludGVyCisJMDA0ZSAgTGFzZXIgUHJpbnRlcgorCTAwNGYgIElua0pldCBDb2xvciBQcmludGVyCisJMDA1MCAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDUxICBMYXNlciBQcmludGVyCisJMDA1MiAgTGFzZXIgUHJpbnRlcgorCTAwNTMgIElua0pldCBDb2xvciBQcmludGVyCisJMDA1NCAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDU3ICBaMzUgUHJpbnRlcgorCTAwNTggIExhc2VyIFByaW50ZXIKKwkwMDVhICBYNjMKKwkwMDVjICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwNjAgIFg3NC9YNzUgU2Nhbm5lcgorCTAwNjEgIFg3NCBIdWIKKwkwMDY1ICBYNTEzMAorCTAwNjkgIFg3NC9YNzUgUHJpbnRlcgorCTAwNmQgIFgxMjUKKwkwMDcyICBYNjE3MCBQcmludGVyCisJMDA3MyAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDc4ICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwNzkgIElua0pldCBDb2xvciBQcmludGVyCisJMDA3YSAgR2VuZXJpYyBIdWIKKwkwMDdiICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwN2MgIExleG1hcmsgWDExMTAvWDExMzAvWDExNDAvWDExNTAvWDExNzAvWDExODAvWDExODUKKwkwMDdkICBQaG90byAzMTUwCisJMDA4YSAgNDIwMCBzZXJpZXMKKwkwMDhiICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwOGMgIHRvIENGL1NNL1NEL01TIENhcmQgUmVhZGVyCisJMDA4ZSAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDhmICBYNDIyCisJMDA5MyAgWDUyNTAKKwkwMDk1ICBFMjIwIFByaW50ZXIKKwkwMDk2ICAyMjAwIHNlcmllcworCTAwOTcgIFA2MjUwCisJMDA5OCAgNzEwMCBzZXJpZXMKKwkwMDllICBQOTEwIHNlcmllcyBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlCisJMDA5ZiAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMGE5ICBJQk0gSW5mb3ByaW50IDE0MTAgTUZQCisJMDBhYiAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMGIyICAzMzAwIHNlcmllcworCTAwYjggIDczMDAgc2VyaWVzCisJMDBiOSAgODMwMCBzZXJpZXMKKwkwMGJhICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwYmIgIDIzMDAgc2VyaWVzCisJMDBiZCAgUHJpbnRpbmcgU3VwcG9ydAorCTAwYmUgIFByaW50aW5nIFN1cHBvcnQKKwkwMGJmICBQcmludGluZyBTdXBwb3J0CisJMDBjMCAgNjMwMCBzZXJpZXMKKwkwMGMxICA0MzAwIHNlcmllcworCTAwYzcgIFByaW50aW5nIFN1cHBvcnQKKwkwMGM4ICBQcmludGluZyBTdXBwb3J0CisJMDBjOSAgUHJpbnRpbmcgU3VwcG9ydAorCTAwY2IgIFByaW50aW5nIFN1cHBvcnQKKwkwMGQwICA5MzAwIHNlcmllcworCTAwZDMgIFgzNDAgU2Nhbm5lcgorCTAwZDQgIFgzNDJuIFNjYW5uZXIKKwkwMGQ1ICBQcmludGluZyBTdXBwb3J0CisJMDBkNiAgWDM0MCBTY2FubmVyCisJMDBlOCAgWDY0MmUKKwkwMGU5ICAyNDAwIHNlcmllcworCTAwZjYgIDM0MDAgc2VyaWVzCisJMDBmNyAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMGZmICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAxMGIgIDI1MDAgc2VyaWVzCisJMDEwZCAgMzUwMC00NTAwIHNlcmllcworCTAxMGYgIDY1MDAgc2VyaWVzCisJNDMwMyAgWGVyb3ggV29ya0NlbnRyZSBQcm8gNDEyCiswNDNlICBMRyBFbGVjdHJvbmljcyBVU0EsIEluYy4KKwk0MmJkICBGbGF0cm9uIDc5NUZUIFBsdXMgTW9uaXRvcgorCTRhNGQgIEZsYXRyb24gOTE1RlQgUGx1cyBNb25pdG9yCisJNzAwMSAgTUYtUEQxMDAgU291bCBEaWdpdGFsIE1QMyBQbGF5ZXIKKwk3MDEzICBNUDMgUGxheWVyCisJODQ4NCAgTFBDLVUzMCBXZWJjYW0gSUkKKwk4NTg1ICBMUEMtVUMzNSBXZWJjYW0KKwk4ODg4ICBFbGVjdHJvbmljcyBWQ1MgQ2FtZXJhIElJKExQQy1VMjApCisJOTgwMCAgUmVtb3RlIENvbnRyb2wgUmVjZWl2ZXJfaU1PTgorCTk4MDMgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJOTgwNCAgRE1CIFJlY2VpdmVyIENvbnRyb2wKKwk5YzAxICBMR0UgU3luYworMDQzZiAgUmFkaVN5cyBDb3JwLgorMDQ0MCAgRWl6byBOYW5hbyBDb3JwLgorMDQ0MSAgV2luYm9uZCBTeXN0ZW1zIExhYi4KKwkxNDU2ICBIdWIKKzA0NDIgIEVyaWNzc29uLCBJbmMuCisJYWJiYSAgQmx1ZXRvb3RoIERldmljZQorMDQ0MyAgR2F0ZXdheSwgSW5jLgorCTAwMGUgIE11bHRpbWVkaWEgS2V5Ym9hcmQKKwkwMDJlICBNaWxsZW5uaXVtIEtleWJvYXJkCiswNDQ1ICBMdWNlbnQgVGVjaG5vbG9naWVzLCBJbmMuCiswNDQ2ICBOTUIgVGVjaG5vbG9naWVzIENvcnAuCisJNjc4MSAgS2V5Ym9hcmQgd2l0aCBQUy8yIE1vdXNlIFBvcnQKKwk2NzgyICBLZXlib2FyZAorMDQ0NyAgTW9tZW50dW0gTWljcm9zeXN0ZW1zCiswNDRhICBTaGFtcm9jayBUZWNoLiBDby4sIEx0ZAorMDQ0YiAgV1NJCiswNDRjICBDQ0wvSVRSSQorMDQ0ZCAgU2llbWVucyBOaXhkb3JmIEFHCiswNDRlICBBbHBzIEVsZWN0cmljIENvLiwgTHRkCisJMTEwNCAgSmFwYW5lc2UgS2V5Ym9hcmQKKwkyMDAyICBNRC01NTAwIFByaW50ZXIKKwkyMDE0ICBCbHVldG9vdGggRGV2aWNlCisJMzAwMSAgVUdUWjQgQmx1ZXRvb3RoCisJMzAwMiAgQmx1ZXRvb3RoIERldmljZQorCTMwMDMgIEJsdWV0b290aCBEZXZpY2UKKwkzMDA0ICBCbHVldG9vdGggQWRhcHRlcgorCTMwMDUgIEludGVncmF0ZWQgQmx1ZXRvb3RoIERldmljZQorCTMwMDYgIEJsdWV0b290aCBBZGFwdGVyCisJMzAwNyAgQmx1ZXRvb3RoIENvbnRyb2xsZXIgKEFMUFMvVUdYKQorCTMwMGMgIEJsdWV0b290aCBDb250cm9sbGVyIChBTFBTL1VHUFo2KQorCTMwMGQgIEJsdWV0b290aCBDb250cm9sbGVyIChBTFBTL1VHUFo2KQorCTMwMTAgIEJsdWV0b290aCBBZGFwdGVyCisJZmZmZiAgQ29tcGFxIEJsdWV0b290aCBNdWx0aXBvcnQgTW9kdWxlCiswNDRmICBUaHJ1c3RNYXN0ZXIsIEluYy4KKwkwNDAwICBIT1RBUyBDb3VnYXIKKwlhMDAzICBSYWdlIDNEIEdhbWUgUGFkCisJYTAxYiAgUEstR1AzMDEgRHJpdmluZyBXaGVlbAorCWEwYTAgIFRvcCBHdW4gSm95c3RpY2sKKwlhMGExICBUb3AgR3VuIEpveXN0aWNrIChyZXYyKQorCWEwYTMgIEZ1c2lvbiBEaWdpdGFsIEdhbWVQYWQKKwlhMjAxICBQSy1HUDIwMSBQbGF5U3RpY2sKKwliMjAzICAzNjAgTW9kZW5hIFBybyBXaGVlbAorCWIzMDAgIEZpcmVzdG9ybSBEdWFsIFBvd2VyCisJYjMwNCAgRmlyZXN0b3JtIER1YWwgUG93ZXIKKwliMzA3ICB2aWJyYXRpbmcgVXBhZAorCWI2MDMgIGZvcmNlIGZlZWRiYWNrIFdoZWVsCisJYjYwNSAgZm9yY2UgZmVlZGJhY2sgUmFjaW5nIFdoZWVsCisJYjcwMCAgVGFjdGljYWxib2FyZAorMDQ1MCAgREZJLCBJbmMuCiswNDUxICBUZXhhcyBJbnN0cnVtZW50cywgSW5jLgorCTEyMzQgIEJsdWV0b290aCBEZXZpY2UKKwkxNDI4ICBIdWIKKwkxNDQ2ICBUVVNCMjA0MC8yMDcwIEh1YgorCTIwMzYgIFRVU0IyMDM2IEh1YgorCTIwNDYgIFRVU0IyMDQ2IEh1YgorCTIwNzcgIFRVU0IyMDc3IEh1YgorCTM0MTAgIFRVU0IzNDEwIE1pY3JvY29udHJvbGxlcgorCTNmMDIgIFNNQyBXU0tQMTAwIFdpLUZpIFBob25lCisJNTQwOSAgRnJvbnRpZXIgTGFicyBORVggSUErIERpZ2l0YWwgQXVkaW8gUGxheWVyCisJNjAwMCAgQVU1IEFEU0wgTW9kZW0gKHByZS1yZWVudW0pCisJNjAwMSAgQVU1IEFEU0wgTW9kZW0KKwk2MDYwICBSTkRJUy9CZVdBTiBBRFNMMisKKwk2MDcwICBSTkRJUy9CZVdBTiBBRFNMMisKKwk2MjVmICBUcmVrc3RvciBVU0ItU3RpY2sgMTIgQ1MtRCAxMiBHQgorCWRiYzAgIERldmljZSBCYXkgQ29udHJvbGxlcgorCWUwMDEgIEdyYXBoTGluaworCWUwMDQgIFRJLTg5IFRpdGFuaXVtIENhbGN1bGF0b3IKKwllMDA4ICBUSS04NCBQbHVzIFNpbHZlciBDYWxjdWxhdG9yCisJZjQzMCAgTVNQLUZFVDQzMFVJRiBKVEFHIFRvb2wKKwlmZmZmICBCbHVldG9vdGggRGV2aWNlCiswNDUyICBNaXRzdWJpc2hpIEVsZWN0cm9uaWNzIEFtZXJpY2EsIEluYy4KKwkwMDIxICBISUQgTW9uaXRvciBDb250cm9scworCTAwNTAgIERpYW1vbmQgUHJvIDkwMHUgQ1JUIE1vbml0b3IKKwkwMDUxICBJbnRlZ3JhdGVkIEh1YgorMDQ1MyAgQ01EIFRlY2hub2xvZ3kKKwk2NzgxICBOTUIgS2V5Ym9hcmQKKwk2NzgzICBDaGljb255IENvbXBvc2l0ZSBLZXlib2FyZAorMDQ1NCAgVm9iaXMgTWljcm9jb21wdXRlciBBRworMDQ1NSAgVGVsZW1hdGljcyBJbnRlcm5hdGlvbmFsLCBJbmMuCiswNDU2ICBBbmFsb2cgRGV2aWNlcywgSW5jLgorMDQ1NyAgU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgQ29ycC4KKwkwMTUwICBTdXBlciBUYWxlbnQgMUdCIEZsYXNoIERyaXZlCisJMDE1MSAgU3VwZXIgRmxhc2ggMUdCIC8gR1hUICA2NE1CIEZsYXNoIERyaXZlCisJMDE2MiAgU2lTMTYyIHVzYiBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTAxNjMgIDgwMi4xMSBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTU0MDEgIFdpcmVsZXNzIEFkYXB0ZXIgUk84MDIxMUdTLVVTQgorMDQ1OCAgS1lFIFN5c3RlbXMgQ29ycC4gKE1vdXNlIFN5c3RlbXMpCisJMDAwMSAgTW91c2UKKwkwMDAyICBHZW5pdXMgTmV0TW91c2UgUHJvCisJMDAwMyAgR2VuaXVzIE5ldFNjcm9sbCsKKwkwMDA2ICBFYXN5IE1vdXNlKyBVU0IoVVNCXFZpZF8wNDU4JlBpZDtfMDAwNikgTW91c2UKKwkwMDBiICBOZXRNb3VzZSBXaGVlbChQK1UpCisJMDAwYyAgVEFDT01BIEZpbmdlcnByaW50IFYxLjA2LjAxCisJMDAwZSAgVmlkZW9DQU0gV2ViCisJMDAxMyAgVEFDT01BIEZpbmdlcnByaW50IE1vdXNlIFYxLjA2LjAxCisJMDAxYSAgR2VuaXVzIFdlYlNjcm9sbCsKKwkwMDM2ICBQb2NrZXQgTW91c2UgTEUKKwkwMDRjICBTbGltc3RhciBQcm8gS2V5Ym9hcmQKKwkwMDU2ICBFcmdvIDMwMCBNb3VzZQorCTAwNTcgIEVuaGFuY2VkIEdhbWluZyBEZXZpY2UKKwkwMDU5ICBFbmhhbmNlZCBMYXNlciBEZXZpY2UKKwkwMDVhICBFbmhhbmNlZCBEZXZpY2UKKwkwMDViICBFbmhhbmNlZCBEZXZpY2UKKwkwMDVjICBFbmhhbmNlZCBMYXNlciBHYW1pbmcgRGV2aWNlCisJMDA1ZCAgRW5oYW5jZWQgRGV2aWNlCisJMDA2MSAgQmx1ZXRvb3RoIERvbmdsZQorCTAwODMgIEJsdWV0b290aCBEb25nbGUKKwkwMTAwICBFYXN5UGVuIFRhYmxldAorCTAxMDEgIEN1ZUNhdAorCTEwMDEgIEpveXN0aWNrCisJMTAwMiAgR2FtZSBQYWQKKwkxMDAzICBHZW5pdXMgVmlkZW9DYW0KKwkxMDA0ICBGbGlnaHQyMDAwIEYtMjMgSm95c3RpY2sKKwkxMDBhICBBYXNoaW1hIFRlY2hub2xvZ3kgVHJ1c3QgU2lnaHQgRmlnaHRlciBWaWJyYXRpb24gRmVlZGJhY2sgSm95c3RpY2sKKwkyMDAxICBDb2xvclBhZ2UtVml2aWQgUHJvIFNjYW5uZXIKKwkyMDA0ICBDb2xvclBhZ2UtSFI2IFYxIFNjYW5uZXIKKwkyMDA1ICBDb2xvclBhZ2UtSFI2L1ZpdmlkMworCTIwMDcgIENvbG9yUGFnZS1IUjYgVjIgU2Nhbm5lcgorCTIwMDggIENvbG9yUGFnZS1IUjYgVjIgU2Nhbm5lcgorCTIwMDkgIENvbG9yUGFnZS1IUjZBIFNjYW5uZXIKKwkyMDExICBDb2xvclBhZ2UtVml2aWQzeCBTY2FubmVyCisJMjAxMiAgUGx1c3RlayBTY2FubmVyCisJMjAxMyAgQ29sb3JQYWdlLUhSNyBTY2FubmVyCisJMjAxNCAgQ29sb3JQYWdlLVZpdmlkNAorCTIwMTUgIENvbG9yUGFnZS1IUjdMRSBTY2FubmVyCisJMjAxNiAgQ29sb3JQYWdlLUhSNlggU2Nhbm5lcgorCTIwMTcgIENvbG9yUGFnZS1WaXZpZDN4ZQorCTIwMTggIENvbG9yUGFnZS1IUjdYCisJMjAxOSAgQ29sb3JQYWdlLUhSNlggU2xpbQorCTIwMWEgIENvbG9yUGFnZS1WaXZpZDR4ZQorCTIwMWIgIENvbG9yUGFnZS1WaXZpZDR4CisJMjAxYyAgQ29sb3JQYWdlLUhSOAorCTIwMWQgIENvbG9yUGFnZS1WaXZpZCAxMjAwIFgKKwkyMDFlICBDb2xvclBhZ2UtU2xpbSAxMjAwCisJMjAxZiAgQ29sb3JQYWdlLVZpdmlkIDEyMDAgWEUKKwkyMDIwICBDb2xvclBhZ2UtU2xpbSAxMjAwIFVTQjIKKwkyMDIxICBDb2xvclBhZ2UtU0Y2MDAKKwkzMDFkICBHZW5pdXMgTWF4RmlyZSBNaW5pUGFkCisJNjAwMSAgR0YzMDAwRiBFdGhlcm5ldCBBZGFwdGVyCisJNzAwNCAgVmlkZW9DQU0gRXhwcmVzcyBWMgorCTcwMDYgIERzYyAxLjMgU21hcnQgQ2FtZXJhIERldmljZQorCTcwMDcgIFZpZGVvQ0FNIFdlYgorCTcwMDkgIEctU2hvdCBHMzEyIFN0aWxsIENhbWVyYSBEZXZpY2UKKwk3MDBjICBWaWRlb0NBTSBXZWIgVjMKKwk3MDBkICBHLVNob3QgRzUxMSBDb21wb3NpdGUgRGV2aWNlCisJNzAwZiAgVmlkZW9DQU0gV2ViCisJNzAxMiAgV2ViQ0FNIFVTQjIuMAorCTcwMTQgIFZpZGVvQ0FNIExpdmUgVjMKKwk3MDFjICBHLVNob3QgRzUxMiBTdGlsbCBDYW1lcmEKKwk3MDIwICBTaW0gMzIxQworCTcwMjUgIEV5ZSAzMTFRIENhbWVyYSBEZXZpY2UKKwk3MDRjICBHZW5pdXMgaS1Mb29rIDEzMjEKKwk3MDVhICBBc3VzIFVTQjIuMCBXZWJjYW0KKzA0NTkgIEFkb2JlIFN5c3RlbXMsIEluYy4KKzA0NWEgIFNPTklDYmx1ZSwgSW5jLgorCTA3ZGEgIFN1cHJhIEV4cHJlc3MgNTZLIG1vZGVtCisJMGI0YSAgU3VwcmFNYXggMjg5MCA1NksgTW9kZW0gW0x1Y2VudCBBdGxhc10KKwkwYjY4ICBTdXByYU1heCA1NksgTW9kZW0KKwk1MDAxICBSaW8gNjAwIE1QMyBQbGF5ZXIKKwk1MDAyICBSaW8gODAwIE1QMyBQbGF5ZXIKKwk1MDAzICBOaWtlIFBzYS9QbGF5IE1QMyBQbGF5ZXIKKwk1MDA1ICBSaW8gUzEwIE1QMyBQbGF5ZXIKKwk1MDA2ICBSaW8gUzUwIE1QMyBQbGF5ZXIKKwk1MDA3ICBSaW8gUzM1IE1QMyBQbGF5ZXIKKwk1MDA4ICBSaW8gOTAwIE1QMyBQbGF5ZXIKKwk1MDA5ICBSaW8gUzMwIE1QMyBQbGF5ZXIKKwk1MDBkICBGdXNlIE1QMyBQbGF5ZXIKKwk1MDBlICBDaGliYSBNUDMgUGxheWVyCisJNTAwZiAgQ2FsaSBNUDMgUGxheWVyCisJNTAxMCAgUmlvIFMxMSBNUDMgUGxheWVyCisJNTAxYyAgVmlyZ2luIE1QRi0xMDAwCisJNTAxZCAgUmlvIEZ1c2UKKwk1MDFlICBSaW8gQ2hpYmEKKwk1MDFmICBSaW8gQ2FsaQorCTUwM2YgIENhbGkyNTYgTVAzIFBsYXllcgorCTUyMDIgIFJpbyBSaW90IE1QMyBQbGF5ZXIKKwk1MjEwICBSaW8gS2FybWEgTXVzaWMgUGxheWVyCisJNTIyMCAgUmlvIE5pdHJ1cyBNUDMgUGxheWVyCisJNTIyMSAgUmlvIEVpZ2VuCiswNDViICBIaXRhY2hpLCBMdGQKKzA0NWQgIE5vcnRlbCBOZXR3b3JrcywgTHRkCiswNDVlICBNaWNyb3NvZnQgQ29ycC4KKwkwMDA3ICBTaWRlV2luZGVyIEdhbWUgUGFkCisJMDAwOCAgU2lkZVdpbmRlciBQcmVjaXNpb24gUHJvCisJMDAwOSAgSW50ZWxsaU1vdXNlCisJMDAwYiAgTmF0dXJhbCBLZXlib2FyZCBFbGl0ZQorCTAwMGUgIFNpZGVXaW5kZXLCriBGcmVlc3R5bGUgUHJvCisJMDAxNCAgRGlnaXRhbCBTb3VuZCBTeXN0ZW0gODAKKwkwMDFhICBTaWRlV2luZGVyIFByZWNpc2lvbiBSYWNpbmcgV2hlZWwKKwkwMDFiICBTaWRlV2luZGVyIEZvcmNlIEZlZWRiYWNrIDIgSm95c3RpY2sKKwkwMDFjICBJbnRlcm5ldCBLZXlib2FyZCBQcm8KKwkwMDFkICBOYXR1cmFsIEtleWJvYXJkIFBybworCTAwMWUgIEludGVsbGlNb3VzZSBFeHBsb3JlcgorCTAwMjMgIFRyYWNrYmFsbCBPcHRpY2FsCisJMDAyNCAgVHJhY2tiYWxsIEV4cGxvcmVyCisJMDAyNSAgSW50ZWxsaUV5ZSBNb3VzZQorCTAwMjYgIFNpZGVXaW5kZXIgR2FtZVBhZCBQcm8KKwkwMDI3ICBTaWRlV2luZGVyIFBuUCBHYW1lUGFkCisJMDAyOCAgU2lkZVdpbmRlciBEdWFsIFN0cmlrZQorCTAwMjkgIEludGVsbGlNb3VzZSBPcHRpY2FsCisJMDAyYiAgSW50ZXJuZXQgS2V5Ym9hcmQgUHJvCisJMDAyZCAgSW50ZXJuZXQgS2V5Ym9hcmQKKwkwMDJmICBJbnRlZ3JhdGVkIEh1YgorCTAwMzMgIFNpZGV3aW5kZXIgU3RyYXRlZ2ljIENvbW1hbmRlcgorCTAwMzQgIFNpZGVXaW5kZXIgRm9yY2UgRmVlZGJhY2sgV2hlZWwKKwkwMDM4ICBTaWRlV2luZGVyIFByZWNpc2lvbiAyCisJMDAzOSAgSW50ZWxsaU1vdXNlIE9wdGljYWwKKwkwMDNiICBTaWRlV2luZGVyIEdhbWUgVm9pY2UKKwkwMDNjICBTaWRlV2luZGVyIEpveXN0aWNrCisJMDA0MCAgV2hlZWwgTW91c2UgT3B0aWNhbAorCTAwNDcgIEludGVsbGlNb3VzZSBFeHBsb3JlciAzLjAKKwkwMDQ4ICBPZmZpY2UgS2V5Ym9hcmQgMS4wQQorCTAwNTMgIE9wdGljYWwgTW91c2UKKwkwMDU5ICBXaXJlbGVzcyBJbnRlbGxpTW91c2UgRXhwbG9yZXIKKwkwMDVjICBPZmZpY2UgS2V5Ym9hcmQgKDEwNi8xMDkpCisJMDA1ZiAgV2lyZWxlc3MgTXVsdGlNZWRpYSBLZXlib2FyZAorCTAwNjEgIFdpcmVsZXNzIE11bHRpTWVkaWEgS2V5Ym9hcmQgKDEwNi8xMDkpCisJMDA2MyAgV2lyZWxlc3MgTmF0dXJhbCBNdWx0aU1lZGlhIEtleWJvYXJkCisJMDA2NSAgV2lyZWxlc3MgTmF0dXJhbCBNdWx0aU1lZGlhIEtleWJvYXJkICgxMDYvMTA5KQorCTAwNmEgIFdpcmVsZXNzIE9wdGljYWwgTW91c2UgKEludGVsbGlQb2ludCkKKwkwMDZkICBlSG9tZSBSZW1vdGUgQ29udHJvbCBLZXlib2FyZCBrZXlzCisJMDA2ZSAgTU41MTAgODAyLjExYiBBZGFwdGVyCisJMDA2ZiAgU21hcnQgRGlzcGxheSBSZWZlcmVuY2UgRGV2aWNlCisJMDA3MCAgV2lyZWxlc3MgTXVsdGlNZWRpYSBLZXlib2FyZAorCTAwNzEgIFdpcmVsZXNzIE11bHRpTWVkaWEgS2V5Ym9hcmQgKDEwNi8xMDkpCisJMDA3MiAgV2lyZWxlc3MgTmF0dXJhbCBNdWx0aU1lZGlhIEtleWJvYXJkCisJMDA3MyAgV2lyZWxlc3MgTmF0dXJhbCBNdWx0aU1lZGlhIEtleWJvYXJkICgxMDYvMTA5KQorCTAwN2EgIDEwLzEwMCBVU0IgTklDCisJMDA3ZCAgTm90ZWJvb2sgT3B0aWNhbCBNb3VzZQorCTAwN2UgIFdpcmVsZXNzIFRyYW5zY2VpdmVyIGZvciBCbHVldG9vdGgKKwkwMDgwICBEaWdpdGFsIE1lZGlhIFBybyBLZXlib2FyZAorCTAwODMgIEJhc2ljIE9wdGljYWwgTW91c2UKKwkwMDg0ICBCYXNpYyBPcHRpY2FsIE1vdXNlCisJMDA4YSAgV2lyZWxlc3MgS2V5Ym9hcmQgYW5kIE1vdXNlCisJMDA4YiAgRHVhbCBSZWNlaXZlciBXaXJlbGVzcyBNb3VzZSAoSW50ZWxsaVBvaW50KQorCTAwOGMgIFdpcmVsZXNzIEludGVsbGltb3VzZSBFeHBsb3JlciAyLjAKKwkwMDk1ICBJbnRlbGxpTW91c2UgRXhwbG9yZXIgNC4wIChJbnRlbGxpUG9pbnQpCisJMDA5YyAgV2lyZWxlc3MgVHJhbnNjZWl2ZXIgZm9yIEJsdWV0b290aCAyLjAKKwkwMGEwICBlSG9tZSBJbmZyYXJlZCBSZWNlaXZlcgorCTAwYjAgIERpZ2l0YWwgTWVkaWEgUHJvIEtleWJvYXJkCisJMDBiOSAgV2lyZWxlc3MgT3B0aWNhbCBNb3VzZSAzLjAKKwkwMGJiICBGaW5nZXJwcmludCBSZWFkZXIKKwkwMGJjICBGaW5nZXJwcmludCBSZWFkZXIKKwkwMGJkICBGaW5nZXJwcmludCBSZWFkZXIKKwkwMGMyICBXaXJlbGVzcyBBZGFwdGVyIE1OLTcxMAorCTAwYzkgIE1UUCBEZXZpY2UKKwkwMGNlICBHZW5lcmljIFBQQyBGbGFzaCBkZXZpY2UKKwkwMGQxICBPcHRpY2FsIE1vdXNlIHdpdGggVGlsdCBXaGVlbAorCTAwZGEgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJMDBkYiAgTmF0dXJhbCBFcmdvbm9taWMgS2V5Ym9hcmQgNDAwMCBWMS4wCisJMDBlMSAgV2lyZWxlc3MgTGFzZXIgTW91c2UgNjAwMCBSZWNpZXZlcgorCTAwZjQgIExpZmVDYW0gVlgtNjAwMCAoU045QzIweCArIE9WOTY1MCkKKwkwMGY1ICBMaWZlQ2FtIFZYLTMwMDAKKwkwMGY3ICBMaWZlQ2FtIFZYLTEwMDAKKwkwMGY4ICBMaWZlQ2FtIE5YLTYwMDAKKwkwMjAyICBYYm94IENvbnRyb2xsZXIKKwkwMjgwICBYQm94IERldmljZQorCTAyODQgIFhib3ggRFZEIFBsYXliYWNrIEtpdAorCTAyODUgIFhib3ggQ29udHJvbGxlciBTCisJMDI4OCAgWGJveCBDb250cm9sbGVyIFMgSHViCisJMDI4OSAgWGJveCBDb250cm9sbGVyIFMKKwkwMjhiICBYYm94MzYwIERWRCBFbXVsYXRvcgorCTAyOGQgIFhib3gzNjAgTWVtb3J5IFVuaXQgNjRNQgorCTAyOGUgIFhib3gzNjAgQ29udHJvbGxlcgorCTAyOGYgIFhib3gzNjAgV2lyZWxlc3MgQ29udHJvbGxlcgorCTAyOTAgIFhib3gzNjAgUGVyZm9ybWFuY2UgUGlwZSAoUElYKQorCTAyOTIgIFhib3gzNjAgV2lyZWxlc3MgTmV0d29ya2luZyBBZGFwdGVyCisJMDI5YyAgWGJveDM2MCBIRC1EVkQgRHJpdmUKKwkwMjlkICBYYm94MzYwIEhELURWRCBEcml2ZQorCTAyOWUgIFhib3gzNjAgSEQtRFZEIE1lbW9yeSBVbml0CisJMDQwMCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwMSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwMiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwMyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwNCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwNSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwNiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwNyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwOCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwOSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwYSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwYiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwYyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwZCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwZSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQwZiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxMCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxMSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxMiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxMyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxNCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxNSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxNiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQxNyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAyCisJMDQzMiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzMyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzNCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzNSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzNiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzNyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzOCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzOSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzYSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzYiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzYyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzZCAgQmVja2VyIFRyYWZmaWMgQXNzaXN0IEhpZ2hzcGVlZCA3OTM0CisJMDQzZSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQzZiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0MCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0MSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0MiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0MyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0NCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0NSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0NiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0NyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0OCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0OSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0YSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0YiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0YyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0ZCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0ZSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ0ZiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1MCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1MSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1MiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1MyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1NCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1NSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1NiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1NyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1OCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1OSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1YSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1YiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1YyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1ZCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1ZSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ1ZiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2MCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2MSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2MiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2MyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2NCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2NSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2NiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2NyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2OCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2OSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2YSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2YiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2YyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2ZCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2ZSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ2ZiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3MCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3MSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3MiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3MyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3NCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3NSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3NiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3NyAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3OCAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3OSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3YSAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDQ3YiAgV2luZG93cyBQb3dlcmVkIFBvY2tldCBQQyAyMDAzCisJMDRjOCAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMgorCTA0YzkgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDIKKwkwNGNhICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAyCisJMDRjYiAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMgorCTA0Y2MgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDIKKwkwNGNkICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAyCisJMDRjZSAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMgorCTA0ZDcgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGQ4ICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDRkOSAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMworCTA0ZGEgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGRiICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDRkYyAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMworCTA0ZGQgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGRlICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDRkZiAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMworCTA0ZTAgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGUxICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDRlMiAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMworCTA0ZTMgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGU0ICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDRlNSAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMworCTA0ZTYgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGU3ICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDRlOCAgV2luZG93cyBQb3dlcmVkIFNtYXJ0cGhvbmUgMjAwMworCTA0ZTkgIFdpbmRvd3MgUG93ZXJlZCBTbWFydHBob25lIDIwMDMKKwkwNGVhICBXaW5kb3dzIFBvd2VyZWQgU21hcnRwaG9uZSAyMDAzCisJMDcwOCAgVHJhbnNjZWl2ZXIgdiAzLjAgZm9yIEJsdWV0b290aAorCTA3MGEgIENoYXJvbiBCbHVldG9vdGggRG9uZ2xlIChERlUpCisJMDcyMSAgTGlmZUNhbSBOWC0zMDAwIChVVkMtY29tcGxpYW50KQorCTA3MjMgIExpZmVDYW0gVlgtNzAwMCAoVVZDLWNvbXBsaWFudCkKKwkwNzM0ICBXaXJlbGVzcyBPcHRpY2FsIERlc2t0b3AgNzAwCisJOTMwYSAgSVNPVVNCLlNZUyBJbnRlbCA4MjkzMCBJc29jaHJvbm91cyBJTyBUZXN0IEJvYXJkCisJZmZmOCAgS2V5Ym9hcmQKKzA0NjAgIEFjZSBDYWQgRW50ZXJwcmlzZSBDby4sIEx0ZAorMDQ2MSAgUHJpbWF4IEVsZWN0cm9uaWNzLCBMdGQKKwkwMzAwICBHMi0zMDAgU2Nhbm5lcgorCTAzMDEgIEcyRS0zMDAgU2Nhbm5lcgorCTAzMDIgIEcyLTMwMCAjMiBTY2FubmVyCisJMDMwMyAgRzJFLTMwMCAjMiBTY2FubmVyCisJMDM0MCAgQ29sb3JhZG8gOTYwMCBTY2FubmVyCisJMDM0MSAgQ29sb3JhZG8gNjAwdSBTY2FubmVyCisJMDM0NSAgVmlzaW9uZWVyIDYyMDAgU2Nhbm5lcgorCTAzNDYgIE1lbW9yZXggTWF4eCA2MTM2dSBTY2FubmVyCisJMDM0NyAgUHJpbWFzY2FuIENvbG9yYWRvIDI2MDB1L1Zpc2lvbmVlciA0NDAwIFNjYW5uZXIKKwkwMzYwICBDb2xvcmFkbyAxOTIwMCBTY2FubmVyCisJMDM2MSAgQ29sb3JhZG8gMTIwMHUgU2Nhbm5lcgorCTAzNjMgIFZpc3RhU2NhbiBBc3RyYSAzNjAwKEVORykKKwkwMzY0ICBMRyBFbGVjdHJvbmljcyBTY2Fud29ya3MgNjAwVSBTY2FubmVyCisJMDM2NSAgVmlzdGFTY2FuIEFzdHJhIDM2MDAoRU5HKQorCTAzNjYgIDY0MDAKKwkwMzY3ICBWaXN0YVNjYW4gQXN0cmEgMzYwMChFTkcpCisJMDM3MSAgVmlzaW9uZWVyIE9uZXRvdWNoIDg5MjAgU2Nhbm5lcgorCTAzNzQgIFVNQVggQXN0cmEgMjUwMAorCTAzNzUgIFZpc3RhU2NhbiBBc3RyYSAzNjAwKEVORykKKwkwMzc3ICBNZWRpb24gTUQgNTM0NSBTY2FubmVyCisJMDM3OCAgVmlzdGFTY2FuIEFzdHJhIDM2MDAoRU5HKQorCTAzN2IgIE1lZGlvbiBNRCA2MTkwIFNjYW5uZXIKKwkwMzdjICBWaXN0YVNjYW4gQXN0cmEgMzYwMChFTkcpCisJMDM4MCAgRzItNjAwIFNjYW5uZXIKKwkwMzgxICBSZWFkeVNjYW4gNjM2aSBTY2FubmVyCisJMDM4MiAgRzItNjAwICMyIFNjYW5uZXIKKwkwMzgzICBHMkUtNjAwIFNjYW5uZXIKKwkwMzhhICBVTUFYIEFzdHJhIDMwMDAvMzYwMAorCTAzOGIgIFhlcm94IDI0MDAgT25ldG91Y2gKKwkwMzhjICBVTUFYIEFzdHJhIDQxMDAKKwkwMzkyICBNZWRpb24vTGlmZXRlYy9UZXZpb24vQ3l0cm9uIE1EIDYxOTAKKwkwM2E4ICA5NDIwTQorCTA4MTMgIElCTSBVbHRyYVBvcnQgQ2FtZXJhCisJMDgxNSAgTWljcm8gSW5ub3ZhdGlvbnMgSUMyMDAgV2ViY2FtCisJMDgxOSAgRnVqaWZpbG0gSVgtMzAgQ2FtZXJhIFt3ZWJjYW0gbW9kZV0KKwkwODFhICBGdWppZmlsbSBJWC0zMCBDYW1lcmEgW3N0b3JhZ2UgbW9kZV0KKwkwODFjICBFbGl0ZWdyb3VwIEVDUy1DMTEgQ2FtZXJhCisJMDgxZCAgRWxpdGVncm91cCBFQ1MtQzExIFN0b3JhZ2UKKwkwYTAwICBNaWNybyBJbm5vdmF0aW9ucyBXZWIgQ2FtIDMyMAorCTRkMDEgIENvbWZvcnQgS2V5Ym9hcmQKKwk0ZDAyICBNb3VzZS1pbi1hLUJveAorCTRkMDMgIEtlbnNpbmd0b24gTW91c2UtaW4tYS1ib3gKKwk0ZDA0ICBNb3VzZQorCTRkMDYgIEJhbGxlc3MgTW91c2UgKEhJRCkKKwk0ZDE1ICBEZWxsIE9wdGljYWwgTW91c2UKKwk0ZDE3ICBPcHRpY2FsIE1vdXNlCisJNGQyYSAgUG9QbyBFbGl4aXIgTW91c2UgKEhJRCkKKwk0ZDJiICBXaXJlbGVzcyBMYXNlciBNaW5pIE1vdXNlIChISUQpCisJNGQyYyAgUG9QbyBNaW5pIFBvaW50ZXIgTW91c2UgKEhJRCkKKwk0ZDJlICBPcHRpY2FsIE1vYmlsZSBNb3VzZSAoSElEKQorMDQ2MyAgTUdFIFVQUyBTeXN0ZW1zCisJMDAwMSAgVVBTCisJZmZmZiAgVVBTCiswNDY0ICBBTVAvVHljb2VsZWN0cm9uaWNzIENvcnAuCiswNDY3ICBBVCZUIFBhcmFkeW5lCiswNDY4ICBXaWVzb24gVGVjaG5vbG9naWVzIENvLiwgTHRkCiswNDZhICBDaGVycnkgR21iSAorCTAwMDEgIE15MzAwMCBLZXlib2FyZAorCTAwMDMgIE15MzAwMCBIdWIKKwkwMDA0ICBDeUJvYXJkIEtleWJvYXJkCisJMDAwNSAgWFgzMyBTbWFydENhcmQgUmVhZGVyIEtleWJvYXJkCisJMDAxMCAgU21hcnRCb2FyZCBYWDQ0CisJMDAxMSAgRzgzIChSUyA2MDAwKSBLZXlib2FyZAorCTAwMjMgIEN5TW90aW9uIE1hc3RlciBMaW51eCBLZXlib2FyZAorCTAwMjcgIEN5TW90aW9uIE1hc3RlciBTb2xhciBLZXlib2FyZAorCTAwMmEgIFdpcmVsZXNzIE1vdXNlICYgS2V5Ym9hcmQKKwkwMDJkICBTbWFydFRlcm1pbmFsIFhYNDQKKwkwMDNlICBTbWFydFRlcm1pbmFsIFNULTJ4eHgKKzA0NmIgIEFtZXJpY2FuIE1lZ2F0cmVuZHMsIEluYy4KKwkwMDAxICBLZXlib2FyZAorCTAxMDEgIFBTLzIgS2V5Ym9hcmQsIE1vdXNlICYgSm95c3RpY2sgUG9ydHMKKwkwMzAxICBVU0IgMS4wIEh1YgorCTA1MDAgIFNlcmlhbCAmIFBhcmFsbGVsIFBvcnRzCiswNDZjICBUb3NoaWJhIENvcnAuLCBEaWdpdGFsIE1lZGlhIEVxdWlwbWVudAorMDQ2ZCAgTG9naXRlY2gsIEluYy4KKwkwMDgyICBBY2VyIEFzcGlyZSA1NjcyIFdlYmNhbQorCTAyMDAgIFdpbmdNYW4gRXh0cmVtZSBKb3lzdGljaworCTAyMDMgIE0yNDUyIEtleWJvYXJkCisJMDMwMSAgTTQ4NDggTW91c2UKKwkwNDAxICBIUCBQYWdlU2NhbgorCTA0MDIgIE5FQyBQYWdlU2NhbgorCTA0MGYgIExvZ2l0ZWNoL1N0b3JtIFBhZ2VTY2FuCisJMDQzMCAgTWljIChDb3JkbGVzcykKKwkwODAxICBRdWlja0NhbSBIb21lCisJMDgxMCAgUXVpY2tDYW0gUHJvCisJMDgyMCAgUXVpY2tDYW0gVkMKKwkwODMwICBRdWlja0NsaXAKKwkwODQwICBRdWlja0NhbSBFeHByZXNzCisJMDg1MCAgUXVpY2tDYW0gV2ViCisJMDg3MCAgUXVpY2tDYW0gRXhwcmVzcworCTA4OTAgIFF1aWNrQ2FtIFRyYXZlbGVyCisJMDg5MiAgT3JiaUNhbQorCTA4OTQgIENyeXN0YWxDYW0KKwkwODk1ICBRdWlja0NhbSBmb3IgRGVsbCBOb3RlYm9va3MKKwkwODk2ICBPcmJpQ2FtCisJMDg5NyAgUXVpY2tDYW0gZm9yIERlbGwgTm90ZWJvb2tzCisJMDg5OSAgUXVpY2tDYW0gZm9yIERlbGwgTm90ZWJvb2tzCisJMDg5ZCAgUXVpY2tDYW0gRTI1MDAgc2VyaWVzCisJMDhhMCAgUXVpY2tDYW0gSU0KKwkwOGExICBRdWlja0NhbSBJTSB3aXRoIHNvdW5kCisJMDhhMiAgTGFidGVjIFdlYmNhbSBQcm8KKwkwOGEzICBRdWlja0NhbSBRdWlja0NhbSBDaGF0CisJMDhhNiAgUXVpY2tDYW0gSU0KKwkwOGE3ICBRdWlja0NhbSBJbWFnZQorCTA4YTkgIE5vdGVib29rIERlbHV4ZQorCTA4YWEgIExhYnRlYyBOb3RlYm9va3MKKwkwOGFjICBRdWlja0NhbSBDb29sCisJMDhhZCAgUXVpY2tDYW0gQ29tbXVuaWNhdGUgU1RYCisJMDhhZSAgUXVpY2tDYW0gZm9yIE5vdGVib29rcworCTA4YWYgIFF1aWNrQ2FtIEVhc3kvQ29vbAorCTA4YjAgIFF1aWNrQ2FtIDMwMDAgUHJvIFtwd2NdCisJMDhiMSAgUXVpY2tDYW0gTm90ZWJvb2sgUHJvCisJMDhiMiAgUXVpY2tDYW0gUHJvIDQwMDAKKwkwOGIzICBRdWlja0NhbSBab29tCisJMDhiNCAgUXVpY2tDYW0gWm9vbQorCTA4YjUgIFF1aWNrQ2FtIFNwaGVyZQorCTA4YjkgIFF1aWNrQ2FtIElNCisJMDhiZCAgTWljcm9waG9uZSAoUHJvIDQwMDApCisJMDhjMCAgUXVpY2tDYW0gUHJvIDMwMDAKKwkwOGMxICBRdWlja0NhbSBGdXNpb24KKwkwOGMyICBRdWlja0NhbSBQVFoKKwkwOGMzICBDYW1lcmEgKE5vdGVib29rcyBQcm8pCisJMDhjNSAgUXVpY2tDYW0gUHJvIDUwMDAKKwkwOGM2ICBRdWlja0NhbSBmb3IgREVMTCBOb3RlYm9va3MKKwkwOGM3ICBRdWlja0NhbSBPRU0gQ2lzY28gVlQgQ2FtZXJhIElJCisJMDhjOSAgUXVpY2tDYW0gVWx0cmEgVmlzaW9uCisJMDhjYSAgTWljIChGdXNpb24pCisJMDhjYiAgTWljIChOb3RlYm9va3MgUHJvKQorCTA4Y2MgIE1pYyAoUFRaKQorCTA4Y2UgIFF1aWNrQ2FtIFBybyA1MDAwCisJMDhjZiAgUXVpY2tDYW0gVXBkYXRlTWUKKwkwOGQwICBRdWlja0NhbSBFeHByZXNzCisJMDhkNyAgUXVpY2tDYW0gQ29tbXVuaWNhdGUgU1RYCisJMDhkOCAgUXVpY2tDYW0gZm9yIE5vdGVib29rIERlbHV4ZQorCTA4ZDkgIFF1aWNrQ2FtIElNL0Nvbm5lY3QKKwkwOGRhICBRdWlja0NhbSBNZXNzYW5nZXIKKwkwOGRkICBRdWlja0NhbSBmb3IgTm90ZWJvb2tzCisJMDhlMCAgUXVpY2tDYW0gRXhwcmVzcworCTA4ZTEgIExhYnRlYyBXZWJjYW0KKwkwOGYwICBRdWlja0NhbSBNZXNzZW5nZXIKKwkwOGYxICBRdWlja0NhbSBFeHByZXNzCisJMDhmMiAgTWljcm9waG9uZSAoTWVzc2VuZ2VyKQorCTA4ZjMgIFF1aWNrQ2FtIEV4cHJlc3MKKwkwOGY0ICBMYWJ0ZWMgV2ViY2FtCisJMDhmNSAgUXVpY2tDYW0gTWVzc2VuZ2VyIENvbW11bmljYXRlCisJMDhmNiAgUXVpY2tDYW0gTWVzc2VuZ2VyIFBsdXMKKwkwOTAwICBDbGlja1NtYXJ0IDMxMAorCTA5MDEgIENsaWNrU21hcnQgNTEwCisJMDkwMyAgQ2xpY2tTbWFydCA4MjAKKwkwOTA1ICBDbGlja1NtYXJ0IDgyMAorCTA5MTAgIFF1aWNrQ2FtIENvcmRsZXNzCisJMDkyMCAgUXVpY2tDYW0gRXhwcmVzcworCTA5MjEgIExhYnRlYyBXZWJjYW0KKwkwOTIyICBRdWlja0NhbSBMaXZlCisJMDkyOCAgUXVpY2tDYW0gRXhwcmVzcworCTA5MjkgIExhYnRlYyBXZWJjYW0gUHJvCisJMDkyYSAgUXVpY2tDYW0gZm9yIE5vdGVib29rcworCTA5MmIgIExhYnRlYyBXZWJjYW0gUGx1cworCTA5MmMgIFF1aWNrQ2FtIENoYXQKKwkwOTJkICBRdWlja0NhbSBFeHByZXNzIC8gR28KKwkwOTJlICBRdWlja0NhbSBDaGF0CisJMDkyZiAgUXVpY2tDYW0gRXhwcmVzcyBQbHVzCisJMDk1MCAgUG9ja2V0IENhbWVyYQorCTA5NjAgIENsaWNrU21hcnQgNDIwCisJMDk3MCAgUG9ja2V0NzUwCisJMDk5MCAgUXVpY2tDYW0gUHJvIDkwMDAKKwkwOTkxICBRdWlja0NhbSBQcm8gZm9yIE5vdGVib29rcworCTA5OTIgIFF1aWNrQ2FtIENvbW11bmljYXRlIERlbHV4ZQorCTA5OTQgIFF1aWNrQ2FtIE9yYml0L1NwaGVyZSBBRgorCTA5YTEgIFF1aWNrQ2FtIENvbW11bmljYXRlIE1QL1M1NTAwCisJMDlhMiAgUXVpY2tDYW0gQ29tbXVuaWNhdGUgRGVsdXhlL1M3NTAwCisJMDlhNCAgUXVpY2tDYW0gRSAzNTAwCisJMDlhNiAgUXVpY2tDYW0gVmlzaW9uIFBybworCTA5YjAgIEFjZXIgT3JiaUNhbQorCTA5YjIgIEZ1aml0c3UgV2ViY2FtCisJMDljMCAgUXVpY2tDYW0gZm9yIERlbGwgTm90ZWJvb2tzIE1pYworCTA5YzEgIFF1aWNrQ2FtIERlbHV4ZSBmb3IgTm90ZWJvb2tzCisJMGEwMSAgVVNCIEhlYWRzZXQKKwkwYTAyICBQcmVtaXVtIFN0ZXJlbyBVU0IgSGVhZHNldCAzNTAKKwkwYTAzICBMb2dpdGVjaCBVU0IgTWljcm9waG9uZQorCTBhMDQgIFYyMCBwb3J0YWJsZSBzcGVha2VycyAoVVNCIHBvd2VyZWQpCisJMGIwMiAgQlQgTWluaS1SZWNlaXZlciAoSElEIHByb3h5IG1vZGUpCisJODgwMSAgVmlkZW8gQ2FtZXJhCisJYjMwNSAgQlQgTWluaS1SZWNlaXZlcgorCWJmZTQgIFByZW1pdW0gT3B0aWNhbCBXaGVlbCBNb3VzZQorCWMwMDAgIE40MyBbUGlsb3QgTW91c2VdCisJYzAwMSAgTjQ4L00tQkI0OCBbRmlyc3RNb3VzZSBQbHVzXQorCWMwMDIgIE0tQkE0NyBbTW91c2VNYW4gUGx1c10KKwljMDAzICBNb3VzZU1hbgorCWMwMDQgIFdpbmdNYW4gR2FtaW5nIE1vdXNlCisJYzAwNSAgV2luZ01hbiBHYW1pbmcgV2hlZWwgTW91c2UKKwljMDBiICBNb3VzZU1hbiBXaGVlbAorCWMwMGMgIE9wdGljYWwgV2hlZWwgTW91c2UKKwljMDBkICBNb3VzZU1hbiBXaGVlbCsKKwljMDBlICBNLUJKNTgvTS1CSjY5IE9wdGljYWwgV2hlZWwgTW91c2UKKwljMDBmICBNb3VzZU1hbiBUcmF2ZWxlci9Nb2JpbGUKKwljMDExICBPcHRpY2FsIE1vdXNlTWFuCisJYzAxMiAgTW91c2VtYW4gRHVhbCBPcHRpY2FsCisJYzAxNCAgQ29yZGVkIFdvcmtzdGF0aW9uIE1vdXNlCisJYzAxNSAgQ29yZGVkIFdvcmtzdGF0aW9uIE1vdXNlCisJYzAxNiAgTS1VVjY5YS9IUCBNLVVWOTYgT3B0aWNhbCBXaGVlbCBNb3VzZQorCWMwMTggIE9wdGljYWwgV2hlZWwgTW91c2UKKwljMDE5ICBPcHRpY2FsIFRpbHQgV2hlZWwgTW91c2UKKwljMDFhICBNLUJRODUgT3B0aWNhbCBXaGVlbCBNb3VzZQorCWMwMWIgIE1YMzEwIE9wdGljYWwgTW91c2UKKwljMDFjICBPcHRpY2FsIE1vdXNlCisJYzAxZCAgTVg1MTAgT3B0aWNhbCBNb3VzZQorCWMwMWUgIE1YNTE4IE9wdGljYWwgTW91c2UKKwljMDI0ICBNWDMwMCBPcHRpY2FsIE1vdXNlCisJYzAyNSAgTVg1MDAgT3B0aWNhbCBNb3VzZQorCWMwMzAgIGlGZWVsIE1vdXNlCisJYzAzMSAgaUZlZWwgTW91c2UrCisJYzAzMiAgTW91c2VNYW4gaUZlZWwKKwljMDMzICBpRmVlbCBNb3VzZU1hbisKKwljMDM0ICBNb3VzZU1hbiBPcHRpY2FsCisJYzAzNSAgTW91c2UKKwljMDM2ICBNb3VzZQorCWMwMzcgIE1vdXNlCisJYzAzOCAgTW91c2UKKwljMDNkICBNLUJUOTZhIFBpbG90IE9wdGljYWwgTW91c2UKKwljMDNlICBQcmVtaXVtIE9wdGljYWwgV2hlZWwgTW91c2UKKwljMDNmICBVbHRyYVggT3B0aWNhbCBNb3VzZQorCWMwNDAgIENvcmRlZCBUaWx0LVdoZWVsIE1vdXNlCisJYzA0MSAgRzUgTGFzZXIgTW91c2UKKwljMDQzICBNWDMyMC9NWDQwMCBMYXNlciBNb3VzZQorCWMwNDQgIExYMyBPcHRpY2FsIE1vdXNlCisJYzA0NSAgT3B0aWNhbCBNb3VzZQorCWMwNDYgIFJYMTAwMCBMYXNlciBNb3VzZQorCWMwNDcgIExhc2VyIE1vdXNlCisJYzA0OSAgRzUgTGFzZXIgTW91c2UKKwljMDUwICBSWCAyNTAgT3B0aWNhbCBNb3VzZQorCWMwNTEgIEczIChNWDUxOCkgT3B0aWNhbCBNb3VzZQorCWMwNTMgIExhc2VyIE1vdXNlCisJYzEwMSAgVWx0cmFYIE1lZGlhIFJlbW90ZQorCWMyMDEgIFdpbmdNYW4gRXh0cmVtZSBKb3lzdGljayB3aXRoIFRocm90dGxlCisJYzIwMiAgV2luZ01hbiBGb3JtdWxhCisJYzIwNyAgV2luZ01hbiBFeHRyZW1lIERpZ2l0YWwgM0QKKwljMjA4ICBXaW5nTWFuIEdhbWVwYWQgRXh0cmVtZQorCWMyMDkgIFdpbmdNYW4gR2FtZXBhZAorCWMyMGEgIFdpbmdNYW4gUnVtYmxlUGFkCisJYzIwYiAgV2luZ01hbiBBY3Rpb24gUGFkCisJYzIwYyAgV2luZ01hbiBQcmVjaXNpb24KKwljMjBkICBXaW5nTWFuIEF0dGFjayAyCisJYzIwZSAgV2luZ01hbiBGb3JtdWxhIEdQCisJYzIxMSAgaVRvdWNoIENvcmRsZXNzIFJlY2lldmVyCisJYzIxMiAgV2luZ01hbiBFeHRyZW1lIERpZ2l0YWwgM0QKKwljMjEzICBKLVVIMTYgKEZyZWVkb20gMi40IENvcmRsZXNzIEpveXN0aWNrKQorCWMyMTQgIEFUSzMgKEF0dGFjayBJSUkgSm95c3RpY2spCisJYzIxNSAgRXh0cmVtZSAzRCBQcm8KKwljMjE2ICBEdWFsIEFjdGlvbiBHYW1lcGFkCisJYzIxOCAgTG9naXRlY2ggUnVtYmxlUGFkIDIgVVNCCisJYzIxOSAgQ29yZGxlc3MgUnVtYmxlUGFkIDIKKwljMjFhICBQcmVjaXNpb24gR2FtZXBhZAorCWMyMjEgIEcxNSBLZXlib2FyZCAvIEtleWJvYXJkCisJYzIyMiAgRzE1IEtleWJvYXJkIC8gTENECisJYzIyMyAgRzE1IEtleWJvYXJkIC8gVVNCIEh1YgorCWMyODEgIFdpbmdNYW4gRm9yY2UKKwljMjgzICBXaW5nTWFuIEZvcmNlIDNECisJYzI4NSAgV2luZ01hbiBTdHJpa2UgRm9yY2UgM0QKKwljMjg2ICBGb3JjZSAzRCBQcm8KKwljMjkxICBXaW5nTWFuIEZvcm11bGEgRm9yY2UKKwljMjkzICBXaW5nTWFuIEZvcm11bGEgRm9yY2UgR1AKKwljMjk0ICBEcml2aW5nIEZvcmNlCisJYzI5NSAgTW9tbyBGb3JjZSBTdGVlcmluZyBXaGVlbAorCWMyOTggIERyaXZpbmcgRm9yY2UgUHJvCisJYzI5OSAgRzI1IFJhY2luZyBXaGVlbAorCWMyYTAgIFdpbmdtYW4gRm9yY2UgRmVlZGJhY2sgTW91c2UKKwljMmExICBXaW5nTWFuIEZvcmNlIEZlZWRiYWNrIE1vdXNlCisJYzMwMSAgaVRvdWNoIEtleWJvYXJkCisJYzMwMiAgaVRvdWNoIFBybyBLZXlib2FyZAorCWMzMDMgIGlUb3VjaCBLZXlib2FyZAorCWMzMDUgIEludGVybmV0IEtleWJvYXJkCisJYzMwNyAgSW50ZXJuZXQgS2V5Ym9hcmQKKwljMzA4ICBJbnRlcm5ldCBOYXZpZ2F0b3IgS2V5Ym9hcmQKKwljMzA5ICBJbnRlcm5ldCBLZXlib2FyZAorCWMzMGEgIGlUb3VjaCBDb21wb3NpdGUKKwljMzBiICBOZXRQbGF5IEtleWJvYXJkCisJYzMwYyAgSW50ZXJuZXQgS2V5cyAoWCkKKwljMzBkICBJbnRlcm5ldCBLZXlzCisJYzMwZSAgVWx0cmFYIEtleWJvYXJkIChZLUJMNDkpCisJYzMwZiAgTG9naWNvb2wgSElELUNvbXBsaWFudCBLZXlib2FyZCAoMTA2IGtleSkKKwljMzEyICBEZUx1eGUgMjUwIEtleWJvYXJkCisJYzMxNSAgQ2xhc3NpYyBOZXcgVG91Y2ggS2V5Ym9hcmQKKwljMzE2ICBISUQtQ29tcGxpYW50IEtleWJvYXJkCisJYzMxOCAgSWxsdW1pbmF0ZWQgS2V5Ym9hcmQKKwljNDAxICBUcmFja01hbiBNYXJibGUgV2hlZWwKKwljNDAyICBNYXJibGUgTW91c2UgKDItYnV0dG9uKQorCWM0MDMgIFR1cmJvIFRyYWNrTWFuIE1hcmJsZSBGWAorCWM0MDQgIFRyYWNrTWFuIFdoZWVsCisJYzQwOCAgTWFyYmxlIE1vdXNlICg0LWJ1dHRvbikKKwljNTAxICBDb3JkbGVzcyBNb3VzZSBSZWNlaXZlcgorCWM1MDIgIENvcmRsZXNzIE1vdXNlICYgaVRvdWNoIEtleXMKKwljNTAzICBDb3JkbGVzcyBNb3VzZStLZXlib2FyZCBSZWNlaXZlcgorCWM1MDQgIENvcmRsZXNzIE1vdXNlK0tleWJvYXJkIFJlY2VpdmVyCisJYzUwNSAgQ29yZGxlc3MgTW91c2UrS2V5Ym9hcmQgUmVjZWl2ZXIKKwljNTA2ICBNWC03MDAgQ29yZGxlc3MgTW91c2UgUmVjZWl2ZXIKKwljNTA4ICBDb3JkbGVzcyBUcmFja2JhbGwKKwljNTA5ICBDb3JkbGVzcyBLZXlib2FyZCAmIE1vdXNlCisJYzUwYSAgQ29yZGxlc3MgTW91c2UKKwljNTBiICBDb3JkbGVzcyBEZXNrdG9wIE9wdGljYWwKKwljNTBjICBDb3JkbGVzcyBEZXNrdG9wIFM1MTAKKwljNTBkICBDb3JkbGVzcyBNb3VzZQorCWM1MGUgIE1YLTEwMDAgQ29yZGxlc3MgTW91c2UgUmVjZWl2ZXIKKwljNTEwICBDb3JkbGVzcyBNb3VzZQorCWM1MTIgIExYLTcwMCBDb3JkbGVzcyBEZXNrdG9wIFJlY2VpdmVyCisJYzUxMyAgTVgzMDAwIENvcmRsZXNzIERlc2t0b3AgUmVjZWl2ZXIKKwljNTE0ICBDb3JkbGVzcyBNb3VzZQorCWM1MTcgIExYNzEwIENvcmRsZXNzIERlc2t0b3AgTGFzZXIKKwljNTE4ICBNWDYxMCBMYXNlciBDb3JkbGVzcyBNb3VzZQorCWM1MWEgIE1YIFJldm9sdXRpb24vRzcgQ29yZGxlc3MgTW91c2UKKwljNTFiICBWMjIwIENvcmRsZXNzIE9wdGljYWwgTW91c2UgZm9yIE5vdGVib29rcworCWM1MjEgIE1YNjIwIExhc2VyIENvcmRsZXNzIE1vdXNlCisJYzYyNSAgM0Rjb25uZXhpb24gU3BhY2UgUGlsb3QgM0QgTW91c2UKKwljNjI2ICAzRENvbm5leGlvbiBTcGFjZSBOYXZpZ2F0b3IgM0QgTW91c2UKKwljNjI3ICAzRENvbm5leGlvbiBTcGFjZSBFeHBsb3JlciAzRCBNb3VzZQorCWM3MDIgIENvcmRsZXNzIFByZXNlbnRlcgorCWM3MDMgIEVsaXRlIEtleWJvYXJkIFktUlAyMCArIE1vdXNlIE1YOTAwIChCbHVldG9vdGgpCisJYzcwNyAgQmx1ZXRvb3RoIHdpcmVsZXNzIGh1YgorCWM3MDggIEJsdWV0b290aCB3aXJlbGVzcyBodWIKKwljNzA5ICBCVCBNaW5pLVJlY2VpdmVyIChIQ0kgbW9kZSkKKwljNzBhICBNWDUwMDAgQ29yZGxlc3MgRGVza3RvcAorCWM3MGIgIEJUIE1pbmktUmVjZWl2ZXIgKEhJRCBwcm94eSBtb2RlKQorCWM3MGMgIEJUIE1pbmktUmVjZWl2ZXIgKEhJRCBwcm94eSBtb2RlKQorCWM3MGQgIEJsdWV0b290aCB3aXJlbGVzcyBodWIKKwljNzBlICBNWDEwMDAgQmx1ZXRvb3RoIExhc2VyIE1vdXNlCisJYzcwZiAgQmx1ZXRvb3RoIHdpcmVsZXNzIGh1YgorCWM3MTIgIEJsdWV0b290aCB3aXJlbGVzcyBodWIKKwljNzE1ICBCbHVldG9vdGggd2lyZWxlc3MgaHViCisJYzcxYSAgQmx1ZXRvb3RoIHdpcmVsZXNzIGh1YgorCWM3MWQgIEJsdWV0b290aCB3aXJlbGVzcyBodWIKKwljNzIwICBCbHVldG9vdGggd2lyZWxlc3MgaHViCisJY2EwMyAgTU9NTyBSYWNpbmcKKwljYTA0ICBGb3JtdWxhIFZpYnJhdGlvbiBGZWVkYmFjayBXaGVlbAorCWQwMDEgIFF1aWNrQ2FtIFBybworMDQ2ZSAgQmVoYXZpb3IgVGVjaC4gQ29tcHV0ZXIgQ29ycC4KKwkwMTAwICBLZXlib2FyZAorCTMwMDEgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkzMDAyICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMzAwMyAgTWFzcyBTdG9yYWdlIERldmljZQorCTMwMDUgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkzMDA4ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNTI1MCAgS2V5TWFlc3RybyBNdWx0aW1lZGlhIEtleWJvYXJkCisJNTI3MyAgS2V5TWFlc3RybyBNdWx0aW1lZGlhIEtleWJvYXJkCisJNTMwOCAgS2V5TWFlc3RybyBLZXlib2FyZAorCTU0MDggIEtleU1hZXN0cm8gTXVsdGltZWRpYSBLZXlib2FyZC9IdWIKKwk1NzIwICBTbWFydCBDYXJkIFJlYWRlcgorCTY3ODIgIEJUQyA3OTMyIG1vdXNlK2tleWJvYXJkCiswNDZmICBDcnlzdGFsIFNlbWljb25kdWN0b3IKKzA0NzEgIFBoaWxpcHMKKwkwMTAxICBEU1MzNTAgRGlnaXRhbCBTcGVha2VyIFN5c3RlbQorCTAxMDQgIERTUzMzMCBEaWdpdGFsIFNwZWFrZXIgU3lzdGVtIFt1ZGExMzIxXQorCTAxMDUgIFVEQTEzMjEKKwkwMTRmICBHb0dlYXIgU0E5MjAwCisJMDE2MCAgTVAzIFBsYXllcgorCTAxNjEgIE1QMyBQbGF5ZXIKKwkwMjAxICBIdWIKKwkwMjIyICBDcmVhdGl2ZSBOb21hZCBKdWtlYm94CisJMDMwMiAgUENBNjQ1VkMgV2ViY2FtIFtwd2NdCisJMDMwMyAgUENBNjQ2VkMgV2ViY2FtIFtwd2NdCisJMDMwNCAgQXNrZXkgVkMwMTAgV2ViY2FtIFtwd2NdCisJMDMwNyAgUENWQzY3NUsgV2ViY2FtIFtwd2NdCisJMDMwOCAgUENWQzY4MEsgV2ViY2FtIFtwd2NdCisJMDMwYiAgUEMgVkdBIENhbWVyYSAoVmVzdGEgRnVuKQorCTAzMGMgIFBDVkM2OTBLIFdlYmNhbSBbcHdjXQorCTAzMTAgIFBDVkM3MzBLIFdlYmNhbSBbcHdjXQorCTAzMTEgIFBDVkM3NDBLIFRvVWNhbSBQcm8gW3B3Y10KKwkwMzEyICBQQ1ZDNzUwSyBXZWJjYW0gW3B3Y10KKwkwMzE0ICBETVZDIDEwMDBLCisJMDMxNiAgRE1WQyAyMDAwSyBWaWRlbyBDYXB0dXJlCisJMDMyMSAgRnVuQ2FtCisJMDMyMiAgRE1WQzEzMDBLIFBDIENhbWVyYQorCTAzMjUgIFNQQyAyMDBOQyBQQyBDYW1lcmEKKwkwMzI2ICBTUEMgMzAwTkMgUEMgQ2FtZXJhCisJMDMyNyAgV2ViY2FtIFNQQyA2MDAwIE5DIChXZWJjYW0gdy8gbWljKQorCTAzMjggIFNQQyA3MDBOQyBQQyBDYW1lcmEKKwkwMzI5ICBTUEMgOTAwTkMgUEMgQ2FtZXJhIC8gT1JJVEUgQ0NEIFdlYmNhbShQQzM3MFIpCisJMDMyZCAgU1BDIDIxME5DIFBDIENhbWVyYQorCTAzMmUgIFNQQyAzMTVOQyBQQyBDYW1lcmEKKwkwMzMwICBTUEMgNzEwTkMgUEMgQ2FtZXJhCisJMDMzMSAgU1BDIDEzMDBOQyBQQyBDYW1lcmEKKwkwMzMyICBTUEMgMTAwME5DIFBDIENhbWVyYQorCTAzMzMgIFNQQyA2MjBOQyBQQyBDYW1lcmEKKwkwMzM0ICBTUEMgNTIwLzUyNU5DIFBDIENhbWVyYQorCTA0MDEgIFNlbWljb25kdWN0b3JzIENJQ1QgS2V5Ym9hcmQKKwkwNDAyICBQUy8yIE1vdXNlIG9uIFNlbWljb25kdWN0b3JzIENJQ1QgS2V5Ym9hcmQKKwkwNDA2ICAxNSBpbmNoIERldGFjaGFibGUgTW9uaXRvcgorCTA0MDcgIDEwIGluY2ggTW9iaWxlIE1vbml0b3IKKwkwNDcxICBEaWdpdGFsIFNwZWFrZXIgU3lzdGVtCisJMDYwMSAgT1ZVMTAyMCBJUiBEb25nbGUgKEtiZCtNb3VzZSkKKwkwNjAyICBBVEkgUmVtb3RlIFdvbmRlciBJSSBJbnB1dCBEZXZpY2UKKwkwNjAzICBBVEkgUmVtb3RlIFdvbmRlciBJSSBDb250cm9sbGVyCisJMDYwOCAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKwkwNjBhICBUU1U5NjAwIFJlbW90ZSBDb250cm9sCisJMDYwZSAgUkYgRG9uZ2xlCisJMDYxNyAgSUVFRTgwMi4xNS40IFJGIERvbmdsZQorCTA2MTkgIFRTVTk0MDAgUmVtb3RlIENvbnRyb2wKKwkwNzAwICBTZW1pY29uZHVjdG9ycyBDSUNUIEh1YgorCTA3MDEgIDE1MFAxIFRGVCBEaXNwbGF5CisJMDgwOSAgQVZORVQgQmx1ZXRvb3RoIERldmljZQorCTA4MTEgIEpSMjQgQ0RSVworCTA4MTUgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJMDg0NCAgU0EyMTExLzAyIDFHQiBGbGFzaCBBdWRpbyBQbGF5ZXIKKwkxMTIwICBDcmVhdGl2ZSBSaG9tYmEgTVAzIHBsYXllcgorCTExMjUgIE5pa2UgcHNhWzEyOG1heCBQbGF5ZXIKKwkxMTM3ICBIREQwNjUgTVAzIHBsYXllcgorCTEyMDEgIEFyaW1hIEJsdWV0b290aCBEZXZpY2UKKwkxMjMwICBXaXJlbGVzcyBBZGFwdGVyIDExZworCTEyMzIgIFNOVTY1MDAgV2lyZWxlc3MgQWRhcHRlcgorCTEyMzMgIFdpcmVsZXNzIEFkYXB0ZXIgQm9vdGxvYWRlciBEb3dubG9hZAorCTEyMzYgIFNOVTU2MDAgODAyLjExYmcKKwkxMjM3ICBUYWxrVGFsayBTTlU1NjMwTlMvMDUgODAyLjExYmcKKwkxNTUyICBJU1AgMTU4MSBIaS1TcGVlZCBVU0IgTVBFRzIgRW5jb2RlciBSZWZlcmVuY2UgS2l0CisJMTgwMSAgRGl2YSBNUDMgcGxheWVyCisJMjAwYSAgV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyCisJMjAwZiAgODAyLjExbiBXaXJlbGVzcyBBZGFwdGVyCisJMjAzNCAgV2ViY2FtIFNQQzUzME5DCisJMjAzZiAgVFNVOTIwMCBSZW1vdGUgQ29udHJvbAorCTIwNDYgIFRTVTk4MDAgUmVtb3RlIENvbnRyb2wKKwkyMDVlICBUU1U5MzAwIFJlbW90ZSBDb250cm9sCisJMjYyYyAgU1BDMjMwTkMgV2ViQ2FtCisJNDg1ZCAgU2Vuc2Vsb2NrIFNlbnNlSVYgdjIueAorMDQ3MiAgQ2hpY29ueSBFbGVjdHJvbmljcyBDby4sIEx0ZAorCTAwNjUgIFBGVS02NSBLZXlib2FyZAorCWIwODYgIEFzdXMgVVNCMi4wIFdlYmNhbQorCWIwOTEgIFdlYmNhbQorMDQ3MyAgU2FueW8gSW5mb3JtYXRpb24gQnVzaW5lc3MgQ28uLCBMdGQKKzA0NzQgIFNhbnlvIEVsZWN0cmljIENvLiwgTHRkCisJMDExMCAgRGlnaXRhbCBWb2ljZSBSZWNvcmRlciBSMjAwCisJMDIxNyAgWGFjdGkgSjIKKwkwMjJmICBDNSBEaWdpdGFsIE1lZGlhIENhbWVyYSAobWFzcyBzdG9yYWdlIG1vZGUpCisJMDIzMCAgQzUgRGlnaXRhbCBNZWRpYSBDYW1lcmEgKFBpY3RCcmlkZ2UgbW9kZSkKKwkwMjMxICBDNSBEaWdpdGFsIE1lZGlhIENhbWVyYSAoUEMgY29udHJvbCBtb2RlKQorCTA0MDEgIE9wdGljYWwgRHJpdmUKKwkwNzAxICBTQ1AtNDkwMCBDZWxscGhvbmUKKwkwNzFmICBVc2IgQ29tIFBvcnQgRW51bWVyYXRvcgorCTA3MjIgIFczM1NBIENhbWVyYQorMDQ3NSAgUmVsaXN5cy9UZWNvIEluZm9ybWF0aW9uIFN5c3RlbQorCTAxMDAgIE5FQyBQZXRpc2NhbgorCTAxMDMgIEVjbGlwc2UgMTIwMFUvRXBpc29kZQorCTAyMTAgIFNjb3JwaW8gVWx0cmEgMworMDQ3NiAgQUVTUAorMDQ3NyAgU2VhZ2F0ZSBUZWNobm9sb2d5LCBJbmMuCiswNDc4ICBDb25uZWN0aXggQ29ycC4KKwkwMDAxICBRdWlja0NhbQorCTAwMDIgIFF1aWNrQ2xpcAorCTAwMDMgIFF1aWNrQ2FtIFBybworMDQ3OSAgQWR2YW5jZWQgUGVyaXBoZXJhbCBMYWJvcmF0b3JpZXMKKzA0N2EgIFNlbXRlY2ggQ29ycC4KKwkwMDA0ICBTY3JlZW5Db2RlciBVUjdIQ1RTMi1VU0IKKzA0N2IgIFNpbGl0ZWsgQ29ycC4KKwkwMDAxICBLZXlib2FyZAorCTAwMDIgIEtleWJvYXJkIGFuZCBNb3VzZQorCTAwZjkgIFNLLTE3ODl1IEtleWJvYXJkCisJMDEwMSAgQmx1ZVRvb3RoIEtleWJvYXJkIGFuZCBNb3VzZQorCTAyMGIgIFNLLTMxMDUgU21hcnRDYXJkIFJlYWRlcgorCTA1MGUgIEludGVybmV0IENvbXBhY3QgS2V5Ym9hcmQKKwkxMDAwICBUcnVzdCBPZmZpY2UgU2NhbiBVU0IgMTkyMDAKKwkxMDAyICBIUCBTY2FuSmV0IDQzMDBjIFBhcmFsbGVsIFBvcnQKKzA0N2MgIERlbGwgQ29tcHV0ZXIgQ29ycC4KKzA0N2QgIEtlbnNpbmd0b24KKwkxMDAxICBNb3VzZSppbiphKkJveAorCTEwMDIgIEV4cGVydCBNb3VzZSBQcm8KKwkxMDAzICBPcmJpdCBUcmFja0JhbGwKKwkxMDA0ICBNb3VzZVdvcmtzCisJMTAwNSAgVHVyYm9CYWxsCisJMTAwNiAgVHVyYm9SaW5nCisJMTAwOSAgT3JiaXQgVHJhY2tCYWxsIGZvciBNYWMKKwkxMDEyICBQb2NrZXRNb3VzZQorCTEwMTMgIE1vdXNlKmluKmEqQm94IE9wdGljYWwgUHJvCisJMTAxNCAgRXhwZXJ0IE1vdXNlIFBybyBXaXJlbGVzcworCTEwMTUgIEV4cGVydCBNb3VzZQorCTEwMTYgIEFEQi9VU0IgT3JiaXQKKwkxMDE4ICBTdHVkaW8gTW91c2UKKwkxMDFkICBNb3VzZSppbiphKkJveCBPcHRpY2FsIFBybworCTEwMWUgIFN0dWRpbyBNb3VzZSBXaXJlbGVzcworCTEwMWYgIFBvY2tldE1vdXNlIFBybworCTEwMjAgIEV4cGVydCBNb3VzZSBUcmFja2JhbGwKKwkxMDIxICBFeHBlcnQgTW91c2UgV2lyZWxlc3MKKwkxMDIyICBPcmJpdCBPcHRpY2FsCisJMTAyMyAgUG9ja2V0IE1vdXNlIFBybyBXaXJlbGVzcworCTEwMjQgIFBvY2tldE1vdXNlCisJMTAyNSAgTW91c2UqaW4qYSpCb3ggT3B0aWNhbCBFbGl0ZSBXaXJlbGVzcworCTEwMjYgIFBvY2tldCBNb3VzZSBQcm8KKwkxMDI3ICBTdHVkaW9Nb3VzZQorCTEwMjggIFN0dWRpb01vdXNlIFdpcmVsZXNzCisJMTAyOSAgTW91c2UqaW4qYSpCb3ggT3B0aWNhbCBFbGl0ZQorCTEwMmEgIE1vdXNlKmluKmEqQm94IE9wdGljYWwKKwkxMDJiICBQb2NrZXRNb3VzZQorCTEwMmMgIElyaWRpbworCTEwMmQgIFBpbG90IE9wdGljYWwKKwkxMDJlICBQaWxvdCBPcHRpY2FsIFBybworCTEwMmYgIFBpbG90IE9wdGljYWwgUHJvIFdpcmVsZXNzCisJMTA0YSAgUGlsb3RNb3VzZSBNaW5pIFJldHJhY3RhYmxlCisJMTA1ZCAgUG9ja2V0TW91c2UgQmx1ZXRvb3RoCisJMTA1ZSAgQmx1ZXRvb3RoIEVEUiBEb25nbGUKKwkxMDYxICBQb2NrZXRNb3VzZSBHcmlwCisJMTA2MiAgUG9ja2V0TW91c2UgTWF4CisJMTA2MyAgUG9ja2V0TW91c2UgTWF4IFdpcmVsZXNzCisJMTA2NCAgUG9ja2V0TW91c2UgMi4wIFdpcmVsZXNzCisJMTA2NSAgUG9ja2V0TW91c2UgMi4wCisJMTA2NiAgUG9ja2V0TW91c2UgTWF4IEdsb3cKKwkxMDY3ICBWYWx1ZU1vdXNlCisJMTA2OCAgVmFsdWVPcHQgV2hpdGUKKwkxMDY5ICBWYWx1ZU9wdCBCbGFjaworCTEwNmEgIFBpbG90TW91c2UgTGFzZXIgV2lyZWxlc3MgTWluaQorCTEwNmIgIFBpbG90TW91c2UgTGFzZXIgLSAzIEJ1dHRvbgorCTEwNmMgIFBpbG90TW91c2UgTGFzZXIgLSBHYW1pbmcKKwkxMDZkICBQaWxvdE1vdXNlIExhc2VyIC0gV2lyZWQKKwkxMDZlICBQaWxvdE1vdXNlIE1pY3JvIExhc2VyCisJMTA3MCAgVmFsdWVPcHQgVHJhdmVsCisJMTA3MSAgVmFsdWVPcHQgUkYgVFgKKwkxMDcyICBQb2NrZXRNb3VzZSBDb2xvdXIKKwkxMDczICBQaWxvdE1vdXNlIExhc2VyIC0gNiBCdXR0b24KKwkxMDc0ICBQaWxvdE1vdXNlIExhc2VyIFdpcmVsZXNzIE1pbmkKKwkxMDc1ICBTbGltQmxhZGUgUHJlc2VudGVyIE1lZGlhIE1vdXNlCisJMTA3NiAgU2xpbUJsYWRlIE1lZGlhIE1vdXNlCisJMTA3NyAgU2xpbUJsYWRlIFByZXNlbnRlciBNb3VzZQorCTExNTIgIEJsdWV0b290aCBFRFIgRG9uZ2xlCisJMjAwMiAgT3B0aWNhbCBFbGl0ZSBXaXJlbGVzcworCTIwMTAgIFdpcmVsZXNzIFByZXNlbnRhdGlvbiBSZW1vdGUKKwkyMDIxICBQaWxvdEJvYXJkIFdpcmVsZXNzCisJMjAzMCAgUGlsb3RCb2FyZCBXaXJlbGVzcworCTIwMzQgIFNsaW1CbGFkZSBNZWRpYSBOb3RlYm9vayBTZXQKKwk0MDAzICBHcmF2aXMgWHRlcm1pbmF0b3IgRGlnaXRhbCBHYW1lcGFkCisJNDAwNSAgR3JhdmlzIEVsaW1pbmF0b3IgR2FtZVBhZCBQcm8KKwk0MDA2ICBHcmF2aXMgRWxpbWluYXRvciBBZnRlclNob2NrCisJNDAwNyAgR3JhdmlzIFh0ZXJtaW5hdG9yIEZvcmNlCisJNDAwOCAgR3JhdmlzIERlc3Ryb3llciBUaWx0UGFkCisJNTAwMSAgQ2FibyBJIENhbWVyYQorCTUwMDIgIFZpZGVvQ2FtIENBQk8gSUkKKwk1MDAzICBWaWRlb0NhbQorMDQ3ZSAgQWdlcmUgU3lzdGVtcywgSW5jLiAoTHVjZW50KQorCTAzMDAgIE9SaU5PQ08gQ2FyZAorCTEwMDEgIFVTUzcyMCBQYXJhbGxlbCBQb3J0CisJMjg5MiAgU3lzdGVtcyBTb2Z0IE1vZGVtCisJYmFkMSAgTHVjZW50IDU2ayBNb2RlbQorCWYxMDEgIEF0bGFzIE1vZGVtCiswNDdmICBQbGFudHJvbmljcywgSW5jLgorCTAxMDEgIEJ1bGsgRHJpdmVyCisJMDMwMSAgQnVsayBEcml2ZXIKKwkwY2ExICBVU0IgRFNQIHY0IEF1ZGlvIEludGVyZmFjZQorCTQyNTQgIEJVQS0xMDAgQmx1ZXRvb3RoIEFkYXB0ZXIKKzA0ODAgIFRvc2hpYmEgQW1lcmljYSBJbmZvLiBTeXN0ZW1zLCBJbmMuCisJMDAwMSAgSW5Ub3VjaCBNb2R1bGUKKwkwMDA0ICBJblRvdWNoIE1vZHVsZQorCTAwMTEgIEluVG91Y2ggTW9kdWxlCisJMDAxNCAgSW5Ub3VjaCBNb2R1bGUKKzA0ODEgIFplbml0aCBEYXRhIFN5c3RlbXMKKzA0ODIgIEt5b2NlcmEgQ29ycC4KKwkwMDBlICBGUy0xMDIwRCBQcmludGVyCisJMDEwMCAgRmluZWNhbSBTM3gKKwkwMTAxICBGaW5lY2FtIFM0CisJMDEwMyAgRmluZWNhbSBTNQorCTAxMDUgIEZpbmVjYW0gTDMKKwkwMTA2ICBGaW5lY2FtCisJMDEwNyAgRGlnaXRhbCBDYW1lcmEgRGV2aWNlCisJMDEwOCAgRGlnaXRhbCBDYW1lcmEgRGV2aWNlCisJMDIwMyAgQUgtSzMwMDFWCisJMDIwNCAgaUJ1cnN0IFRlcm1pbmFsCiswNDgzICBTR1MgVGhvbXNvbiBNaWNyb2VsZWN0cm9uaWNzCisJMDEzNyAgQmVXQU4gQURTTCBVU0IgU1QgKGJsdWUgb3IgZ3JlZW4pCisJMDEzOCAgVW5pY29ybiBJSSAoU1Q3MDEzOEIgKyBNVEMtMjAxNzRUUSBjaGlwc2V0KQorCTEzMDcgIEN5dHJvbml4IDZpbjEgQ2FyZCBSZWFkZXIKKwkxNjNkICBDb29sIEljYW0gRGlnaS1NUDMKKwkyMDE1ICBUb3VjaENoaXCuIEZpbmdlcnByaW50IFJlYWRlcgorCTIwMTYgIEZpbmdlcnByaW50IFJlYWRlcgorCTIwMTcgIEJpb21ldHJpYyBTbWFydCBDYXJkIFJlYWRlcgorCTIwMTggIEJpb1NpbUtleQorCTIzMDIgIFBvcnRhYmxlIEZsYXNoIERldmljZSAoUEZEKQorCTQ4MTAgIElTRE4gYWRhcHRlcgorCTQ4MWQgIEJUIERpZ2l0YWwgQWNjZXNzIGFkYXB0ZXIKKwk1MDAwICBTVCBNaWNybyBCbHVldG9vdGggRGV2aWNlCisJNTAwMSAgU1QgTWljcm8gQmx1ZXRvb3RoIERldmljZQorCTcyNzAgIFNUIE1pY3JvIFNlcmlhbCBCcmlkZ2UKKwk3NTU0ICA1NmsgU29mdE1vZGVtCisJZmYxMCAgU3dhbm4gU1Q1NiBNb2RlbQorMDQ4NCAgU3BlY2lhbGl4CiswNDg1ICBOb2tpYSBNb25pdG9ycworMDQ4NiAgQVNVUyBDb21wdXRlcnMsIEluYy4KKzA0ODcgIFN0ZXdhcnQgQ29ubmVjdG9yCiswNDg4ICBDaXJxdWUgQ29ycC4KKzA0ODkgIEZveGNvbm4gLyBIb24gSGFpCisJMDUwMiAgU21hcnRNZWRpYSBDYXJkIFJlYWRlciBGaXJtd2FyZSBMb2FkZXIKKwkwNTAzICBTbWFydE1lZGlhIENhcmQgUmVhZGVyCisJZTAwMCAgVC1Db20gVEMgMzAwCisJZTAwMyAgUGlyZWxsaSBEUC1MMTAKKzA0OGEgIFMtTU9TIFN5c3RlbXMsIEluYy4KKzA0OGMgIEFscHMgRWxlY3RyaWMgSXJlbGFuZCwgTHRkCiswNDhkICBJbnRlZ3JhdGVkIFRlY2hub2xvZ3kgRXhwcmVzcywgSW5jLgorMDQ4ZiAgRWljb24gVGVjaC4KKzA0OTAgIFVuaXRlZCBNaWNyb2VsZWN0cm9uaWNzIENvcnAuCiswNDkxICBDYXBldHJvbmljCisJMDAwMyAgVGF4YW4gTW9uaXRvciBDb250cm9sCiswNDkyICBTYW1zdW5nIFNlbWlDb25kdWN0b3IsIEluYy4KKzA0OTMgIE1BRyBUZWNobm9sb2d5IENvLiwgTHRkCiswNDk1ICBFU1MgVGVjaG5vbG9neSwgSW5jLgorMDQ5NiAgTWljcm9uIEVsZWN0cm9uaWNzCiswNDk3ICBTbWlsZSBJbnRlcm5hdGlvbmFsCisJYzAwMSAgQ2FtZXJhIERldmljZQorMDQ5OCAgQ2FwZXRyb25pYyAoS2FvaHNpdW5nKSBDb3JwLgorMDQ5OSAgWWFtYWhhIENvcnAuCisJMTAwMCAgVVgyNTYgTUlESSBJL0YKKwkxMDAxICBNVTEwMDAKKwkxMDAyICBNVTIwMDAKKwkxMDAzICBNVTUwMAorCTEwMDQgIFVXNTAwCisJMTAwNSAgTU9USUY2CisJMTAwNiAgTU9USUY3CisJMTAwNyAgTU9USUY4CisJMTAwOCAgVVg5NiBNSURJIEkvRgorCTEwMDkgIFVYMTYgTUlESSBJL0YKKwkxMDBhICBFT1MgQlgKKwkxMDBjICBVQy1NWAorCTEwMGQgIFVDLUtYCisJMTAwZSAgUzA4CisJMTAwZiAgQ0xQLTE1MAorCTEwMTAgIENMUC0xNzAKKwkxMDExICBQLTI1MAorCTEwMTIgIFRZUk9TCisJMTAxMyAgUEYtNTAwCisJMTAxNCAgUzkwCisJMTAxNSAgTU9USUYtUgorCTEwMTYgIE1EUC01CisJMTAxNyAgQ1ZQLTIwNAorCTEwMTggIENWUC0yMDYKKwkxMDE5ICBDVlAtMjA4CisJMTAxYSAgQ1ZQLTIxMAorCTEwMWIgIFBTUi0xMTAwCisJMTAxYyAgUFNSLTIxMDAKKwkxMDFkICBDTFAtMTc1CisJMTAxZSAgUFNSLUsxCisJMTAxZiAgRVotSjI0CisJMTAyMCAgRVotMjUwaQorCTEwMjEgIE1PVElGIEVTIDYKKwkxMDIyICBNT1RJRiBFUyA3CisJMTAyMyAgTU9USUYgRVMgOAorCTEwMjQgIENWUC0zMDEKKwkxMDI1ICBDVlAtMzAzCisJMTAyNiAgQ1ZQLTMwNQorCTEwMjcgIENWUC0zMDcKKwkxMDI4ICBDVlAtMzA5CisJMTAyOSAgQ1ZQLTMwOUdQCisJMTAyYSAgUFNSLTE1MDAKKwkxMDJiICBQU1ItMzAwMAorCTEwMmUgIEVMUy0wMS8wMUMKKwkxMDMwICBQU1ItMjk1LzI5MworCTEwMzEgIERHWC0yMDUvMjAzCisJMTAzMiAgREdYLTMwNQorCTEwMzMgIERHWC01MDUKKwkxMDNjICBNT1RJRi1SQUNLIEVTCisJMjAwMCAgREdQLTcKKwkyMDAxICBER1AtNQorCTMwMDEgIFlTVC1NUzU1RCBVU0IgU3BlYWtlcgorCTQwMDAgIE5ldFZvbGFudGUgUlRBNTRpIEJyb2FkYmFuZCZJU0ROIFJvdXRlcgorCTQwMDEgIE5ldFZvbGFudGUgUlRXNjViIEJyb2FkYmFuZCBXaXJlbGVzcyBSb3V0ZXIKKwk0MDAyICBOZXRWb2xhbnRlIFJUVzY1aSBCcm9hZGJhbmQmSVNETiBXaXJlbGVzcyBSb3V0ZXIKKwk0MDA0ICBOZXRWb2xhbnRlIFJUQTU1aSBCcm9hZGJhbmQgVm9JUCBSb3V0ZXIKKwk1MDAwICBDUzFECisJNTAwMSAgRFNQMUQKKwk1MDAyICBETUUzMgorCTUwMDMgIERNMjAwMAorCTUwMDQgIDAyUjk2CisJNTAwNSAgQUNVMTYtQworCTUwMDYgIE5IQjMyLUMKKwk1MDA3ICBETTEwMDAKKwk1MDA4ICAwMVY5NgorCTUwMDkgIFNQWDIwMDAKKwk1MDBhICBQTTVECisJNTAwYiAgRE1FNjROCisJNTAwYyAgRE1FMjROCisJNjAwMSAgQ1JXMjIwMFVYIExpZ2h0c3BlZWQgMiBFeHRlcm5hbCBDRC1SVyBEcml2ZQorCTcwMDAgIERUWAorCTcwMTAgIFVCOTkKKzA0OWEgIEdhbmRhbGYgVGVjaG5vbG9naWVzLCBMdGQKKzA0OWIgIEN1cnRpcyBDb21wdXRlciBQcm9kdWN0cworMDQ5YyAgQWNlciBBZHZhbmNlZCBMYWJzLCBJbmMuCisJMDAwMiAgS2V5Ym9hcmQgKD8/PykKKzA0OWQgIFZMU0kgVGVjaG5vbG9neQorMDQ5ZiAgQ29tcGFxIENvbXB1dGVyIENvcnAuCisJMDAwMiAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDAzICBpUEFRIFBvY2tldFBDCisJMDAwZSAgSW50ZXJuZXQgS2V5Ym9hcmQKKwkwMDEyICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwMTggIFBBLTEvUEEtMiBNUDMgUGxheWVyCisJMDAxOSAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDFhICBTNCAxMDAgU2Nhbm5lcgorCTAwMWUgIElKNjUwIElua2pldCBQcmludGVyCisJMDAxZiAgV0wyMTUgQWRhcHRlcgorCTAwMjEgIFMyMDAgU2Nhbm5lcgorCTAwMjcgIEJsdWV0b290aCBNdWx0aXBvcnQgTW9kdWxlIGJ5IENvbXBhcQorCTAwMmEgIDE0MDBQIElua2pldCBQcmludGVyCisJMDAyYiAgQTMwMDAKKwkwMDJjICBMZXhtYXJrIFgxMjUKKwkwMDMyICA4MDIuMTFiIEFkYXB0ZXIgW2lwYXEgaDU0MDBdCisJMDAzMyAgODAyLjExYiBBZGFwdGVyIFtvcmlub2NvXQorCTAwMzYgIEJsdWV0b290aCBNdWx0aXBvcnQgTW9kdWxlCisJMDA1MSAgS1UtMDEzMyBFYXN5IEFjY2VzcyBJbnRlcm5lciBLZXlib2FyZAorCTAwNzYgIFdpcmVsZXNzIExBTiBNdWx0aVBvcnQgVzIwMAorCTAwODAgIEdQUlMgTXVsdGlwb3J0CisJMDA4NiAgQmx1ZXRvb3RoIERldmljZQorCTUwNGEgIFBlcnNvbmFsIEp1a2Vib3ggUEpCMTAwCisJNTA1YSAgTGludXgtVVNCICJDREMgU3Vic2V0IiBEZXZpY2UsIG9yIEl0c3kgKGV4cGVyaW1lbnRhbCkKKwk4NTExICBpUEFRIE5ldHdvcmtpbmcgMTAvMTAwIEV0aGVybmV0IFtwZWdhc3VzMl0KKzA0YTAgIERpZ2l0YWwgRXF1aXBtZW50IENvcnAuCiswNGExICBTeXN0ZW1Tb2Z0IENvcnAuCisJZmZmMCAgVGVsZXggQ29tcG9zaXRlIERldmljZQorMDRhMiAgRmlyZVBvd2VyIFN5c3RlbXMKKzA0YTMgIFRyaWRlbnQgTWljcm9zeXN0ZW1zLCBJbmMuCiswNGE0ICBIaXRhY2hpLCBMdGQKKwkwMDA0ICBEVkQtQ0FNIERaLU1WMTAwQSBDYW1jb3JkZXIKKwkwMDFlICBEVkRDQU0gVVNCIEhTIEludGVyZmFjZQorMDRhNSAgQWNlciBQZXJpcGhlcmFscyBJbmMuIChub3cgQmVuUSBDb3JwLikKKwkwMDAxICBLZXlib2FyZAorCTAwMDIgIEFQSSBFcmdvIEsvQgorCTAwMDMgIEFQSSBHZW5lcmljIEsvQiBNb3VzZQorCTEyYTYgIEFjZXJTY2FuIEMzMTBVCisJMWEyMCAgUHJpc2EgMzEwVQorCTFhMmEgIFByaXNhIDYyMFUKKwkyMDIyICBQcmlzYSAzMjBVLzM0MFUKKwkyMDQwICBQcmlzYSA2MjBVVAorCTIwNWUgIFNjYW5QcmlzYSA2NDBCVQorCTIwNjAgIFByaXNhIDYyMFUrLzY0MFUKKwkyMDdlICBQcmlzYSA2NDBCVQorCTIwOWUgIFNjYW5QcmlzYSA2NDBCVAorCTIwYWUgIFMyVyAzMDAwVQorCTIwYjAgIFMyVyAzMzAwVS80MzAwVQorCTIwYmUgIFByaXNhIDY0MEJUCisJMjBjMCAgUHJpc2EgMTI0MFVUCisJMjBkZSAgUzJXIDQzMDBVKworCTIwZjggIEJlbnEgNTAwMAorCTIwZmMgIEJlbnEgNTAwMAorCTIwZmUgIFNXMiA1MzAwVQorCTIxMzcgIEJlbnEgNTE1MC81MjUwCisJMjIwMiAgQmVucSA3NDAwVVQKKwkyMzExICBCZW5xIDU1NjAKKwkzMDAzICBCZW5xIFdlYmNhbQorCTMwMDggIEJlbnEgMTUwMAorCTMwMGEgIEJlbnEgMzQxMAorCTMwMGMgIEJlbnEgMTAxNgorCTMwMTkgIEJlbnEgREMgQzQwCisJNDAwMCAgUDMwIENvbXBvc2l0ZSBEZXZpY2UKKwk2MDAxICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjAwMiAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMDMgIEFUQS9BVEFQSSBBZGFwdGVyCisJNjAwNCAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMDUgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk2MDA2ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjAwNyAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMDggIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk2MDA5ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjAwYSAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMGIgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk2MDBjICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjAwZCAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMGUgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk2MDBmICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjAxMCAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMTEgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk2MDEyICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjAxMyAgTWFzcyBTdG9yYWdlIERldmljZQorCTYwMTQgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk2MDE1ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNjEyNSAgTVAzIFBsYXllcgorCTYxODAgIE1QMyBQbGF5ZXIKKwk2MjAwICBNUDMgUGxheWVyCisJNzUwMCAgSGktU3BlZWQgTWFzcyBTdG9yYWdlIERldmljZQorCTkwMDAgIEFXTDMwMCBXaXJlbGVzcyBBZGFwdGVyCisJOTAwMSAgQVdMNDAwIFdpcmVsZXNzIEFkYXB0ZXIKKwk5MjEzICBLYmQgSHViCiswNGE2ICBOb2tpYSBEaXNwbGF5IFByb2R1Y3RzCisJMDBiOSAgQXVkaW8KKwkwMTgwICBIdWIgVHlwZSBQCisJMDE4MSAgSElEIE1vbml0b3IgQ29udHJvbHMKKzA0YTcgIFZpc2lvbmVlcgorCTAxMDAgIFN0cm9iZVBybworCTAxMDEgIFN0cm9iZSBQcm8gU2Nhbm5lciAoMS4wMSkKKwkwMTAyICBTdHJvYmVQcm8gU2Nhbm5lcgorCTAyMTEgIE9uZVRvdWNoIDc2MDAgU2Nhbm5lcgorCTAyMjEgIE9uZVRvdWNoIDUzMDAgU2Nhbm5lcgorCTAyMjMgIE9uZVRvdWNoIDgyMDAKKwkwMjI0ICBPbmVUb3VjaCA0ODAwIFVTQi9NaWNyb3RlayBTY2FucG9ydCAzMDAwCisJMDIyNSAgVmlzdGFTY2FuIEFzdHJhIDM2MDAoRU5HKQorCTAyMjYgIE9uZVRvdWNoIDUzMDAgVVNCCisJMDIyOSAgT25lVG91Y2ggNzEwMAorCTAyMmEgIE9uZVRvdWNoIDY2MDAKKwkwMjJjICBPbmVUb3VjaCA5MDAwLzkwMjAKKwkwMjMxICA2MTAwIFNjYW5uZXIKKwkwMzExICA2MjAwIEVQUC9VU0IgU2Nhbm5lcgorCTAzMjEgIE9uZVRvdWNoIDgxMDAgRVBQL1VTQiBTY2FubmVyCisJMDMzMSAgT25lVG91Y2ggODYwMCBFUFAvVVNCIFNjYW5uZXIKKwkwMzQxICA2NDAwCisJMDM2MSAgVmlzdGFTY2FuIEFzdHJhIDM2MDAoRU5HKQorCTAzNjIgIE9uZVRvdWNoIDkzMjAKKwkwMzcxICBPbmVUb3VjaCA4NzAwLzg5MjAKKwkwMzgwICBPbmVUb3VjaCA3NzAwCisJMDM4MiAgUGhvdG8gUG9ydCA3NzAwCisJMDM5MCAgOTY1MAorCTAzYTAgIFhlcm94IDQ4MDAgT25lIFRvdWNoCisJMDQxMCAgT25lVG91Y2ggUHJvIDg4MDAvODgyMAorCTA0MjEgIDk0NTAgVVNCCisJMDQyMyAgOTc1MCBTY2FubmVyCisJMDQyNCAgU3Ryb2JlIFhQIDQ1MAorCTA0MjUgIFN0cm9iZSBYUCAxMDAKKwkwNDI2ICBTdHJvYmUgWFAgMjAwCisJMDQyNyAgU3Ryb2JlIFhQIDEwMAorCTA0NDQgIE9uZVRvdWNoIDczMDAKKwkwNDQ1ICBDYXJkUmVhZGVyIDEwMAorCTA0NDYgIFhlcm94IERvY3VNYXRlIDUxMAorCTA0NDcgIFhFUk9YIERvY3VNYXRlIDUyMAorCTA0NDggIFhFUk9YIERvY3VNYXRlIDI1MAorCTA0NDkgIFhlcm94IERvY3VNYXRlIDI1MgorCTA0NGEgIFhlcm94IDY0MDAKKwkwNDRjICBYZXJveCBEb2N1TWF0ZSAyNjIKKwkwNDc0ICBTdHJvYmUgWFAgMzAwCisJMDQ3NSAgWGVyb3ggRG9jdU1hdGUgMjcyCisJMDQ3OCAgU3Ryb2JlIFhQIDIyMAorCTA0NzkgIFN0cm9iZSBYUCA0NzAKKwkwNDdhICA5NDUwCisJMDQ3YiAgOTY1MAorCTA0N2QgIDk0MjAKKwkwNDgwICA5NTIwCisJMDQ4ZiAgU3Ryb2JlIFhQIDQ3MAorCTA0OTEgIFN0cm9iZSBYUCA0NTAKKwkwNDkzICA5NzUwCisJMDQ5NCAgU3Ryb2JlIFhQIDEyMAorCTA0OTcgIFBhdHJpb3QgNDMwCisJMDQ5OCAgUGF0cmlvdCA2ODAKKwkwNDk5ICBQYXRyaW90IDc4MAorCTA0OWIgIFN0cm9iZSBYUCAxMDAKKwkwNGEwICA3NDAwCiswNGE4ICBNdWx0aXZpZGVvIExhYnMsIEluYy4KKwkwMTAxICBIdWIKKwkwMzAzICBQZXJpcGhlcmFsIFN3aXRjaAorCTA0MDQgIFBlcmlwaGVyYWwgU3dpdGNoCiswNGE5ICBDYW5vbiwgSW5jLgorCTEwMDUgIEJKIFByaW50ZXIgSHViCisJMTAzNSAgUEQgUHJpbnRlciBTdG9yYWdlCisJMTA1MCAgQkpDLTgyMDAKKwkxMDUxICBCSkMtMzAwMCBDb2xvciBQcmludGVyCisJMTA1MiAgQkpDLTYxMDAKKwkxMDUzICBCSkMtNjIwMAorCTEwNTQgIEJKQy02NTAwCisJMTA1NSAgQkpDLTg1CisJMTA1NiAgQkpDLTIxMTAgQ29sb3IgUHJpbnRlcgorCTEwNTcgIExSMQorCTEwNWEgIEJKQy01NQorCTEwNWIgIFM2MDAgUHJpbnRlcgorCTEwNWMgIFM0MDAKKwkxMDVkICBTNDUwIFByaW50ZXIKKwkxMDVlICBTODAwCisJMTA2MiAgUzUwMCBQcmludGVyCisJMTA2MyAgUzQ1MDAKKwkxMDY0ICBTMzAwIFByaW50ZXIKKwkxMDY1ICBTMTAwCisJMTA2NiAgUzYzMAorCTEwNjcgIFM5MDAKKwkxMDY4ICBTOTAwMAorCTEwNjkgIFM4MjAKKwkxMDZhICBTMjAwIFByaW50ZXIKKwkxMDZiICBTNTIwIFByaW50ZXIKKwkxMDZkICBTNzUwIFByaW50ZXIKKwkxMDZlICBTODIwRAorCTEwNzAgIFM1MzBECisJMTA3MiAgSTg1MCBQcmludGVyCisJMTA3MyAgSTU1MCBQcmludGVyCisJMTA3NCAgUzMzMCBQcmludGVyCisJMTA3NiAgaTcwCisJMTA3NyAgaTk1MAorCTEwN2EgIFM4MzBECisJMTA3YiAgaTMyMAorCTEwN2MgIGk0NzBECisJMTA3ZCAgaTkxMDAKKwkxMDdlICBpNDUwCisJMTA3ZiAgaTg2MAorCTEwODIgIGkzNTAKKwkxMDg0ICBpMjUwCisJMTA4NSAgaTI1NQorCTEwODYgIGk1NjAKKwkxMDg4ICBpOTY1CisJMTA4YSAgaTQ1NQorCTEwOGIgIGk5MDBECisJMTA4YyAgaTQ3NUQKKwkxMDhkICBQSVhNQSBpUDIwMDAKKwkxMDhmICBpODAKKwkxMDkwICBpOTkwMCBQaG90byBQcmludGVyCisJMTA5MSAgUElYTUEgaVAxNTAwCisJMTA5MyAgUElYTUEgaVA0MDAwCisJMTA5NCAgUElYTUEgaVAzMDAweCBQcmludGVyCisJMTA5NSAgUElYTUEgaVA2MDAwRAorCTEwOTcgIFBJWE1BIGlQNTAwMAorCTEwOTggIFBJWE1BIGlQMTAwMAorCTEwOTkgIFBJWE1BIGlQODUwMAorCTEwOWMgIFBJWE1BIGlQNDAwMFIKKwkxMDlkICBpUDkwCisJMTBhMCAgUElYTUEgaVAxNjAwIFByaW50ZXIKKwkxMGEyICBpUDQyMDAKKwkxMGE0ICBpUDUyMDBSCisJMTBhNSAgaVA1MjAwCisJMTBhNyAgaVA2MjEwRAorCTEwYTggIGlQNjIyMEQKKwkxMGE5ICBpUDY2MDBECisJMTBiNiAgUElYTUEgaVA0MzAwIFByaW50ZXIKKwkxNDA0ICBXNjQwMFBHCisJMTQwNSAgVzg0MDBQRworCTE1MGYgIEJJSjIzNTAgUENMCisJMTUxMCAgQklKMTM1MCBQQ0wKKwkxNTEyICBCSUoxMzUwRCBQQ0wKKwkxNjAxICBEUi0yMDgwQyBTY2FubmVyCisJMTYwNyAgRFItNjA4MCBTY2FubmVyCisJMTcwMCAgUElYTUEgTVAxMTAgU2Nhbm5lcgorCTE3MDEgIFBJWE1BIE1QMTMwIFNjYW5uZXIKKwkxNzAyICBNUDQxMCBDb21wb3NpdGUKKwkxNzAzICBNUDQzMCBDb21wb3NpdGUKKwkxNzA0ICBNUDMzMCBDb21wb3NpdGUKKwkxNzA2ICBQSVhNQSBNUDc1MCBTY2FubmVyCisJMTcwNyAgUElYTUEgTVA3ODAgU2Nhbm5lcgorCTE3MDggIFBJWE1BIE1QNzYwIFNjYW5uZXIKKwkxNzA5ICBQSVhNQSBNUDE1MCBTY2FubmVyCisJMTcwYSAgUElYTUEgTVAxNzAgU2Nhbm5lcgorCTE3MGIgIFBJWE1BIE1QNDUwIFNjYW5uZXIKKwkxNzBjICBQSVhNQSBNUDUwMCBTY2FubmVyCisJMTcwZCAgUElYTUEgTVA4MDAgU2Nhbm5lcgorCTE3MGUgIE1QODAwUgorCTE3MTAgIE1QOTUwCisJMTcxMiAgTVA1MzAKKwkxNzEzICBQSVhNQSBNUDgzMCBTY2FubmVyCisJMTcxNCAgTVAxNjAKKwkxNzE1ICBNUDE4MCBTdG9yYWdlCisJMTcxNiAgTVA0NjAgQ29tcG9zaXRlCisJMTcxNyAgTVA1MTAKKwkxNzE4ICBNUDYwMCBTdG9yYWdlCisJMTcxYSAgTVA4MTAgU3RvcmFnZQorCTE3MWIgIE1QOTYwCisJMTcyMSAgTVAyMTAgc2VyCisJMTcyMyAgTVA0NzAgc2VyCisJMTcyNSAgTVA2MTAgc2VyCisJMTcyNiAgTVA5NzAgc2VyCisJMTcyNyAgTVgzMDAgc2VyCisJMTcyOCAgTVgzMTAgc2VyCisJMTcyOSAgTVg3MDAgc2VyCisJMTcyYiAgTVAxNDAgc2VyCisJMTkwMCAgQ2Fub1NjYW4gTGlERSA5MAorCTIyMDAgIENhbm9TY2FuIExpREUgMjUKKwkyMjAxICBDYW5vU2NhbiBGQjMyMFUKKwkyMjAyICBDYW5vU2NhbiBGQjYyMFUKKwkyMjA0ICBDYW5vU2NhbiBGQjYzMFUKKwkyMjA1ICBDYW5vU2NhbiBGQjEyMTBVCisJMjIwNiAgQ2Fub1NjYW4gTjY1MFUvTjY1NlUKKwkyMjA3ICBDYW5vU2NhbiAxMjIwVQorCTIyMDggIENhbm9TY2FuIEQ2NjBVCisJMjIwYSAgQ2Fub1NjYW4gRDI0MDBVRgorCTIyMGIgIENhbm9TY2FuIEQ2NDZVCisJMjIwYyAgQ2Fub1NjYW4gRDEyNTBVMgorCTIyMGQgIENhbm9TY2FuIE42NzBVL042NzZVL0xpREUgMjAKKwkyMjBlICBDYW5vU2NhbiBOMTI0MFUvTGlERSAzMAorCTIyMGYgIENhbm9TY2FuIDgwMDBGCisJMjIxMCAgQ2Fub1NjYW4gOTkwMEYKKwkyMjEyICBDYW5vU2NhbiA1MDAwRgorCTIyMTMgIENhbm9TY2FuIExpREUgNTAvTGlERSAzNS9MaURFIDQwCisJMjIxNCAgQ2Fub1NjYW4gTGlERSA4MAorCTIyMTUgIENhbm9TY2FuIDMwMDAvMzAwMEYvMzAwMGV4CisJMjIxNiAgQ2Fub1NjYW4gMzIwMEYKKwkyMjE3ICBDYW5vU2NhbiA1MjAwRgorCTIyMTkgIENhbm9TY2FuIDk5NTBGCisJMjIxYiAgQ2Fub1NjYW4gNDIwMEYKKwkyMjFjICBDYW5vU2NhbiBMaURFIDYwCisJMjIxZSAgQ2Fub1NjYW4gODQwMEYKKwkyMjFmICBDYW5vU2NhbiBMaURFIDUwMEYKKwkyMjIwICBDYW5vU2NhbiBMSURFIDI1CisJMjIyNSAgQ2Fub1NjYW4gTGlERSA3MAorCTIyMjggIENhbm9TY2FuIDQ0MDBGCisJMjYwMiAgTXVsdGlQQVNTIEM1NTUKKwkyNjAzICBNdWx0aVBBU1MgQzc1NQorCTI2MGEgIENBUFQgUHJpbnRlcgorCTI2MGUgIExCUC0yMDAwCisJMjYxMCAgTVBDNjAwRgorCTI2MTEgIFNtYXJ0QmFzZSBNUEM0MDAKKwkyNjEyICBNdWx0aVBBU1MgQzg1NQorCTI2MTcgIENBUFQgUHJpbnRlcgorCTI2MWEgIGlSMTYwMAorCTI2MWIgIGlSMTYxMAorCTI2MWMgIGlDMjMwMAorCTI2MWYgIE1QQzIwMCBQcmludGVyCisJMjYyMSAgaVIyMDAwCisJMjYyMiAgaVIyMDEwCisJMjYyMyAgRkFYLUIxODBDCisJMjYyOSAgRkFYUEhPTkUgTDc1CisJMjYyYiAgTGFzZXJTaG90IExCUC0xMTIwIFByaW50ZXIKKwkyNjJkICBpUiBDMzIwMAorCTI2MmYgIE11bHRpUEFTUyBNUDczMAorCTI2MzAgIE11bHRpUEFTUyBNUDcwMAorCTI2MzEgIExBU0VSIENMQVNTIDcwMAorCTI2MzIgIEZBWC1MMjAwMAorCTI2MzUgIE1QQzE5MAorCTI2MzcgIGlSIEM2ODAwCisJMjYzOCAgaVIgQzMxMDAKKwkyNjNjICBTbWFydGJhc2UgTVAzNjAKKwkyNjNkICBNUDM3MAorCTI2M2UgIE1QMzkwIEZBWAorCTI2M2YgIE1QMzc1CisJMjY0NiAgTUY1NTMwIFNjYW5uZXIgRGV2aWNlIFYxLjkuMQorCTI2NDcgIE1GNTU1MCBDb21wb3NpdGUKKwkyNjRlICBNRjU2MzAKKwkyNjRmICBNRjU2NTAgKEZBWCkKKwkyNjUwICBpUiA2ODAwQyBFVVIKKwkyNjUxICBpUiAzMTAwQyBFVVIKKwkyNjU1ICBGUC1MMTcwL01GMzUwL0wzODAvTDM5OAorCTI2NTkgIE1GODEwMAorCTI2NWIgIENBUFQgUHJpbnRlcgorCTI2NWMgIGlSIEMzMjIwCisJMjY1ZCAgTUY1NzMwCisJMjY1ZSAgTUY1NzUwCisJMjY1ZiAgTUY1NzcwCisJMjY2MCAgTUYzMTEwCisJMjY2MyAgaVIzNTcwL2lSNDU3MAorCTI2NjQgIGlSMjI3MC9pUjI4NzAKKwkyNjY1ICBpUiBDMjYyMAorCTI2NjYgIGlSIEM1ODAwCisJMjY2NyAgaVI4NVBMVVMKKwkyNjY5ICBpUjEwNVBMVVMKKwkyNjZhICBDQVBUIERldmljZQorCTI2NmIgIGlSODA3MAorCTI2NmMgIGlSOTA3MAorCTI2NmQgIGlSIDU4MDBDIEVVUgorCTI2NmUgIENBUFQgRGV2aWNlCisJMjY2ZiAgaVIyMjMwCisJMjY3MCAgaVIzNTMwCisJMjY3MSAgaVI1NTcwL2lSNjU3MAorCTI2NzIgIGlSIEMzMTcwCisJMjY3MyAgaVIgMzE3MEMgRVVSCisJMjY3NCAgTDEyMAorCTI2NzUgIGlSMjgzMAorCTI2NzYgIENBUFQgRGV2aWNlCisJMjY3NyAgaVIgQzI1NzAKKwkyNjc4ICBpUiAyNTcwQyBFVVIKKwkyNjc5ICBDQVBUIERldmljZQorCTI2N2EgIGlSMjAxNgorCTI2N2IgIGlSMjAyMAorCTI2N2QgIE1GNzEwMCBzZXJpZXMKKwkyNjg0ICBNRjMyMDAgc2VyaWVzCisJMjY4NiAgTUY2NTAwIHNlcmllcworCTI2ODcgIGlSNDUzMAorCTI2ODggIExCUDM0NjAKKwkyNjhjICBpUiBDNjg3MAorCTI2OGQgIGlSIDY4NzBDIEVVUgorCTI2OGUgIGlSIEM1ODcwCisJMjY4ZiAgaVIgNTg3MEMgRVVSCisJMjY5MSAgaVI3MTA1CisJMjZhMyAgTUY0MTAwIHNlcmllcworCTI2YjAgIE1GNDYwMCBzZXJpZXMKKwkyNmI0ICBNRjQwMTAgc2VyaWVzCisJMjZiNSAgTUY0MjAwIHNlcmllcworCTMwNDEgIFBvd2VyU2hvdCBTMTAKKwkzMDQyICBDYW5vU2NhbiBGUzQwMDBVUyBGaWxtIFNjYW5uZXIKKwkzMDQzICBQb3dlclNob3QgUzIwCisJMzA0NCAgRU9TIEQzMAorCTMwNDUgIFBvd2VyU2hvdCBTMTAwCisJMzA0NiAgSVhZIERpZ2l0YWwKKwkzMDQ3ICBEaWdpdGFsIElYVVMKKwkzMDQ4ICBQb3dlclNob3QgRzEKKwkzMDQ5ICBQb3dlclNob3QgUHJvOTAgSVMKKwkzMDRhICBDUC0xMAorCTMwNGIgIElYWSBEaWdpdGFsIDMwMAorCTMwNGMgIFBvd2VyU2hvdCBTMzAwCisJMzA0ZCAgRGlnaXRhbCBJWFVTIDMwMAorCTMwNGUgIFBvd2VyU2hvdCBBMjAKKwkzMDRmICBQb3dlclNob3QgQTEwCisJMzA1MCAgUG93ZXJTaG90IHVua25vd24gMQorCTMwNTEgIFBvd2VyU2hvdCBTMTEwCisJMzA1MiAgRGlnaXRhbCBJWFVTIFYKKwkzMDU1ICBQb3dlclNob3QgRzIKKwkzMDU2ICBQb3dlclNob3QgUzQwCisJMzA1NyAgUG93ZXJTaG90IFMzMAorCTMwNTggIFBvd2VyU2hvdCBBNDAKKwkzMDU5ICBQb3dlclNob3QgQTMwCisJMzA1YiAgWlI0NU1DIERpZ2l0YWwgQ2FtY29yZGVyCisJMzA1YyAgUG93ZXJTaG90IHVua25vd24gMgorCTMwNjAgIEVPUyBENjAKKwkzMDYxICBQb3dlclNob3QgQTEwMAorCTMwNjIgIFBvd2VyU2hvdCBBMjAwCisJMzA2MyAgQ1AtMTAwCisJMzA2NSAgUG93ZXJTaG90IFMyMDAKKwkzMDY2ICBEaWdpdGFsIElYVVMgMzMwCisJMzA2NyAgTVY1NTBpIERpZ2l0YWwgVmlkZW8gQ2FtZXJhCisJMzA2OSAgUG93ZXJTaG90IEczCisJMzA2YSAgRGlnaXRhbCB1bmtub3duIDMKKwkzMDZiICBNVlgyaSBEaWdpdGFsIFZpZGVvIENhbWVyYQorCTMwNmMgIFBvd2VyU2hvdCBTNDUKKwkzMDZkICBQb3dlclNob3QgUzQ1IFB0UCBNb2RlCisJMzA2ZSAgUG93ZXJTaG90IEczIChub3JtYWwgbW9kZSkKKwkzMDZmICBQb3dlclNob3QgRzMgKHB0cCkKKwkzMDcwICBQb3dlclNob3QgUzIzMAorCTMwNzEgIFBvd2VyU2hvdCBTMjMwIChwdHApCisJMzA3MiAgUG93ZXJTaG90IFNEMTAwIC8gRGlnaXRhbCBJWFVTIElJIChwdHApCisJMzA3MyAgUG93ZXJTaG90IEE3MCAocHRwKQorCTMwNzQgIFBvd2VyU2hvdCBBNjAgKHB0cCkKKwkzMDc1ICBJWFVTIDQwMCBDYW1lcmEKKwkzMDc2ICBQb3dlclNob3QgQTMwMAorCTMwNzcgIFBvd2VyU2hvdCBTNTAKKwkzMDc4ICBaUjcwTUMgRGlnaXRhbCBDYW1jb3JkZXIKKwkzMDdhICBNVjY1MGkgKG5vcm1hbCBtb2RlKQorCTMwN2IgIE1WNjMwaSBEaWdpdGFsIFZpZGVvIENhbWVyYQorCTMwN2MgIE1WNjMwaSAobm9ybWFsIG1vZGUpCisJMzA3ZCAgQ1AtMzAwCisJMzA3ZiAgT3B0dXJhIDIwCisJMzA4MCAgTVZYMTUwaSAobm9ybWFsIG1vZGUpIC8gT3B0dXJhIDIwIChub3JtYWwgbW9kZSkKKwkzMDgxICBPcHR1cmEgMTAKKwkzMDgyICBNVlgxMDBpIC8gT3B0dXJhIDEwCisJMzA4MyAgRU9TIDEwRAorCTMwODQgIEVPUyAzMDBEIC8gRU9TIERpZ2l0YWwgUmViZWwKKwkzMDg1ICBQb3dlclNob3QgRzUKKwkzMDg3ICBFbHVyYSA1MCAoUFRQIG1vZGUpCisJMzA4OCAgRWx1cmEgNTAgKG5vcm1hbCBtb2RlKQorCTMwOGQgIE1WWDNpCisJMzA4ZSAgRlYgTTEgKG5vcm1hbCBtb2RlKSAvIE1WWCAzaSAobm9ybWFsIG1vZGUpIC8gT3B0dXJhIFhpIChub3JtYWwgbW9kZSkKKwkzMDkzICBPcHR1cmEgMzAwCisJMzA5NiAgSVhZIERWIE0yIChub3JtYWwgbW9kZSkgLyBNVlggMTBpIChub3JtYWwgbW9kZSkKKwkzMDk5ICBFT1MgMzAwRCAocHRwKQorCTMwOWEgIFBvd2VyU2hvdCBBODAKKwkzMDliICBEaWdpdGFsIElYVVMgKHB0cCkKKwkzMDljICBQb3dlclNob3QgUzEgSVMKKwkzMDlkICBDYW1lcmEKKwkzMDlmICBDYW1lcmEKKwkzMGEwICBDYW1lcmEKKwkzMGExICBDYW1lcmEKKwkzMGEyICBDYW1lcmEKKwkzMGE4ICBFbHVyYSA2MEUvT3B0dXJhIDQwIChwdHApCisJMzBhOSAgTVZYMjVpIChub3JtYWwgbW9kZSkgLyBPcHR1cmEgNDAgKG5vcm1hbCBtb2RlKQorCTMwYjEgIFBvd2VyU2hvdCBTNzAgKG5vcm1hbCBtb2RlKSAvIFBvd2VyU2hvdCBTNzAgKFBUUCBtb2RlKQorCTMwYjIgIFBvd2VyU2hvdCBTNjAgKG5vcm1hbCBtb2RlKSAvIFBvd2VyU2hvdCBTNjAgKFBUUCBtb2RlKQorCTMwYjMgIFBvd2VyU2hvdCBHNiAobm9ybWFsIG1vZGUpIC8gUG93ZXJTaG90IEc2IChQVFAgbW9kZSkKKwkzMGI0ICBQb3dlclNob3QgUzUwMAorCTMwYjUgIFBvd2VyU2hvdCBBNzUKKwkzMGI2ICBEaWdpdGFsIElYVVMgSUkyICAvIERpZ2l0YWwgSVhVUyBJSTIgKFBUUCBtb2RlKSAvIFBvd2VyU2hvdCBTRDExMCAoUFRQIG1vZGUpIC8gUG93ZXJTaG90IFNEMTEwIERpZ2l0YWwgRUxQSAorCTMwYjcgIFBvd2VyU2hvdCBBNDAwIC8gUG93ZXJTaG90IEE0MDAgKFBUUCBtb2RlKQorCTMwYjggIFBvd2VyU2hvdCBBMzEwIC8gUG93ZXJTaG90IEEzMTAgKFBUUCBtb2RlKQorCTMwYjkgIFBvd2Vyc2hvdCBBODUKKwkzMGJhICBQb3dlclNob3QgUzQxMCBEaWdpdGFsIEVscGgKKwkzMGJiICBQb3dlclNob3QgQTk1CisJMzBiZCAgQ1AtMjIwCisJMzBiZSAgQ1AtMzMwCisJMzBiZiAgRGlnaXRhbCBJWFVTIDQwCisJMzBjMCAgRGlnaXRhbCBJWFVTIDMwIChQVFAgbW9kZSkgLyBQb3dlclNob3QgU0QyMDAgKFBUUCBtb2RlKQorCTMwYzEgIERpZ2l0YWwgSVhVUyA1MCAobm9ybWFsIG1vZGUpIC8gSVhZIERpZ2l0YWwgNTUgKG5vcm1hbCBtb2RlKSAvIFBvd2VyU2hvdCBBNTIwIChQVFAgbW9kZSkgLyBQb3dlclNob3QgU0Q0MDAgKG5vcm1hbCBtb2RlKQorCTMwYzIgIFBvd2VyU2hvdCBBNTEwIChub3JtYWwgbW9kZSkgLyBQb3dlclNob3QgQTUxMCAoUFRQIG1vZGUpCisJMzBjNCAgRGlnaXRhbCBJWFVTIGk1IChub3JtYWwgbW9kZSkgLyBJWFkgRGlnaXRhbCBMMiAobm9ybWFsIG1vZGUpIC8gUG93ZXJTaG90IFNEMjAgKG5vcm1hbCBtb2RlKQorCTMwZWEgIEVPUyAxRCBNYXJrIElJIChQVFAgbW9kZSkKKwkzMGViICBFT1MgMjBECisJMzBlYyAgRU9TIDIwRCAocHRwKQorCTMwZWUgIEVPUyAzNTBECisJMzBlZiAgRU9TIDM1MEQgKHB0cCkKKwkzMGYwICBQb3dlclNob3QgUzIgSVMgKFBUUCBtb2RlKQorCTMwZjIgIERpZ2l0YWwgSVhVUyA3MDAgKG5vcm1hbCBtb2RlKSAvIERpZ2l0YWwgSVhVUyA3MDAgKFBUUCBtb2RlKSAvIElYWSBEaWdpdGFsIDYwMCAobm9ybWFsIG1vZGUpIC8gUG93ZXJTaG90IFNENTAwIChub3JtYWwgbW9kZSkgLyBQb3dlclNob3QgU0Q1MDAgKFBUUCBtb2RlKQorCTMwZjYgIFNFTFBIWSBDUDQwMAorCTMwZjggIFBvd2Vyc2hvdCBBNDMwCisJMzBmOSAgUG93ZXJTaG90IEE0MTAgKFBUUCBtb2RlKQorCTMwZmMgIFBvd2VyU2hvdCBBNjIwIChQVFAgbW9kZSkKKwkzMGZkICBQb3dlclNob3QgQTYxMCAobm9ybWFsIG1vZGUpL1Bvd2VyU2hvdCBBNjEwIChQVFAgbW9kZSkKKwkzMGZlICBEaWdpdGFsIElYVVMgNjUgKFBUUCBtb2RlKS9Qb3dlclNob3QgU0Q2MzAgKFBUUCBtb2RlKQorCTMwZmYgIERpZ2l0YWwgSVhVUyA1NSAoUFRQIG1vZGUpL1Bvd2VyU2hvdCBTRDQ1MCAoUFRQIG1vZGUpCisJMzEwYiAgU0VMUEhZIENQNjAwCisJMzEwZSAgRGlnaXRhbCBJWFVTIDUwIChQVFAgbW9kZSkKKwkzMTE2ICBEaWdpdGFsIElYVVMgNzUwIChQVFAgbW9kZSkKKwkzMTE3ICBQb3dlclNob3QgQTcwMAorCTMxMmQgIEVsdXJhIDEwMAorCTMxMzggIFBvd2VyU2hvdCBBNzEwIElTCisJMzE1NSAgUG93ZXJTaG90IEE0NTAKKwkzMTVhICBQb3dlclNob3QgRzkKKwkzMTVkICBQb3dlclNob3QgQTcyMAorCTMxNzYgIFBvd2VyU2hvdCBBNTkwCisJMzE3YSAgUG93ZXJzaG90IEE0NzAKKwkzMTg0ICBEaWdpdGFsIElYVVMgODAgSVMgKFBUUCBtb2RlKQorCTMxZmYgIERpZ2l0YWwgSVhVUyA1NQorMDRhYSAgRGFlV29vIFRlbGVjb20sIEx0ZAorMDRhYiAgQ2hyb21hdGljIFJlc2VhcmNoCiswNGFjICBNaWNybyBBdWRpb21ldHJpY3MgQ29ycC4KKzA0YWQgIERvb2luIEVsZWN0cm9uaWNzCisJMjUwMSAgQmx1ZXRvb3RoIERldmljZQorMDRhZiAgV2lubm92IEwuUC4KKzA0YjAgIE5pa29uIENvcnAuCisJMDEwMiAgQ29vbHBpeCA5OTAKKwkwMTAzICBDb29scGl4IDg4MAorCTAxMDQgIENvb2xwaXggOTk1CisJMDEwNiAgQ29vbHBpeCA3NzUKKwkwMTA3ICBDb29scGl4IDUwMDAKKwkwMTA4ICBDb29scGl4IDI1MDAKKwkwMTA5ICBDb29scGl4IDI1MDAgKHB0cCkKKwkwMTBhICBDb29scGl4IDQ1MDAKKwkwMTBiICBDb29scGl4IDQ1MDAgKHB0cCkKKwkwMTBkICBDb29scGl4IDU3MDAgKHB0cCkKKwkwMTBlICBDb29scGl4IDQzMDAgKHN0b3JhZ2UpCisJMDEwZiAgQ29vbHBpeCA0MzAwIChwdHApCisJMDExMCAgQ29vbHBpeCAzNTAwIChTaWVycmEgTW9kZSkKKwkwMTExICBDb29scGl4IDM1MDAgKHB0cCkKKwkwMTEyICBDb29scGl4IDg4NSAocHRwKQorCTAxMTMgIENvb2xwaXggNTAwMCAocHRwKQorCTAxMTQgIENvb2xwaXggMzEwMCAoc3RvcmFnZSkKKwkwMTE1ICBDb29scGl4IDMxMDAgKHB0cCkKKwkwMTE3ICBDb29scGl4IDIxMDAgKHB0cCkKKwkwMTE5ICBDb29scGl4IDU0MDAgKHB0cCkKKwkwMTFkICBDb29scGl4IDM3MDAgKHB0cCkKKwkwMTIxICBDb29scGl4IDMyMDAgKHB0cCkKKwkwMTIyICBDb29scGl4IDIyMDAgKHB0cCkKKwkwMTI0ICBDb29scGl4IDg0MDAgKG1hc3Mgc3RvcmFnZSBtb2RlKQorCTAxMjUgIENvb2xwaXggODQwMCAocHRwKQorCTAxMjYgIENvb2xwaXggODgwMAorCTAxMjkgIENvb2xwaXggNDgwMCAocHRwKQorCTAxMmMgIENvb2xwaXggNDEwMCAoc3RvcmFnZSkKKwkwMTJkICBDb29scGl4IDQxMDAgKHB0cCkKKwkwMTJlICBDb29scGl4IDU2MDAgKHB0cCkKKwkwMTMwICBDb29scGl4IDQ2MDAgKHB0cCkKKwkwMTM1ICBDb29scGl4IDU5MDAgKHB0cCkKKwkwMTM2ICBDb29scGl4IDc5MDAgKHN0b3JhZ2UpCisJMDEzNyAgQ29vbHBpeCA3OTAwIChwdHApCisJMDEzYSAgQ29vbHBpeCAxMDAgKHN0b3JhZ2UpCisJMDEzYiAgQ29vbHBpeCAxMDAgKHB0cCkKKwkwMTQxICBDb29scGl4IFAyIChzdG9yYWdlKQorCTAxNDIgIENvb2xwaXggUDIgKHB0cCkKKwkwMTYzICBDb29scGl4IFA1MTAwIChwdHApCisJMDE2OSAgQ29vbHBpeCBQNTAgKHB0cCkKKwkwMjAyICBDb29scGl4IFNRIChwdHApCisJMDIwMyAgQ29vbHBpeCA0MjAwIChtYXNzIHN0b3JhZ2UgbW9kZSkKKwkwMjA0ICBDb29scGl4IDQyMDAgKHB0cCkKKwkwMjA1ICBDb29scGl4IDUyMDAgKHN0b3JhZ2UpCisJMDIwNiAgQ29vbHBpeCA1MjAwIChwdHApCisJMDMwMSAgQ29vbHBpeCAyMDAwIChzdG9yYWdlKQorCTAzMDIgIENvb2xwaXggMjAwMCAocHRwKQorCTA0MDIgIERTQyBEMTAwIChwdHApCisJMDQwMyAgRDJIIChtYXNzIHN0b3JhZ2UgbW9kZSkKKwkwNDA0ICBEMkggU0xSIChwdHApCisJMDQwNSAgRDcwIChtYXNzIHN0b3JhZ2UgbW9kZSkKKwkwNDA2ICBEU0MgRDcwIChwdHApCisJMDQwOCAgRDJYIFNMUiAocHRwKQorCTA0MDkgIEQ1MCBkaWdpdGFsIGNhbWVyYQorCTA0MGEgIEQ1MCAocHRwKQorCTA0MGMgIEQySHMKKwkwNDBlICBEU0MgRDcwcyAocHRwKQorCTA0MGYgIEQyMDAgKG1hc3Mgc3RvcmFnZSBtb2RlKQorCTA0MTAgIEQyMDAgKHB0cCkKKwkwNDIyICBENzAwIChwdHApCisJMDQxMyAgRDQwIChtYXNzIHN0b3JhZ2UgbW9kZSkKKwk0MDAwICBDb29sc2NhbiBMUyA0MCBFRAorCTQwMDEgIExTIDUwIEVEL0Nvb2xzY2FuIFYgRUQKKwk0MDAyICBTdXBlciBDb29sc2NhbiBMUy01MDAwIEVECiswNGIxICBQYW4gSW50ZXJuYXRpb25hbAorMDRiMyAgSUJNIENvcnAuCisJMzAwMyAgUmFwaWQgQWNjZXNzIElJSSBLZXlib2FyZAorCTMwMDQgIE1lZGlhIEFjY2VzcyBQcm8gS2V5Ym9hcmQKKwkzMDBhICBSYXBpZCBBY2Nlc3MgSUlJZSBLZXlib2FyZAorCTMwMTYgIFVsdHJhTmF2IEtleWJvYXJkIEh1YgorCTMwMTggIFVsdHJhTmF2IEtleWJvYXJkCisJMzAxYiAgU0stODgxNSBLZXlib2FyZAorCTMwMWMgIEVuaGFuY2VkIFBlcmZvcm1hbmNlIEtleWJvYXJkCisJMzAyMCAgRW5oYW5jZWQgUGVyZm9ybWFuY2UgS2V5Ym9hcmQKKwkzMTAwICBOZXRWaXN0YSBNb3VzZQorCTMxMDMgIFNjcm9sbFBvaW50IFBybyBNb3VzZQorCTMxMDQgIFNjcm9sbFBvaW50IFdpcmVsZXNzIE1vdXNlCisJMzEwNSAgU2Nyb2xsUG9pbnQgT3B0aWNhbCAoSElEKQorCTMxMDcgIFRoaW5rUGFkIDgwMGRwaSBPcHRpY2FsIFRyYXZlbCBNb3VzZQorCTMxMDggIDgwMGRwaSBPcHRpY2FsIE1vdXNlIHcvIFNjcm9sbCBQb2ludAorCTMxMDkgIE9wdGljYWwgU2Nyb2xsUG9pbnQgUHJvIE1vdXNlCisJMzEwYiAgUmVkIFdoZWVsIE1vdXNlCisJMzEwYyAgV2hlZWwgTW91c2UKKwk0NDI3ICBQb3J0YWJsZSBDRCBST00KKwk0NDgyICBTZXJpYWwgQ29udmVydGVyCisJNDQ4NSAgU2VyaWFsIENvbnZlcnRlcgorCTQ1MjUgIERvdWJsZSBzaWRlZCBDUlQKKwk0NTUwICBOVlJBTSAoMTI4IEtCKQorCTQ1NTQgIENhc2ggRHJhd2VyCisJNDU4MCAgSHViIHcvIE5WUkFNCisJNDU4MSAgNDgwMC0yeHggSHViIHcvIENhc2ggRHJhd2VyCisJNDYwNCAgS2V5Ym9hcmQgdy8gQ2FyZCBSZWFkZXIKKwk0NjcxICA0ODIwIExDRCB3LyBNU1IvS0IKKzA0YjQgIEN5cHJlc3MgU2VtaWNvbmR1Y3RvciBDb3JwLgorCTAwMDAgIERhY2FsIERDLTEwMSBDRCBMaWJyYXJ5CisJMDAwMSAgTW91c2UKKwkwMDAyICBDWTdDNjN4MHggVGhlcm1vbWV0ZXIKKwkwMTAxICBLZXlib2FyZC9IdWIKKwkwMTAyICBLZXlib2FyZCB3aXRoIEFQTQorCTAxMzAgIE15SVJDIFJlbW90ZSBSZWNlaXZlcgorCTAzMDYgIFRlbGVwaG9uZSBSZWNlaXZlcgorCTBiYWQgIE1ldGFHZWVrIFdpLVNweQorCTEwMDIgIENZN0M2MzAwMSBSMTAwIEZNIFJhZGlvCisJMTAwNiAgSHVtYW4gSW50ZXJmYWNlIERldmljZQorCTQzODEgIFNDQVBTIFVTQy0xIFNjYW5uZXIgQ29udHJvbGxlcgorCTQ2MTEgIFN0b3JhZ2UgQWRhcHRlciBGWDIgKENZKQorCTQ2MTYgIEZsYXNoIERpc2sgKFRQUCkKKwk1NTAwICBISUQtPkNPTSBSUzIzMiBBZGFwdGVyCisJNjM3MCAgVmlld01hdGUgRGVza3RvcCBNb3VzZSBDQzIyMDEKKwk2NTYwICBDWTdDNjU2NDAgVVNCLTIuMCAiVGV0cmFIdWIiCisJNjgzMCAgQ1k3QzY4MzAwQSBFWi1VU0IgQVQyIFVTQiAyLjAgdG8gQVRBL0FUQVBJCisJNjgzMSAgU3RvcmFnZSBBZGFwdGVyIElTRC0zMDBMUCAoQ1kpCisJNzQxNyAgV2lyZWxlc3MgUEMgTG9jaworCTg2MTMgIENZN0M2ODAxMyBFWi1VU0IgRlgyIFVTQiAyLjAgRGV2ZWxvcG1lbnQgS2l0CisJODYxNCAgRFRWLURWQiBVRFNUNzAyMEJEQSBEVkItUyBCb3goRFZCUyBmb3IgTUNFMjAwNSkKKwljYzA0ICBDZW50b3IgVVNCIFJBQ0lBLUFMVkFSIFVTQiBQT1JUCisJY2MwNiAgQ2VudG9yLVAgUkFDSUEtQUxWQVIgVVNCIFBPUlQKKwlkNWQ1ICBDWTdDNjN4MHggWm9sdHJpeCBaLUJveGVyIEdhbWVQYWQKKwlmMDAwICBDWTMwNzAwIExpY29yaWNlIGV2YWx1YXRpb24gYm9hcmQKKzA0YjUgIFJPSE0gTFNJIFN5c3RlbXMgVVNBLCBMTEMKKzA0YjYgIEhpbnQgQ29ycC4KKzA0YjcgIENvbXBhbCBFbGVjdHJvbmljcywgSW5jLgorMDRiOCAgU2Vpa28gRXBzb24gQ29ycC4KKwkwMDAxICBTdHlsdXMgQ29sb3IgNzQwIC8gUGhvdG8gNzUwCisJMDAwMiAgSVNEIFNtYXJ0IENhYmxlIGZvciBNYWMKKwkwMDAzICBJU0QgU21hcnQgQ2FibGUKKwkwMDA0ICBQcmludGVyCisJMDAwNSAgU3R5bHVzIEQ4OCsKKwkwMDA2ICBQcmludGVyCisJMDAwNyAgUHJpbnRlcgorCTAxMDEgIFBlcmZlY3Rpb24gNjM2CisJMDEwMiAgR1QtMjIwMAorCTAxMDMgIFBlcmZlY3Rpb24gNjEwCisJMDEwNCAgUGVyZmVjdGlvbiAxMjAwCisJMDEwNSAgU3R5bHVzU2NhbiAyMDAwCisJMDEwNiAgU3R5bHVzIFNjYW4gMjUwMAorCTAxMDcgIEV4cHJlc3Npb24gMTYwMFUKKwkwMTA5ICBFeHByZXNzaW9uIDE2NDAgWEwKKwkwMTBhICBQZXJmZWN0aW9uIDE2NDBTVQorCTAxMGIgIFBlcmZlY3Rpb24gMTI0MAorCTAxMGMgIFBlcmZlY3Rpb24gNjQwCisJMDEwZSAgUGVyZmVjdGlvbiAxNjgwCisJMDEwZiAgUGVyZmVjdGlvbiAxMjUwCisJMDExMCAgUGVyZmVjdGlvbiAxNjUwCisJMDExMiAgUGVyZmVjdGlvbiAyNDUwCisJMDExNCAgUGVyZmVjdGlvbiA2NjAKKwkwMTE2ICBQZXJmZWN0aW9uIDMxNzAgKEdULTk0MDApCisJMDExOCAgUGVyZmVjdGlvbiA0MTgwIChHRi1GNjAwKQorCTAxMTkgIFBlcmZlY3Rpb24gNDQ5MCBQaG90bworCTAxMWEgIDEwMDAgSUNTCisJMDExYiAgUGVyZmVjdGlvbiAyNDAwIFBob3RvCisJMDExYyAgUGVyZmVjdGlvbiAzMjAwCisJMDExZCAgUGVyZmVjdGlvbiAxMjYwIFBob3RvCisJMDExZSAgUGVyZmVjdGlvbiAxNjYwIFBob3RvCisJMDExZiAgUGVyZmVjdGlvbiAxNjcwCisJMDEyMCAgUGVyZmVjdGlvbiAxMjcwIHNjYW5uZXIKKwkwMTIxICBQZXJmZWN0aW9uIDI0ODAgUGhvdG8KKwkwMTIyICBQZXJmZWN0aW9uIDM1OTAgc2Nhbm5lcgorCTAxMjYgIEdULTE1MDAwIChFUy03MDAwKQorCTAxMjggIFBlcmZlY3Rpb24gNDg3MCAoR1QtWDcwMCkKKwkwMTI5ICBFeHByZXNzaW9uIDEwMDAwWEwgKEVTLTEwMDAwRykKKwkwMTJhICBQZXJmZWN0aW9uIDQ5OTAgUGhvdG8gc2Nhbm5lcgorCTAxMmIgIEdULTI1MDAgKEVTLUgzMDApCisJMDEyYyAgUGVyZmVjdGlvbiBWMzUwIChHVC1GNzAwKQorCTAxMmQgIFBlcmZlY3Rpb24gVjEwL1YxMDAgKEdULVM2MDAvRjY1MCkKKwkwMTJmICBQZXJmZWN0aW9uIFYzNTAgKEdULUY3MDApCisJMDIwMiAgUmVjZWlwdCBQcmludGVyIE0xMjlDCisJMDQwMSAgQ1AgODAwIERpZ2l0YWwgQ2FtZXJhCisJMDQwMiAgUGhvdG9QQyA4NTB6CisJMDQwMyAgUGhvdG9QQyAzMDAwegorCTA1MDkgIEpWQyBQSVgtTUMxMAorCTA2MDEgIFN0eWx1cyBQaG90byA4NzVEQyBDYXJkIFJlYWRlcgorCTA2MDIgIFN0eWx1cyBQaG90byA4OTUgQ2FyZCBSZWFkZXIKKwkwODAxICBTdHlsdXMgQ1g1MjAwL0NYNTQwMC9DWDY2MDAKKwkwODAyICBTdHlsdXMgQ1gzMjAwCisJMDgwMyAgUHJpbnRlciAoQ29tcG9zaXRlIERldmljZSkKKwkwODA0ICBTdG9yYWdlIERldmljZQorCTA4MDUgIFN0eWx1cyBDWDY0MDAKKwkwODA2ICBTdHlsdXMgUGhvdG8gUlg2MDAvNjEwCisJMDgwNyAgU3R5bHVzIFBob3RvIFJYNTAwLzUxMAorCTA4MDggIFN0eWx1cyBDWDUyMDAKKwkwODA5ICBTdG9yYWdlIERldmljZQorCTA4MGEgIFN0b3JhZ2UgRGV2aWNlCisJMDgwYyAgTUUxMDAKKwkwODBkICBTdHlsdXMgQ1g0NTAwLzQ2MDAKKwkwODBlICBDWC0zNTAwLzM2MDAvMzY1MCBNRlAKKwkwODBmICBTdHlsdXMgUGhvdG8gUlg0MjUgc2Nhbm5lcgorCTA4MTAgIFN0eWx1cyBQaG90byBSWDcwMCAoUE0tQTkwMCkKKwkwODExICBTdHlsdXMgUGhvdG8gUlg2MjAgYWxsLWluLW9uZQorCTA4MTIgIE1GUCBDb21wb3NpdGUgRGV2aWNlCisJMDgxMyAgU3R5bHVzIENYNjUwMC82NjAwCisJMDgxNCAgKFBNLUE3MDApCisJMDgxNSAgQWN1TGFzZXIgQ1gxMSAoTFAtQTUwMCkKKwkwODE2ICBQcmludGVyIChDb21wb3NpdGUgRGV2aWNlKQorCTA4MTcgIChMUC1NNTUwMCkKKwkwODE4ICBTdHlsdXMgQ1gzNzAwL0NYMzgwMC9EWDM4MDAKKwkwODE5ICBTdHlsdXMgQ1g0NzAwL0NYNDgwMC9EWDQ4MDAgKFBYLUE3NTApCisJMDgxYSAgU3R5bHVzIFBob3RvIFJYNTIwL1JYNTMwIChQTS1BNzUwKQorCTA4MWIgIE1GUCBDb21wb3NpdGUgRGV2aWNlCisJMDgxYyAgU3R5bHVzIFBob3RvIFJYNjQwL1JYNjUwIChQTS1BODkwKQorCTA4MWQgIChQTS1BOTUwKQorCTA4MWUgIE1GUCBDb21wb3NpdGUgRGV2aWNlCisJMDgxZiAgU3R5bHVzIENYNzcwMC83ODAwCisJMDgyMCAgQ1g0MjAwIE1QIHNjYW5uZXIKKwkwODIxICBNRlAgQ29tcG9zaXRlIERldmljZQorCTA4MjIgIFN0b3JhZ2UgRGV2aWNlCisJMDgyMyAgTUZQIENvbXBvc2l0ZSBEZXZpY2UKKwkwODI0ICBTdG9yYWdlIERldmljZQorCTA4MjUgIE1GUCBDb21wb3NpdGUgRGV2aWNlCisJMDgyNiAgU3RvcmFnZSBEZXZpY2UKKwkwODI3ICBTdHlsdXMgUGhvdG8gUlg1NjAvNTgwLzU5MCAoUE0tQTgyMCkKKwkwODI4ICAoUE0tQTk3MCkKKwkwODI5ICAoUE0tVDk5MCkKKwkwODJhICAoUE0tQTkyMCkKKwkwODJiICBTdHlsdXMgRFg1MDUwCisJMDgyYyAgU3RvcmFnZSBEZXZpY2UKKwkwODJkICBTdG9yYWdlIERldmljZQorCTA4MmUgIDB4MDgyZSAgRFgtNjB4MCBNRlAgc2Nhbm5lcgorCTA4MmYgIFN0eWx1cyBEWDQwNTAKKwkwODMwICBTdHlsdXMgQ1gyODAwL0NYMjkwMC9NRTIwMAorCTA4MzEgIE1GUCBDb21wb3NpdGUgRGV2aWNlCisJMDgzMiAgTUZQIENvbXBvc2l0ZSBEZXZpY2UKKwkwODMzICAoTFAtTTU2MDApCisJMDgzNCAgTUZQIENvbXBvc2l0ZSBEZXZpY2UKKwkwODM1ICBBY3VMYXNlciBDWDIxCisJMDgzNiAgTUZQIENvbXBvc2l0ZSBEZXZpY2UKKwkwODM3ICBNRlAgQ29tcG9zaXRlIERldmljZQorCTA4MzggIENYNzMwMC9DWDc0MDAvRFg3NDAwCisJMDgzOSAgQ1g4MzAwL0NYODQwMC9EWDg0MDAKKwkwODNhICBDWDkzMDBGL0NYOTQwMEZheC9EWDk0MDBGCisJMDgzYiAgTUZQIENvbXBvc2l0ZSBEZXZpY2UKKwkwODNjICBNRlAgQ29tcG9zaXRlIERldmljZQorCTA4M2QgIE1GUCBDb21wb3NpdGUgRGV2aWNlCisJMDgzZSAgTUZQIENvbXBvc2l0ZSBEZXZpY2UKKwkwODNmICBTdHlsdXMgRFg0NDUwCisJMDg0OSAgU3R5bHVzIFNYMjA1CiswNGI5ICBSYWluYm93IFRlY2hub2xvZ2llcywgSW5jLgorCTAzMDAgIFNhZmVOZXQgVVNCIFN1cGVyUHJvL1VsdHJhUHJvCisJMTAwMCAgaUtleSAxMDAwIFRva2VuCisJMTAwMSAgaUtleSAxMjAwIFRva2VuCisJMTAwMiAgaUtleSBUb2tlbgorCTEwMDMgIGlLZXkgVG9rZW4KKwkxMDA0ICBpS2V5IFRva2VuCisJMTAwNSAgaUtleSBUb2tlbgorCTEwMDYgIGlLZXkgVG9rZW4KKwkxMjAwICBpS2V5IDIwMDAgVG9rZW4KKwkxMjAxICBpS2V5IFRva2VuCisJMTIwMiAgaUtleSAyMDMyIFRva2VuCisJMTIwMyAgaUtleSBUb2tlbgorCTEyMDQgIGlLZXkgVG9rZW4KKwkxMjA1ICBpS2V5IFRva2VuCisJMTIwNiAgaUtleSBUb2tlbgorCTEzMDAgIGlLZXkgMzAwMCBUb2tlbgorCTEzMDEgIGlLZXkgMzAwMAorCTEzMDIgIGlLZXkgVG9rZW4KKwkxMzAzICBpS2V5IFRva2VuCisJMTMwNCAgaUtleSBUb2tlbgorCTEzMDUgIGlLZXkgVG9rZW4KKwkxMzA2ICBpS2V5IFRva2VuCiswNGJhICBUb3VjYW4gU3lzdGVtcywgTHRkCiswNGJiICBJLU8gRGF0YSBEZXZpY2UsIEluYy4KKwkwMTAxICBVU0IyLUlERS9BVEFQSSBCcmlkZ2UgQWRhcHRlcgorCTAyMDEgIFVTQjItSURFL0FUQVBJIEJyaWRnZSBBZGFwdGVyCisJMDIwNCAgRFZEIE11bHRpLXBsdXMgdW5pdCBpVS1DRDIKKwkwMjA2ICBEVkQgTXVsdGktcGx1cyB1bml0IERWUi1VRUg4CisJMDMwMSAgU3RvcmFnZSBEZXZpY2UKKwkwMzE0ICBVU0ItU1NNUlcgU0QtY2FyZAorCTAzMTkgIFVTQjItSURFL0FUQVBJIEJyaWRnZSBBZGFwdGVyCisJMDMxYSAgVVNCMi1JREUvQVRBUEkgQnJpZGdlIEFkYXB0ZXIKKwkwMzFiICBVU0IyLUlERS9BVEFQSSBCcmlkZ2UgQWRhcHRlcgorCTAzMWUgIFVTQi1TRFJXIFNELWNhcmQKKwkwNTAyICBOb2dhdGVjaCBMaXZlISAoQlQpCisJMDkwMSAgVVNCIEVUVAorCTA5MDQgIEVUL1RYIEV0aGVybmV0IFtwZWdhc3VzXQorCTA5MTMgIEVUL1RYLVMgRXRoZXJuZXQgW3BlZ2FzdXMyXQorCTA5MTkgIFVTQiBXTi1CMTEKKwkwOTIyICBJT0RhdGEgQWlyUG9ydCBXTi1CMTEvVVNCUyA4MDIuMTFiCisJMDkzMCAgRVRHLVVTMgorCTA5MzcgIFdOLVdBRy9VU0wgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwOTM4ICBXTi1HNTQvVVNMIFdpcmVsZXNzIExBTiBBZGFwdGVyCisJMDkzZiAgV05HRE5VUzIgODAyLjExbgorCTBhMDMgIFNlcmlhbCBVU0ItUlNBUTEKKwkwYTA3ICBVU0IyLWlDTiBBZGFwdGVyCisJMGEwOCAgVVNCMi1pQ04gQWRhcHRlcgorCTBjMDEgIEZNLTEwIFBybyBEaXNrCiswNGJkICBUb3NoaWJhIEVsZWN0cm9uaWNzIFRhaXdhbiBDb3JwLgorMDRiZSAgVGVsaWEgUmVzZWFyY2ggQUIKKzA0YmYgIFRESyBDb3JwLgorCTAxMDAgIE1lZGlhUmVhZGVyIENGCisJMDExNSAgVVNCLVBEQyBBZGFwdGVyIFVQQTk2NjQKKwkwMTE2ICBVU0ItY2RtYU9uZSBBZGFwdGVyIFVDQTE0NjQKKwkwMTE3ICBVU0ItUEhTIEFkYXB0ZXIgVUhBNjQwMAorCTAxMTggIFVTQi1QSFMgQWRhcHRlciBVUEE2NDAwCisJMDEzNSAgTWVkaWFSZWFkZXIgRHVhbAorCTAyMDIgIDczUzExMjFGIFNtYXJ0IENhcmQgUmVhZGVyLQorCTAzMDkgIEJsdWV0b290aCBVU0IgZG9uZ2xlCisJMDMwYSAgSUJNIEJsdWV0b290aCBVbHRyYXBvcnQgTW9kdWxlCisJMDMwYiAgQmx1ZXRvb3RoIERldmljZQorCTAzMGMgIFVsdHJhcG9ydCBCbHVldG9vdGggRGV2aWNlCisJMDMxMCAgSW50ZWdyYXRlZCBCbHVldG9vdGgKKwkwMzExICBJbnRlZ3JhdGVkIEJsdWV0b290aCBEZXZpY2UKKwkwMzE3ICBCbHVldG9vdGggVWx0cmFQb3J0IE1vZHVsZSBmcm9tIElCTQorCTAzMTggIElCTSBJbnRlZ3JhdGVkIEJsdWV0b290aAorCTAzMTkgIEJsdWV0b290aCBBZGFwdGVyCisJMDMyMCAgQmx1ZXRvb3RoIEFkYXB0ZXIKKwkwMzIxICBCbHVldG9vdGggRGV2aWNlCisJMGEyOCAgSU5ESSBBVi1JTiBEZXZpY2UKKzA0YzEgIFUuUy4gUm9ib3RpY3MgKDNDb20pCisJMDAyMCAgNTZLIFZvaWNlIFBybworCTAwMjIgIDU2SyBWb2ljZSBQcm8KKwkwMDdlICBJU0ROIFRBCisJMDA4MiAgT2ZmaWNlQ29ubmVjdCBBbmFsb2cgTW9kZW0KKwkwMDhmICBQcm8gSVNETiBUQQorCTAwOTcgIE9mZmljZUNvbm5lY3QgQW5hbG9nCisJMDA5ZCAgSG9tZUNvbm5lY3QgV2ViY2FtIFt2aWNhbV0KKwkwMGE5ICBJU0ROIFBybyBUQS1VCisJMDBiOSAgSG9tZUNvbm5lY3QgSURTTCBNb2RlbQorCTMwMjEgIDU2ayBWb2ljZSBGYXhNb2RlbSBQcm8KKzA0YzIgIE1ldGhvZGUgRWxlY3Ryb25pY3MgRmFyIEVhc3QgUFRFLCBMdGQKKzA0YzMgIE1heGkgU3dpdGNoLCBJbmMuCisJMTEwMiAgTW91c2UKKwkyMTAyICBNb3VzZQorMDRjNCAgTG9ja2hlZWQgTWFydGluIEVuZXJneSBSZXNlYXJjaAorMDRjNSAgRnVqaXRzdSwgTHRkCisJMTAyOSAgZmktNDAxMGMgU2Nhbm5lcgorCTEwMzMgIGZpLTQxMTBDVQorCTEwNDEgIGZpLTQxMjBjIFNjYW5uZXIKKwkxMDQyICBmaS00MjIwYyBTY2FubmVyCisJMTA1YiAgQUgtRjQwMVUgQWlyIEggZGV2aWNlCisJMTA5NiAgZmktNTExMEVPWAorCTEwOTcgIGZpLTUxMTBDCisJMTBhZSAgZmktNDEyMEMyCisJMTBhZiAgZmktNDIyMEMyCisJMTBlMCAgZmktNTEyMGMgU2Nhbm5lcgorCTEwZTEgIGZpLTUyMjBDCisJMTBlNyAgZmktNTkwMEMKKwkxMGZlICBTNTAwCiswNGM2ICBUb3NoaWJhIEFtZXJpY2EgRWxlY3Ryb25pYyBDb21wb25lbnRzCiswNGM3ICBNaWNybyBNYWNybyBUZWNobm9sb2dpZXMKKzA0YzggIEtvbmljYSBDb3JwLgorCTA3MjAgIERpZ2l0YWwgQ29sb3IgQ2FtZXJhCisJMDcyMSAgZS1taW5pRCBDYW1lcmEKKwkwNzIyICBlLW1pbmkKKwkwNzIzICBLRC0yMDBaIENhbWVyYQorCTA3MjYgIEtELTMxMFogQ2FtZXJhCisJMDcyOCAgUmV2aW8gQzIgTWFzcyBTdG9yYWdlIERldmljZQorCTA3MjkgIFJldmlvIEMyIERpZ2l0YWwgQ2FtZXJhCisJMDcyYyAgUmV2aW8gS0QyME0KKwkwNzJkICBSZXZpbyBLRDQxMFoKKzA0Y2EgIExpdGUtT24gVGVjaG5vbG9neSBDb3JwLgorCTE3NjYgIEhJRCBNb25pdG9yIENvbnRyb2xzCisJOTMwNCAgSHViCiswNGNiICBGdWppIFBob3RvIEZpbG0gQ28uLCBMdGQKKwkwMTAwICBGaW5lUGl4IDMwaS80MGkvNTBpLCBBMTAxLzIwMSwgMTMwMC8yMjAwLCAxNDAwLzI0MDAvMjYwMC8yODAwLzQ1MDAvNDcwMC80ODAwLzQ5MDAvNjgwMC82OTAwIFpvb20KKwkwMTAzICBGaW5lUGl4IE5YLTUwMC9OWC03MDAgcHJpbnRlcgorCTAxMDQgIEZpbmVQaXggQTEwMSwgMjYwMC8yODAwLzQ4MDAvNjgwMCBab29tIChQQyBDQU0pCisJMDEwOCAgRmluZVBpeCBGNjAxIFpvb20gKERTQykKKwkwMTA5ICBGaW5lUGl4IEY2MDEgWm9vbSAoUEMgQ0FNKQorCTAxMGEgIEZpbmVQaXggUzYwMiAoUHJvKSBab29tIChEU0MpCisJMDEwYiAgRmluZVBpeCBTNjAyIChQcm8pIFpvb20gKFBDIENBTSkKKwkwMTBkICBGaW5lUGl4IERpZ2l0YWwgQ2FtZXJhIDAyMDUzMQorCTAxMGUgIEZpbmVQaXggRjQwMiBab29tIChEU0MpCisJMDEwZiAgRmluZVBpeCBGNDAyIFpvb20gKFBDIENBTSkKKwkwMTEwICBGaW5lUGl4IE02MDMgWm9vbSAoRFNDKQorCTAxMTEgIEZpbmVQaXggTTYwMyBab29tIChQQyBDQU0pCisJMDExMiAgRmluZVBpeCBBMjAyLCBBMjAwIFpvb20gKERTQykKKwkwMTEzICBGaW5lUGl4IEEyMDIsIEEyMDAgWm9vbSAoUEMgQ0FNKQorCTAxMTQgIEZpbmVQaXggRjQwMSBab29tIChEU0MpCisJMDExNSAgRmluZVBpeCBGNDAxIFpvb20gKFBDIENBTSkKKwkwMTE2ICBGaW5lUGl4IEEyMDMgWm9vbSAoRFNDKQorCTAxMTcgIEZpbmVQaXggQTIwMyBab29tIChQQyBDQU0pCisJMDExOCAgRmluZVBpeCBBMzAzIFpvb20gKERTQykKKwkwMTE5ICBGaW5lUGl4IEEzMDMgWm9vbSAoUEMgQ0FNKQorCTAxMWEgIEZpbmVQaXggUzMwNC8zODAwIFpvb20gKERTQykKKwkwMTFiICBGaW5lUGl4IFMzMDQvMzgwMCBab29tIChQQyBDQU0pCisJMDExYyAgRmluZVBpeCBBMjA0LzI2NTAgWm9vbSAoRFNDKQorCTAxMWQgIEZpbmVQaXggQTIwNC8yNjUwIFpvb20gKFBDIENBTSkKKwkwMTIwICBGaW5lUGl4IEY3MDAgWm9vbSAoRFNDKQorCTAxMjEgIEZpbmVQaXggRjcwMCBab29tIChQQyBDQU0pCisJMDEyMiAgRmluZVBpeCBGNDEwIFpvb20gKERTQykKKwkwMTIzICBGaW5lUGl4IEY0MTAgWm9vbSAoUEMgQ0FNKQorCTAxMjQgIEZpbmVQaXggQTMxMCBab29tIChEU0MpCisJMDEyNSAgRmluZVBpeCBBMzEwIFpvb20gKFBDIENBTSkKKwkwMTI2ICBGaW5lUGl4IEEyMTAgWm9vbSAoRFNDKQorCTAxMjcgIEZpbmVQaXggQTIxMCBab29tIChQQyBDQU0pCisJMDEyOCAgRmluZVBpeCBBMjA1KFMpIFpvb20gKERTQykKKwkwMTI5ICBGaW5lUGl4IEEyMDUoUykgWm9vbSAoUEMgQ0FNKQorCTAxMmEgIEZpbmVQaXggRjYxMCBab29tIChEU0MpCisJMDEyYiAgRmluZVBpeCBEaWdpdGFsIENhbWVyYSAwMzA1MTMKKwkwMTJjICBGaW5lUGl4IFM3MDAwIFpvb20gKERTQykKKwkwMTJkICBGaW5lUGl4IFM3MDAwIFpvb20gKFBDIENBTSkKKwkwMTJmICBGaW5lUGl4IERpZ2l0YWwgQ2FtZXJhIDAzMDczMQorCTAxMzAgIEZpbmVQaXggUzUwMDAgWm9vbSAoRFNDKQorCTAxMzEgIEZpbmVQaXggUzUwMDAgWm9vbSAoUEMgQ0FNKQorCTAxM2IgIEZpbmVQaXggRGlnaXRhbCBDYW1lcmEgMDMwNzIyCisJMDEzYyAgRmluZVBpeCBTMzAwMCBab29tIChEU0MpCisJMDEzZCAgRmluZVBpeCBTMzAwMCBab29tIChQQyBDQU0pCisJMDEzZSAgRmluZVBpeCBGNDIwIFpvb20gKERTQykKKwkwMTNmICBGaW5lUGl4IEY0MjAgWm9vbSAoUEMgQ0FNKQorCTAxNDIgIEZpbmVQaXggUzcwMDAgWm9vbSAoUFRQKQorCTAxNDggIEZpbmVQaXggQTMzMCBab29tIChEU0MpCisJMDE0OSAgRmluZVBpeCBBMzMwIFpvb20gKFVWQykKKwkwMTRhICBGaW5lUGl4IEEzMzAgWm9vbSAoUFRQKQorCTAxNGIgIEZpbmVQaXggQTM0MCBab29tIChEU0MpCisJMDE0YyAgRmluZVBpeCBBMzQwIFpvb20gKFVWQykKKwkwMTU5ICBGaW5lUGl4IEY3MTAgWm9vbSAoRFNDKQorCTAxNjUgIEZpbmVQaXggUzM1MDAgWm9vbSAoRFNDKQorCTAxNjggIEZpbmVQaXggRTUwMCBab29tIChEU0MpCisJMDE2OSAgRmluZVBpeCBFNTAwIFpvb20gKFVWQykKKwkwMTZiICBGaW5lUGl4IEU1MTAgWm9vbSAoRFNDKQorCTAxNmMgIEZpbmVQaXggRTUxMCBab29tIChQQyBDQU0pCisJMDE2ZSAgRmluZVBpeCBTNTUwMCBab29tIChEU0MpCisJMDE2ZiAgRmluZVBpeCBTNTUwMCBab29tIChVVkMpCisJMDE3MSAgRmluZVBpeCBFNTUwIFpvb20gKERTQykKKwkwMTcyICBGaW5lUGl4IEU1NTAgWm9vbSAoVVZDKQorCTAxNzcgIEZpbmVQaXggRjEwIChEU0MpCisJMDE3OSAgRmluZXBpeCBGMTAgKFBUUCkKKwkwMTg2ICBGaW5lUGl4IFM1MjAwL1M1NjAwIFpvb20gKERTQykKKwkwMTg4ICBGaW5lUGl4IFM1MjAwL1M1NjAwIFpvb20gKFBUUCkKKwkwMThlICBGaW5lUGl4IFM5NTAwIFpvb20gKERTQykKKwkwMThmICBGaW5lUGl4IFM5NTAwIFpvb20gKFBUUCkKKwkwMTkyICBGaW5lUGl4IEU5MDAgWm9vbSAoRFNDKQorCTAxOTMgIEZpbmVQaXggRTkwMCBab29tIChQVFApCisJMDE5YiAgRmluZVBpeCBGMzAgKFBUUCkKKwkwMWJmICBGaW5lUGl4IEY2MDAwZmQvUzY1MDBmZCBab29tIChQVFApCisJMDFjMCAgRmluZVBpeCBGMjAgKFBUUCkKKwkwMWMxICBGaW5lUGl4IEYzMWZkIChQVFApCisJMDFjNCAgRmluZVBpeCBTNTcwMCBab29tIChQVFApCisJMDFjNSAgRmluZVBpeCBGNDBmZCAoUFRQKQorCTAxYzYgIEZpbmVQaXggQTgyMCBab29tIChQVFApCisJMDFkMiAgRmluZVBpeCBBODAwIFpvb20gKFBUUCkKKwkwMWQ0ICBGaW5lUGl4IEY1MGZkIChQVFApCisJMDFkNSAgRmluZVBpeCBGNDcgKFBUUCkKKzA0Y2MgIFBoaWxpcHMgU2VtaWNvbmR1Y3RvcnMKKwkxMTIyICBIdWIKKwkxNTIxICBVU0IgMi4wIEh1YgorCTgxMTYgIENhbWVyYQorMDRjZCAgVGF0dW5nIENvLiBPZiBBbWVyaWNhCiswNGNlICBTY2FuTG9naWMgQ29ycC4KKwkwMDAyICBTTDExUi1JREUgSURFIEJyaWRnZQorCTAxMDAgIFVTQjJQUk4gUHJpbnRlciBDbGFzcworCTAzMDAgIFBoYW50b20gMzM2Q1ggLSBDMyBzY2FubmVyCisJMDRjZSAgU0wxMURFTU8sIFZJRDogMHg0Y2UsIFBJRDogMHg0Y2UKKwkwN2QxICBTTDExUiwgVklEOiAweDRjZSwgUElEOiAweDA3RDEKKzA0Y2YgIE15c29uIENlbnR1cnksIEluYy4KKwkwODAwICBNVFA4MDAgTWFzcyBTdG9yYWdlIERldmljZQorCTg4MTAgIENTODgxMCBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJODgxMSAgQ1M4ODExIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk4ODEzICBDUzg4MTMgTWFzcyBTdG9yYWdlIERldmljZQorCTg4MTggIFVTQjIuMCB0byBBVEFQSSBCcmlkZ2UgQ29udHJvbGxlcgorCTk5MjAgIENTODgxOUEyLTExNCBNYXNzIFN0b3JhZ2UgRGV2aWNlCiswNGQwICBEaWdpIEludGVybmF0aW9uYWwKKzA0ZDEgIElUVCBDYW5vbgorMDRkMiAgQWx0ZWMgTGFuc2luZyBUZWNobm9sb2dpZXMKKwkwMDcwICBBREE3MCBTcGVha2VycworCTAzMDUgIE5vbi1Db21wbGlhbnQgQXVkaW8gRGV2aWNlCisJMDMxMSAgQURBLTMxMCBTcGVha2VycworCTIwNjAgIENsYXJpdGVsLWk3NTAgLSB2cAorCWZmMDUgIEFEQS0zMDUgU3BlYWtlcnMKKwlmZjQ3ICBMYW5zaW5nIEhJRCBBdWRpbyBDb250cm9scworCWZmNDkgIExhbnNpbmcgSElEIEF1ZGlvIENvbnRyb2xzCiswNGQzICBWaWRVUywgSW5jLgorMDRkNCAgTFNJIExvZ2ljLCBJbmMuCiswNGQ1ICBGb3J0ZSBUZWNobm9sb2dpZXMsIEluYy4KKzA0ZDYgIE1lbnRvciBHcmFwaGljcworMDRkNyAgT2tpIFNlbWljb25kdWN0b3IKKwkxYmU0ICBCbHVldG9vdGggRGV2aWNlCiswNGQ4ICBNaWNyb2NoaXAgVGVjaG5vbG9neSwgSW5jLgorCTAwMDIgIFVTQi1MQ0QgMngyMAorCTAwMDMgIFBJQ2tpdCAyIE1pY3JvY29udHJvbGxlciBQcm9ncmFtbWVyCisJODAwMCAgSW4tQ2lyY3VpdCBEZWJ1Z2dlcgorCTgwMDEgIElDRDIgaW4tY2lyY3VpdCBkZWJ1Z2dlcgorMDRkOSAgSG9sdGVrIFNlbWljb25kdWN0b3IsIEluYy4KKwkwMDIyICBQb3J0YWJsZSBLZXlib2FyZAorCTEyMDMgIE1DIEluZHVzdHJpZXMgS2V5Ym9hcmQKKwkxNTAzICBTaG9ydGJvYXJkIExlZnR5CiswNGRhICBQYW5hc29uaWMgKE1hdHN1c2hpdGEpCisJMDkwMSAgTFMtMTIwIENhbWVyYQorCTBiMDEgIENELVIvUlcgRHJpdmUKKwkwYjAzICBTdXBlckRpc2sgMjQwTUIKKwkwZDAxICBDRC1SIERyaXZlIEtYTC04NDBBTgorCTBkMDkgIENELVIgRHJpdmUgS1hMLVJXMzJBTgorCTBkMGEgIENELVIgRHJpdmUgS1hMLUNCMjBBTgorCTBkMGQgIENEUkNCMDMKKwkwZDBlICBEVkQtUk9NICYgQ0QtUi9SVworCTBmNDAgIFByaW50ZXIKKwkxNTAwICBNRlNVU0IgRHJpdmVyCisJMWIwMCAgTXVsdGlNZWRpYUNhcmQKKwkyMTIxICBFQi1WUzYKKwkyMzE3ICBEVkMgVVNCLVNFUklBTCBEcml2ZXIgZm9yIFdpblhQCisJMjMxOCAgTlYtR1MxMS8yMzAvMjUwICh3ZWJjYW0gbW9kZSkKKwkyMzE5ICBOVi1HUzE1ICh3ZWJjYW0gbW9kZSkKKwkyMzFhICBOVi1HUzExLzIzMC8yNTAgKERWIG1vZGUpCisJMjMxZCAgRFZDIFdlYiBDYW1lcmEgRGV2aWNlCisJMjMxZSAgRFZDIERWIFN0cmVhbSBEZXZpY2UKKwkyMzcyICBMdW1peCBETUMtRloxMCBDYW1lcmEKKwkyMzc0ICBETUMtRloyMAorMDRkYiAgSHlwZXJ0ZWMgUHR5LCBMdGQKKzA0ZGMgIEh1YW4gSHNpbiBIb2xkaW5ncywgTHRkCiswNGRkICBTaGFycCBDb3JwLgorCTEzYTYgIE1GQzIwMDAKKwk2MDA2ICBBTC0xMjE2CisJNjAwNyAgQUwtMTA0NQorCTYwMDggIEFMLTEyNTUKKwk2MDA5ICBBTC0xNTMwQ1MKKwk2MDBhICBBTC0xNTQwQ1MKKwk2MDBiICBBTC0xNDU2CisJNjAwYyAgQUwtMTU1NQorCTYwMGQgIEFMLTEyMjUKKwk2MDBlICBBTC0xNTUxQ1MKKwk2MDBmICBBUi0xMjJFCisJNjAxMCAgQVItMTUyRQorCTYwMTEgIEFSLTE1N0UKKwk2MDEyICBTTi0xMDQ1CisJNjAxMyAgU04tMTI1NQorCTYwMTQgIFNOLTE0NTYKKwk2MDE1ICBTTi0xNTU1CisJNjAxNiAgQVItMTUzRQorCTYwMTcgIEFSLTEyMkUgTgorCTYwMTggIEFSLTE1M0UgTgorCTYwMTkgIEFSLTE1MkUgTgorCTYwMWEgIEFSLTE1N0UgTgorCTYwMWIgIEFMLTEyMTcKKwk2MDFjICBBTC0xMjI2CisJNjAxZCAgQVItMTIzRQorCTcwMDIgIERWQyBWZXIuMS4wCisJNzAwNCAgVkUtQ0c0MFUgRGlnaXRhbCBTdGlsbCBDYW1lcmEKKwk3MDA1ICBWRS1DRzMwIERpZ2l0YWwgU3RpbGwgQ2FtZXJhCisJNzAwNyAgVkwtWjdTIERpZ2l0YWwgQ2FtY29yZGVyCisJODAwNCAgWmF1cnVzIFNMLTUwMDBEL1NMLTU1MDAgUERBCisJODAwNSAgWmF1cnVzIEEtMzAwCisJODAwNiAgWmF1cnVzIFNMLUI1MDAvU0wtNTYwMCBQREEKKwk4MDA3ICBaYXVydXMgQy03MDAgUERBCisJOTAxNCAgSU0tRFI4MCBQb3J0YWJsZSBOZXRNRCBQbGF5ZXIKKwk5MDMxICBaYXVydXMgQy03NTAvQy03NjAvQy04NjAvU0wtQzMwMDAgUERBCisJOTAzMiAgWmF1cnVzIFNMLTYwMDAKKwk5MDNhICBHU00gR1BSUworCTkwNTAgIFphdXJ1cyBDLTg2MCBQREEKKwk5MDU2ICBWaWV3Y2FtIFoKKwk5MDczICBBTS05MDAKKwk5MDc0ICBHU00gR1BSUworCTkwYTkgIFNoYXJwIENvbXBvc2l0ZQorCTkwZDAgIFVTQi10by1TZXJpYWwgQ29tbS4gUG9ydAorCTkwZjIgIFNoYXJwIDNHIEdTTSBVU0IgQ29udHJvbAorCTkxMjAgIFdTMDA0U0gKKwk5MTIyICBXUzAwN1NICisJOTEyMyAgVy1aRVJPMyBFUyBTbWFydHBob25lCisJOTFhMyAgOTIyU0ggSW50ZXJuZXQgTWFjaGluZQorMDRkZSAgTWluZFNoYXJlLCBJbmMuCiswNGRmICBJbnRlcmxpbmsgRWxlY3Ryb25pY3MKKzA0ZTEgIElpeWFtYSBOb3J0aCBBbWVyaWNhLCBJbmMuCisJMDIwMSAgTW9uaXRvciBIdWIKKzA0ZTIgIEV4YXIgQ29ycC4KKzA0ZTMgIFppbG9nLCBJbmMuCiswNGU0ICBBQ0MgTWljcm9lbGVjdHJvbmljcworMDRlNSAgUHJvbWlzZSBUZWNobm9sb2d5CiswNGU2ICBTQ00gTWljcm9zeXN0ZW1zLCBJbmMuCisJMDAwMSAgRS1VU0IgQVRBIEJyaWRnZQorCTAwMDIgIGVVU0NTSSBTQ1NJIEJyaWRnZQorCTAwMDMgIGVVU0IgU21hcnRNZWRpYSBDYXJkIFJlYWRlcgorCTAwMDUgIGVVU0IgU21hcnRNZWRpYS9Db21wYWN0Rmxhc2ggQ2FyZCBSZWFkZXIKKwkwMDA2ICBlVVNCIFNtYXJ0TWVkaWEgQ2FyZCBSZWFkZXIKKwkwMDA3ICBIaWZkCisJMDAwOSAgZVVTQiBBVEEvQVRBUEkgQWRhcHRlcgorCTAwMGEgIGVVU0IgQ29tcGFjdEZsYXNoIEFkYXB0ZXIKKwkwMDBiICBlVVNDU0kgQnJpZGdlCisJMDAwYyAgZVVTQ1NJIEJyaWRnZQorCTAwMGQgIERhenpsZSBNUworCTAwMTIgIERhenpsZSBTRC9NTUMKKwkwMTAxICBlVVNCIEFUQSBCcmlkZ2UgKFNvbnkgU3ByZXNzYSBVU0IgQ0RSVykKKwkwMzExICBEYXp6bGUgRE0tQ0YKKwkwMzEyICBEYXp6bGUgRE0tU0QvTU1DCisJMDMxMyAgRGF6emxlIFNNCisJMDMxNCAgRGF6emxlIE1TCisJMDMyMiAgZS1GaWxtIFJlYWRlci01CisJMDMyNSAgZVVTQiBPUkNBIFF1YWQgUmVhZGVyCisJMDMyNyAgRGlnaXRhbCBNZWRpYSBSZWFkZXIKKwkwM2ZlICBETUhTMiBERlUgQWRhcHRlcgorCTA0MDYgIGVVU0IgU21hcnRETSBSZWFkZXIKKwkwNGU2ICBlVVNCIERGVSBBZGFwdGVyCisJMDRlNyAgU1RDSUkgREZVIEFkYXB0ZXIKKwkwNGU4ICBlVVNCRE0gREZVIEFkYXB0ZXIKKwkwNGU5ICBETS1FIERGVSBBZGFwdGVyCisJMDUwMCAgVmVyaWRpY29tIDV0aFNlbnNlIEZpbmdlcnByaW50IFNlbnNvciBhbmQgZVVTQiBTbWFydENhcmQKKwkwNzAxICBEQ1MyMDAgTG9hZGVyIERldmljZQorCTA3MDIgIERWRCBDcmVhdGlvbiBTdGF0aW9uIDIwMAorCTA3MDMgIERWQzEwMCBMb2FkZXIgRGV2aWNlCisJMDcwNCAgRGlnaXRhbCBWaWRlbyBDcmVhdG9yIDEwMAorCTEwMDEgIFNDUjMwMCBTbWFydCBDYXJkIFJlYWRlcgorCTEwMTAgIFVTQkFULTIgQ29tcGFjdEZsYXNoIENhcmQgUmVhZGVyCisJMTAxNCAgZS1GaWxtIFJlYWRlci0zCisJMTAyMCAgVVNCQVQgQVRBL0FUQVBJIEFkYXB0ZXIKKwkyMDA3ICBSU0EgU2VjdXJJRCBDb21ib1JlYWRlcgorCTIwMDkgIENpdGliYW5rIFNtYXJ0IENhcmQgUmVhZGVyCisJMjAwYSAgUmVmbGV4IHYuMiBTbWFydCBDYXJkIFJlYWRlcgorCTIwMGQgIFNUUjM5MSBSZWFkZXIKKwk1MTExICBTQ1IzMzEtREkgU21hcnRDYXJkIFJlYWRlcgorCTUxMTMgIFNDUjMzMyBTbWFydENhcmQgUmVhZGVyCisJNTExNCAgU0NSMzMxLURJIFNtYXJ0Q2FyZCBSZWFkZXIKKwk1MTE1ICBTQ1IzMzUgU21hcnRDYXJkIFJlYWRlcgorCTUxMTYgIFNDUjMzMS1MQzEgU21hcnRDYXJkIFJlYWRlcgorCTUxMTcgIFNDUjMzMjAgLSBTbWFydCBDYXJkIFJlYWRlcgorCTUxMTggIEV4cHJlc3NjYXJkIFNJTSBDYXJkIFJlYWRlcgorCTUxMTkgIFNDUjMzNDAgLSBFeHByZXNzQ2FyZDU0IFNtYXJ0IENhcmQgUmVhZGVyCisJNTExYiAgU21hcnRDYXJkIFJlYWRlcgorCTUxMWQgIFNDUjMzMTEgU21hcnQgQ2FyZCBSZWFkZXIKKwk1MTIwICBTQ1IzMzEtREkgU21hcnRDYXJkIFJlYWRlcgorCTUxMjEgIFNESTAxMCBTbWFydCBDYXJkIFJlYWRlcgorCTUxNTEgIFNDUjMzOCBLZXlib2FyZCBTbWFydCBDYXJkIFJlYWRlcgorCTU0MTAgIFNDUjM1eHggU21hcnQgQ2FyZCBSZWFkZXIKKwllMDAwICBTQ1J4MzEgUmVhZGVyCisJZTAwMSAgU0NSMzMxIFNtYXJ0Q2FyZCBSZWFkZXIKKwllMDAzICBTUFI1MzIgUGluUGFkIFNtYXJ0Q2FyZCBSZWFkZXIKKzA0ZTcgIEVsbyBUb3VjaFN5c3RlbXMKKwkwMDAxICBUb3VjaFNjcmVlbgorCTAwMDIgIFRvdWNobW9uaXRvciBJbnRlcmZhY2UgMjYwMCBSZXYgMgorCTAwMDQgIDQwMDBVIENhcnJvbGxUb3VjaMKuIFRvdWNobW9uaXRvciBJbnRlcmZhY2UKKwkwMDA3ICAyNTAwVSBJbnRlbGxpVG91Y2jCriBUb3VjaG1vbml0b3IgSW50ZXJmYWNlCisJMDAwOCAgMzAwMFUgQWNjdVRvdWNowq4gVG91Y2htb25pdG9yIEludGVyZmFjZQorCTAwMDkgIDQwMDBVIENhcnJvbGxUb3VjaMKuIFRvdWNobW9uaXRvciBJbnRlcmZhY2UKKwkwMDIwICBUb3VjaHNjcmVlbiBJbnRlcmZhY2UgKDI3MDApCisJMDAyMSAgVG91Y2htb25pdG9yIEludGVyZmFjZQorCTAwMzAgIDQ1MDBVIENhcnJvbGxUb3VjaMKuIFRvdWNobW9uaXRvciBJbnRlcmZhY2UKKwkwMDMyICBUb3VjaG1vbml0b3IgSW50ZXJmYWNlCisJMDAzMyAgVG91Y2htb25pdG9yIEludGVyZmFjZQorCTAwNDEgIDUwMTAgU3VyZmFjZSBDYXBhY2l0aXZlIFRvdWNobW9uaXRvciBJbnRlcmZhY2UKKwkwMDQyICBUb3VjaG1vbml0b3IgSW50ZXJmYWNlCisJMDA1MCAgMjIxNiBBY2N1VG91Y2jCriBUb3VjaG1vbml0b3IgSW50ZXJmYWNlCisJMDA3MSAgVG91Y2htb25pdG9yIEludGVyZmFjZQorCTAwNzIgIFRvdWNobW9uaXRvciBJbnRlcmZhY2UKKwkwMDgxICBUb3VjaG1vbml0b3IgSW50ZXJmYWNlCisJMDA4MiAgVG91Y2htb25pdG9yIEludGVyZmFjZQorCTAwZmYgIFRvdWNobW9uaXRvciBJbnRlcmZhY2UKKzA0ZTggIFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQKKwkwMTAwICBLaW5nc3RvbiBGbGFzaCBEcml2ZSAoMTI4TUIpCisJMDExMCAgQ29ubmVjdDNEIEZsYXNoIERyaXZlCisJMDExMSAgQ29ubmVjdDNEIEZsYXNoIERyaXZlCisJMTAwMyAgTVAzIFBsYXllciBhbmQgUmVjb3JkZXIKKwkxMDA2ICBTREMtMjAwWgorCTMwMDQgIE1MLTQ2MDAKKwkzMDA1ICBEb2N1cHJpbnQgUDEyMTAKKwkzMDA4ICBNTC02MDYwIGxhc2VyIHByaW50ZXIKKwkzMDBjICBNTC0xMjEwIFByaW50ZXIKKwkzMDBlICBMYXNlciBQcmludGVyCisJMzEwNCAgTUwtMzU1ME4KKwkzMjI2ICBMYXNlciBQcmludGVyCisJMzIyOCAgTGFzZXIgUHJpbnRlcgorCTMyMmEgIExhc2VyIFByaW50ZXIKKwkzMjJjICBMYXNlciBQcmludGVyCisJMzIzMCAgTUwtMTQ0MAorCTMyMzIgIExhc2VyIFByaW50ZXIKKwkzMjM2ICBNTC0xNDUwCisJMzIzOCAgTUwtMTQzMAorCTMyM2EgIE1MLTE3MTAgUHJpbnRlcgorCTMyM2IgIFBoYXNlciAzMTMwCisJMzIzYyAgTGFzZXIgUHJpbnRlcgorCTMyM2QgIFBoYXNlciAzMTIwCisJMzIzZSAgTGFzZXIgUHJpbnRlcgorCTMyNDAgIExhc2VyIFByaW50ZXIKKwkzMjQyICBMYXNlciBQcmludGVyCisJMzI0OCAgQ29sb3IgTGFzZXIgUHJpbnRlcgorCTMyNGEgIExhc2VyIFByaW50ZXIKKwkzMjRjICBNTC0xNzQwIFByaW50ZXIKKwkzMjRkICBQaGFzZXIgMzEyMQorCTMyNWYgIFBoYXNlciAzNDI1IExhc2VyIFByaW50ZXIKKwkzMjYwICBDTFAtNTEwIENvbG9yIExhc2VyIFByaW50ZXIKKwkzMjY4ICBNTC0xNjEwIE1vbm8gTGFzZXIgUHJpbnRlcgorCTMyNmMgIE1MLTIwMTBQIE1vbm8gTGFzZXIgUHJpbnRlcgorCTM0MDkgIFNDWC00MjE2RiBTY2FubmVyCisJMzQwYyAgU0NYLTV4MTUgc2VyaWVzCisJMzQwZCAgU0NYLTZ4MjAgc2VyaWVzCisJMzQwZSAgTUZQIDU2MCBzZXJpZXMKKwkzNDBmICBQcmludGluZyBTdXBwb3J0CisJMzQxMiAgU0NYLTR4MjAgc2VyaWVzCisJMzQxMyAgU0NYLTQxMDAgU2Nhbm5lcgorCTM0MTUgIENvbXBvc2l0ZSBEZXZpY2UKKwkzNDE5ICBDb21wb3NpdGUgRGV2aWNlCisJMzQxYSAgUHJpbnRpbmcgU3VwcG9ydAorCTM0MWIgIFNDWC00MjAwIHNlcmllcworCTM0MWMgIENvbXBvc2l0ZSBEZXZpY2UKKwkzNDFkICBDb21wb3NpdGUgRGV2aWNlCisJMzQxZiAgQ29tcG9zaXRlIERldmljZQorCTM0MjAgIENvbXBvc2l0ZSBEZXZpY2UKKwkzNjA1ICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTM2MDYgIElua0pldCBDb2xvciBQcmludGVyCisJMzYwOSAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkzOTAyICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTM5MDMgIFhlcm94IFdvcmtDZW50cmUgWEs1MGN4CisJMzkwZiAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkzOTExICBTQ1gtMTAyMCBzZXJpZXMKKwk1MDAwICBZUC1NRiBzZXJpZXMKKwk1MDAxICBZUC0xMDAKKwk1MDAyICBZUC0zMAorCTUwMDMgIFlQLTcwMAorCTUwMDQgIFlQLTMwCisJNTAwNSAgWVAtMzAwCisJNTAwNiAgWVAtNzUwCisJNTAwZCAgTVAzIFBsYXllcgorCTUwMTAgIE1QMyBQbGF5ZXIKKwk1MDExICBZUC03ODAKKwk1MDEzICBZUC02MAorCTUwMTUgIHllcHAgdXBncmFkZQorCTUwMWIgIE1QMyBQbGF5ZXIKKwk1MDNiICBZUC1VMSBNUDMgUGxheWVyCisJNTA1MCAgWVAtVTIgTVAzIFBsYXllcgorCTUwN2QgIFlQLVUzIE1QMyBQbGF5ZXIKKwk1MDhiICBZUC1TNSBNUDMgUGxheWVyCisJNWEwMCAgWVAtTkVVCisJNWEwMSAgWVAtTkRVCisJNWEwMyAgWWVwcCBNUDMgUGxheWVyCisJNWEwNCAgWVAtODAwCisJNWEwOCAgWVAtOTAKKwk1YTBmICBNVFAgRGV2aWNlCisJNWIwMSAgTWVtb3J5IFN0aWNrIFJlYWRlci9Xcml0ZXIKKwk1YjAyICBNZW1vcnkgU3RpY2sgUmVhZGVyL1dyaXRlcgorCTViMDMgIE1lbW9yeSBTdGljayBSZWFkZXIvV3JpdGVyCisJNWIwNCAgTWVtb3J5IFN0aWNrIFJlYWRlci9Xcml0ZXIKKwk1YjA1ICBNZW1vcnkgU3RpY2sgUmVhZGVyL1dyaXRlcgorCTViMTEgIFNFVy0yMDAxdSBDYXJkCisJNWYwMCAgTkVYaU8gU3luYworCTVmMDEgIE5FWGlPIFN5bmMKKwk1ZjAyICBORVhpTyBTeW5jCisJNWYwMyAgTkVYaU8gU3luYworCTVmMDQgIE5FWGlPIFN5bmMKKwk2NjAxICBaMTAwIE1vYmlsZSBQaG9uZQorCTY2MTEgIE1JVHMgU3luYworCTY2MTMgIE1JVHMgU3luYworCTY2MTUgIE1JVHMgU3luYworCTY2MTcgIE1JVHMgU3luYworCTY2MTkgIE1JVHMgU3luYworCTY2MWIgIE1JVHMgU3luYworCTY2MWUgIEhhbmRoZWxkCisJNjYyMCAgSGFuZGhlbGQKKwk2NjIyICBIYW5kaGVsZAorCTY2MjQgIEhhbmRoZWxkCisJNjYyZSAgTUlUcyBTeW5jCisJNjYzMCAgTUlUcyBTeW5jCisJNjYzMiAgTUlUcyBTeW5jCisJNjYzZiAgU0dILUU3MjAvU0dILUU4NDAKKwk2NjQwICBVc2IgTW9kZW0gRW51bWVyYXRvcgorCTcwMTEgIFNFVy0yMDAzVSBDYXJkCisJNzAyMSAgQmx1ZXRvb3RoIERldmljZQorCTcwNjEgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJNzA4MSAgSHVtYW4gSW50ZXJmYWNlIERldmljZQorCTgwMDEgIEhhbmRoZWxkCisJZTAyMCAgU0VSSSBFMDIgU0NPTSA2MjAwIFVNVFMgUGhvbmUKKwllMDIxICBTRVJJIEUwMiBTQ09NIDYyMDAgVmlydHVhbCBVQVJUcworCWUwMjIgIFNFUkkgRTAyIFNDT00gNjIwMCBGbGFzaCBMb2FkIERpc2sKKwlmZjMwICBTR19pTU9OCiswNGU5ICBQQy1UZWwsIEluYy4KKzA0ZWEgIEJyb29rdHJlZSBDb3JwLgorMDRlYiAgTm9ydGhzdGFyIFN5c3RlbXMsIEluYy4KKzA0ZWMgIFRva3lvIEVsZWN0cm9uIERldmljZSwgTHRkCiswNGVkICBBbm5hYm9va3MKKzA0ZWYgIFBhY2lmaWMgRWxlY3Ryb25pYyBJbnRlcm5hdGlvbmFsLCBJbmMuCiswNGYwICBEYWV3b28gRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzA0ZjEgIFZpY3RvciBDb21wYW55IG9mIEphcGFuLCBMdGQKKwkwMDAxICBHQy1RWDMgRGlnaXRhbCBTdGlsbCBDYW1lcmEKKwkwMDA0ICBHUi1EVkw4MTVVIERpZ2l0YWwgVmlkZW8gQ2FtZXJhCisJMDAwNiAgRFYgQ2FtZXJhIFN0b3JhZ2UKKwkwMDA4ICBHWi1NRzMwQUEvTUM1MDBFIERpZ2l0YWwgVmlkZW8gQ2FtZXJhCisJMDAwOSAgR1ItRFgyNUVLIERpZ2l0YWwgVmlkZW8gQ2FtZXJhCisJMDAwYSAgR1ItRDcyIERpZ2l0YWwgVmlkZW8gQ2FtZXJhCisJMTAwMSAgR0MtQTUwIENhbWVyYSBEZXZpY2UKKwkzMDA4ICBNUC1QUlgxIEV0aGVybmV0CisJMzAwOSAgTVAtWFA3MjUwIFdMQU4gQWRhcHRlcgorMDRmMiAgQ2hpY29ueSBFbGVjdHJvbmljcyBDby4sIEx0ZAorCTAwMDEgIEtVLTg5MzMgS2V5Ym9hcmQKKwkwMDAyICBOVDY4UDgxIEtleWJvYXJkCisJMDExMCAgS1UtMjk3MSBLZXlib2FyZAorCTAxMTEgIEtVLTk5MDggS2V5Ym9hcmQKKwkwMTEyICBLVS04OTMzIEtleWJvYXJkIHdpdGggUFMvMiBNb3VzZSBwb3J0CisJMDExNiAgS1UtMjk3MSBHZXJtYW4gS2V5Ym9hcmQKKwkwNDAzICBLVS0wNDIwIGtleWJvYXJkCisJYTAwMSAgRS1WaWRlbyBEQy0xMDAgQ2FtZXJhCisJYTEyMCAgT1JJVEUgQ0NEIFdlYmNhbShQQzM3MFIpCisJYTEyMSAgT1JJVEUgQ0NEIFdlYmNhbShQQzM3MFIpCisJYTEyMiAgT1JJVEUgQ0NEIFdlYmNhbShQQzM3MFIpCisJYTEyMyAgT1JJVEUgQ0NEIFdlYmNhbShQQzM3MFIpCisJYTEyNCAgT1JJVEUgQ0NEIFdlYmNhbShQQzM3MFIpCisJYTEyOCAgUEMgQ2FtZXJhIChTTjlDMjAyICsgT1Y3NjYzICsgRUVQUk9NKQorCWExMzMgIEdhdGV3YXkgV2ViY2FtCisJYTEzNiAgTGFiVGVjIFdlYmNhbSA1NTAwCisJYTIwNCAgRFNDIFdJQSBEZXZpY2UgKDEzMDApCisJYTIwOCAgRFNDIFdJQSBEZXZpY2UgKDIzMjApCisJYTIwOSAgTGFidGVjIERDLTIzMjAKKwlhMjBhICBEU0MgV0lBIERldmljZSAoMzMxMCkKKwlhMjBjICBEU0MgV0lBIERldmljZSAoMzMyMCkKKwlhMjEwICBBdWRpbyBEZXZpY2UKKwliMDA4ICBVU0IgMi4wIENhbWVyYQorCWIwMDkgIEludGVncmF0ZWQgQ2FtZXJhCisJYjAxMCAgSW50ZWdyYXRlZCBDYW1lcmEKKwliMDEyICAxLjMgTVBpeGVsIFVWQyBXZWJjYW0KKwliMDEzICBVU0IgMi4wIENhbWVyYQorCWIwMTUgIFZHQSAyNGZwcyBVVkMgV2ViY2FtCisJYjAxNiAgVkdBIDMwZnBzIFVWQyBXZWJjYW0KKwliMDE4ICAyTSBVVkMgV2ViY2FtCisJYjAyMSAgVmlld1NvbmljIDEuM00sIFVTQjIuMCBXZWJjYW0KKwliMDIyICBHYXRld2F5IFVTQiAyLjAgV2ViY2FtCisJYjAyMyAgR2F0ZXdheSBVU0IgMi4wIFdlYmNhbQorCWIwMjQgIFVTQiAyLjAgV2ViY2FtCisJYjAyNSAgQ2FtZXJhCisJYjAyNyAgR2F0ZXdheSBVU0IgMi4wIFdlYmNhbQorCWIwMjggIFZHQSBVVkMgV2ViY2FtCisJYjAyOSAgMS4zTSBVVkMgV2ViY2FtCisJYjA3MSAgMi4wTSBVVkMgV2ViY2FtIC8gQ05GNzEyOQorCWIxMDcgIENORjcwNzAgV2ViY2FtCiswNGYzICBFbGFuIE1pY3JvZWxlY3Ryb25pY3MgQ29ycC4KKwkwMjEwICBBTS00MDAgSGFtYSBPcHRpY2FsIE1vdXNlCisJMDIxMiAgTGFzZXIgTW91c2UKKzA0ZjQgIEhhcnRpbmcgRWxla3Ryb25paywgSW5jLgorMDRmNSAgRnVqaXRzdS1JQ0wgU3lzdGVtcywgSW5jLgorMDRmNiAgTm9yYW5kIENvcnAuCiswNGY3ICBOZXduZXggVGVjaG5vbG9neSBDb3JwLgorMDRmOCAgRnV0dXJlUGx1cyBTeXN0ZW1zCiswNGY5ICBCcm90aGVyIEluZHVzdHJpZXMsIEx0ZAorCTAwMDIgIEhMLTEwNTAgTGFzZXIgUHJpbnRlcgorCTAwMDUgIFByaW50ZXIKKwkwMDA2ICBITC0xMjQwIExhc2VyIFByaW50ZXIKKwkwMDA3ICBITC0xMjUwIExhc2VyIFByaW50ZXIKKwkwMDA4ICBITC0xMjcwIExhc2VyIFByaW50ZXIKKwkwMDA5ICBQcmludGVyCisJMDAwYSAgUDI1MDAgc2VyaWVzCisJMDAwYiAgUHJpbnRlcgorCTAwMGMgIFByaW50ZXIKKwkwMDBkICBITC0xNDQwIExhc2VyIFByaW50ZXIKKwkwMDBlICBITC0xNDUwIHNlcmllcworCTAwMGYgIEhMLTE0NzBOIHNlcmllcworCTAwMTAgIFByaW50ZXIKKwkwMDExICBQcmludGVyCisJMDAxMiAgUHJpbnRlcgorCTAwMTMgIFByaW50ZXIKKwkwMDE0ICBQcmludGVyCisJMDAxNSAgUHJpbnRlcgorCTAwMTYgIFByaW50ZXIKKwkwMDE3ICBQcmludGVyCisJMDAxOCAgUHJpbnRlcgorCTAwMWEgIEhMLTE0MzAgTGFzZXIgUHJpbnRlcgorCTAwMWMgIFByaW50ZXIKKwkwMDFlICBQcmludGVyCisJMDAyMCAgSEwtNTEzMCBzZXJpZXMKKwkwMDIxICBITC01MTQwIHNlcmllcworCTAwMjIgIEhMLTUxNTBEIHNlcmllcworCTAwMjMgIEhMLTUxNzBETiBzZXJpZXMKKwkwMDI0ICBQcmludGVyCisJMDAyNSAgUHJpbnRlcgorCTAwMjcgIEhMLTIwMzAgTGFzZXIgUHJpbnRlcgorCTAwMjggIFByaW50ZXIKKwkwMDI5ICBQcmludGVyCisJMDAyYSAgSEwtNTJ4MCBzZXJpZXMKKwkwMDJiICBQcmludGVyCisJMDAyYyAgUHJpbnRlcgorCTAwMmQgIFByaW50ZXIKKwkwMTAwICBNRkM4NjAwLzk2NTAgc2VyaWVzCisJMDEwMSAgTUZDOTYwMC85ODcwIHNlcmllcworCTAxMDIgIE1GQzk3NTAvMTIwMCBzZXJpZXMKKwkwMTA0ICBNRkMtODMwMEoKKwkwMTA1ICBNRkMtOTYwMEoKKwkwMTA2ICBNRkMtNzMwMEMKKwkwMTA3ICBNRkMtNzQwMEMKKwkwMTA4ICBNRkMtOTIwMEMKKwkwMTA5ICBNRkMtODMwCisJMDEwYSAgTUZDLTg0MAorCTAxMGIgIE1GQy04NjAKKwkwMTBjICBNRkMtNzQwMEoKKwkwMTBkICBNRkMtOTIwMEoKKwkwMTBlICBNRkMzMTAwQyBTY2FubmVyCisJMDEwZiAgTUZDIDUxMDBDCisJMDExMCAgTUZDNDgwMCBTY2FubmVyCisJMDExMSAgTUZDIDY4MDAKKwkwMTEyICBEQ1AxMDAwIFBvcnQoRmF4TW9kZW0pCisJMDExMyAgTUZDLTg1MDAKKwkwMTE0ICBNRkM5NzAwIFBvcnQoRmF4TW9kZW0pCisJMDExNSAgTUZDOTgwMCBTY2FubmVyCisJMDExNiAgRENQMTQwMCBTY2FubmVyCisJMDExOSAgTUZDLTk2NjAKKwkwMTFiICBNRkMtOTg4MAorCTAxMWMgIE1GQy05NzYwCisJMDExZCAgTUZDLTkwNzAKKwkwMTFlICBNRkMtOTE4MAorCTAxMWYgIE1GQy05MTYwCisJMDEyMCAgTUZDNTgwIFBvcnQoRmF4TW9kZW0pCisJMDEyMSAgTUZDLTU5MAorCTAxMjIgIE1GQy01MTAwSgorCTAxMjkgIEltYWdpc3RpY3MgMjUwMCAoTUZDLTg2NDBEIGNsb25lKQorCTAxMmYgIEZBWC00NzUwZQorCTAxMzIgIE1GQy01MjAwQyBSZW1vdmFibGVEaXNrCisJMDEzNSAgTUZDLTEwMCBTY2FubmVyCisJMDEzNiAgTUZDLTE1MENMIFNjYW5uZXIKKwkwMTNjICBNRkMtODkwIFBvcnQKKwkwMTNkICBNRkMtNTIwMEogUHJpbnRlcgorCTAxM2UgIE1GQy00NDIwQyBSZW1vdmFibGVEaXNrCisJMDEzZiAgTUZDLTQ4MjBDIFJlbW92YWJsZURpc2sKKwkwMTQwICBEQ1AtODAyMAorCTAxNDEgIERDUC04MDI1RAorCTAxNDIgIE1GQy04NDIwCisJMDE0MyAgTUZDLTg4MjBECisJMDE0NCAgRENQLTQwMjBDIFJlbW92YWJsZURpc2sKKwkwMTQ2ICBNRkMtMzIyMEMKKwkwMTQ3ICBGQVgtMTgyMEMgUHJpbnRlcgorCTAxNDggIE1GQy0zMzIwQ04gUHJpbnRlcgorCTAxNDkgIEZBWC0xOTIwQ04gUHJpbnRlcgorCTAxNGEgIE1GQy0zNDIwQworCTAxNGIgIE1GQy0zODIwQ04KKwkwMTRkICBGQVgtMTgxNUMgUHJpbnRlcgorCTAxNGUgIE1GQy04ODIwSgorCTAxNTAgIE1GQy04MjIwIFBvcnQoRmF4TW9kZW0pCisJMDE1MSAgTUZDLTgyMTBKCisJMDE1NyAgTUZDLTM0MjBKIFByaW50ZXIKKwkwMTU4ICBNRkMtMzgyMEpOIFBvcnQoRmF4TW9kZW0pCisJMDE1ZCAgTUZDIENvbXBvc2l0ZSBEZXZpY2UKKwkwMTVlICBEQ1AtODA0NUQKKwkwMTVmICBNRkMtODQ0MAorCTAxNjAgIE1GQy04ODQwRAorCTAxNjEgIE1GQy0yMTBDCisJMDE2MiAgTUZDLTQyMENOIFJlbW90ZSBTZXR1cCBQb3J0CisJMDE2MyAgTUZDLTQxMENOIFJlbW92YWJsZURpc2sKKwkwMTY1ICBNRkMtNjIwQ04KKwkwMTY2ICBNRkMtNjEwQ0xOIFJlbW92YWJsZURpc2sKKwkwMTY4ICBNRkMtNjIwQ0xOCisJMDE2OSAgRENQLTExMEMgUmVtb3ZhYmxlRGlzaworCTAxNmIgIERDUC0zMTBDTiBSZW1vdmFibGVEaXNrCisJMDE2YyAgRkFYLTI0NDBDIFByaW50ZXIKKwkwMTZkICBNRkMtNTQ0MENOCisJMDE2ZSAgTUZDLTU4NDBDTiBSZW1vdGUgU2V0dXAgUG9ydAorCTAxNzAgIEZBWC0xODQwQyBQcmludGVyCisJMDE3MSAgRkFYLTE4MzVDIFByaW50ZXIKKwkwMTcyICBGQVgtMTk0MENOIFByaW50ZXIKKwkwMTczICBNRkMtMzI0MEMgUmVtb3RlIFNldHVwIFBvcnQKKwkwMTc0ICBNRkMtMzM0MENOIFJlbW92YWJsZURpc2sKKwkwMTdiICBJbWFnaXN0aWNzIHN4MjEwMAorCTAxODAgIE1GQy03NDIwCisJMDE4MSAgTUZDLTc4MjBOIFBvcnQoRmF4TW9kZW0pCisJMDE4MiAgQ29tcG9zaXRlIERldmljZQorCTAxODMgIERDUC03MDIwCisJMDE4NCAgRENQLTcwMjUgUHJpbnRlcgorCTAxODUgIE1GQy03MjIwIFByaW50ZXIKKwkwMTg2ICBDb21wb3NpdGUgRGV2aWNlCisJMDE4NyAgRkFYLTI4MjAgUHJpbnRlcgorCTAxODggIEZBWC0yOTIwIFByaW50ZXIKKwkwMThhICBNRkMtOTQyMENOCisJMDE4YyAgRENQLTExNUMKKwkwMThkICBEQ1AtMTE2QworCTAxOGUgIERDUC0xMTdDCisJMDE4ZiAgRENQLTExOEMKKwkwMTkwICBEQ1AtMTIwQworCTAxOTEgIERDUC0zMTVDTgorCTAxOTIgIERDUC0zNDBDVworCTAxOTMgIE1GQy0yMTVDCisJMDE5NCAgTUZDLTQyNUNOCisJMDE5NSAgTUZDLTgyMENXIFJlbW90ZSBTZXR1cCBQb3J0CisJMDE5NiAgTUZDLTgyMENOIFJlbW90ZSBTZXR1cCBQb3J0CisJMDE5NyAgTUZDLTY0MENXCisJMDE5YSAgTUZDLTg0MENMTiBSZW1vdGUgU2V0dXAgUG9ydAorCTAxYTIgIE1GQy04NjQwRAorCTAxYTMgIENvbXBvc2l0ZSBEZXZpY2UKKwkwMWE0ICBEQ1AtODA2NUROIFByaW50ZXIKKwkwMWE1ICBNRkMtODQ2ME4gUG9ydChGYXhNb2RlbSkKKwkwMWE2ICBNRkMtODg2MEROIFBvcnQoRmF4TW9kZW0pCisJMDFhNyAgTUZDLTg4NzBEVyBQcmludGVyCisJMDFhOCAgRENQLTEzMEMKKwkwMWE5ICBEQ1AtMzMwQworCTAxYWEgIERDUC01NDBDTgorCTAxYWIgIE1GQy0yNDBDCisJMDFhZSAgRENQLTc1MENXIFJlbW92YWJsZURpc2sKKwkwMWFmICBNRkMtNDQwQ04KKwkwMWIwICBNRkMtNjYwQ04KKwkwMWIxICBNRkMtNjY1Q1cgUmVtb3RlIFNldHVwIFBvcnQKKwkwMWIyICBNRkMtODQ1Q1cgUmVtb3RlIFNldHVwIFBvcnQKKwkwMWI0ICBNRkMtNDYwQ04gUmVtb3RlIFNldHVwIFBvcnQKKwkwMWI1ICBNRkMtNjMwQ0QKKwkwMWI2ICBNRkMtODUwQ0ROCisJMDFiNyAgTUZDLTU0NjBDTiBSZW1vdGUgU2V0dXAgUG9ydAorCTAxYjggIE1GQy01ODYwQ04KKwkwMWJhICBNRkMtMzM2MEMKKwkwMWJkICBNRkMtODY2MEROCisJMDFiZSAgRENQLTc1MENOIFJlbW92YWJsZURpc2sKKwkwMWJmICBNRkMtODYwQ0ROIFJlbW90ZSBTZXR1cCBQb3J0CisJMDFjMCAgRENQLTEyOEMKKwkwMWMxICBEQ1AtMTI5QworCTAxYzIgIERDUC0xMzFDCisJMDFjMyAgRENQLTMyOUMKKwkwMWM0ICBEQ1AtMzMxQworCTAxYzUgIE1GQy0yMzlDCisJMDFjYSAgTUZDLTk0NDBDTiBSZW1vdGUgU2V0dXAgUG9ydAorCTAxY2UgIERDUC0xMzVDCisJMDFjZiAgRENQLTE1MEMKKwkwMWQwICBEQ1AtMzUwQworCTAxZDEgIERDUC01NjBDTgorCTAxZDQgIE1GQy0yMzBDCisJMDFkNSAgTUZDLTIzNUMKKwkwMWQ2ICBNRkMtMjYwQworCTAxZGYgIERDUC0xNTVDCisJMDFlMCAgTUZDLTI2NUMKKwkwMWUxICBEQ1AtMTUzQworCTAxZTIgIERDUC0xNTdDCisJMDFlMyAgRENQLTM1M0MKKwkwMWU0ICBEQ1AtMzU3QworCTAxZWIgIE1GQy03MzIwCisJMTAwMCAgUHJpbnRlcgorCTEwMDIgIFByaW50ZXIKKwkyMDAyICBQVFVTQiBQcmludGluZworCTIwMDQgIFBULTIzMDAvMjMxMCBwLVRvdWNoIExhYmVyIFByaW50ZXIKKwkyMDE1ICBRTC01MDAgUC10b3VjaCBsYWJlbCBwcmludGVyCisJMjAxNiAgUUwtNTUwIFAtdG91Y2ggbGFiZWwgcHJpbnRlcgorCTIxMDAgIENhcmQgUmVhZGVyIFdyaXRlcgorMDRmYSAgRGFsbGFzIFNlbWljb25kdWN0b3IKKwkyNDkwICBEUzE0OTBGIDItaW4tMSBGb2IsIDEtV2lyZSBhZGFwdGVyCisJNDIwMSAgRFM0MjAxIEF1ZGlvIERBQworMDRmYiAgQmlvc3RhciBNaWNyb3RlY2ggSW50ZXJuYXRpb25hbCBDb3JwLgorMDRmYyAgU3VucGx1cyBUZWNobm9sb2d5IENvLiwgTHRkCisJMDAwMyAgQ00xMDkyIE9wdGljYWwgU2Nyb2xsZXIgTW91c2UKKwkwMDEzICBWaWV3TWF0ZSBEZXNrdG9wIE1vdXNlIENDMjIwMQorCTAwMTUgIFZpZXdNYXRlIERlc2t0b3AgTW91c2UgQ0MyMjAxCisJMDIzMiAgRmluZ2VycHJpbnQKKwkwNTYxICBGbGV4Y2FtIDEwMAorCTBjMjUgIFNBVEFMaW5rIFNQSUYyMjVBCisJMTUzMyAgTWFzcyBTdG9yYWdlCisJNTAwYyAgQ0E1MDBDIERpZ2l0YWwgQ2FtZXJhCisJNTA0YSAgQWlwdGVrIE1pbmkgUGVuQ2FtIDEuMworCTUwNGIgIEFpcHRlayBNZWdhIFBvY2tlckNhbSAxLjMvTWF4ZWxsIE1heFBvY2tldCBMRSAxLjMKKwk1MzMwICBEaWdpdHJleCAyMTEwCisJNTMzMSAgVml2aXRhciBWaXZpY2FtIDEwCisJNTM2MCAgU3VucGx1cyBHZW5lcmljIERpZ2l0YWwgQ2FtZXJhCisJNTcyMCAgQ2FyZCBSZWFkZXIgRHJpdmVyCisJNzMzMyAgRmluZXQgVGVjaG5vbG9neSBQYWxtcGl4IERDLTg1CisJNzU3YSAgQWlwdGVrLCBNUDMxNSBNUDMgUGxheWVyCisJZmZmZiAgUHVyZURpZ2l0YWwgUml0eiBEaXNwb3NhYmxlCiswNGZkICBTb2xpdG9uIFN5c3RlbXMsIEsuSy4KKwkwMDAzICBTbWFydCBDYXJkIFJlYWRlciBJSQorMDRmZSAgUEZVLCBMdGQKKzA0ZmYgIEUtQ01PUyBDb3JwLgorMDUwMCAgU2lhbSBVbml0ZWQgSGktVGVjaAorCTAwMDEgIERBUlQgS2V5Ym9hcmQgTW91c2UKKwkwMDAyICBEQVJULTIgS2V5Ym9hcmQKKzA1MDEgIEZ1amlrdXJhIERESywgTHRkCiswNTAyICBBY2VyLCBJbmMuCisJMDAwMSAgSGFuZGhlbGQKKwkwNzM2ICBIYW5kaGVsZAorCTE1YjEgIFBEQSBuMzExCisJMTYzMSAgYzEwIFNlcmllcworCTE2MzIgIGMyMCBTZXJpZXMKKwkxNmUxICBuMTAgSGFuZGhlbGQgU3luYworCTE2ZTIgIG4yMCBQb2NrZXQgUEMgU3luYworCTE2ZTMgIG4zMCBIYW5kaGVsZCBTeW5jCisJZDAwMSAgRGl2aW8gTlc4MDEvRFZDLVY2KyBEaWdpdGFsIENhbWVyYQorMDUwMyAgSGl0YWNoaSBBbWVyaWNhLCBMdGQKKzA1MDQgIEhheWVzIE1pY3JvY29tcHV0ZXIgUHJvZHVjdHMKKzA1MDYgIDNDb20gQ29ycC4KKwkwMDlkICBIb21lQ29ubmVjdCBDYW1lcmEKKwkwMGEwICAzQ1JFQjk2IEJsdWV0b290aCBBZGFwdGVyCisJMDBhMSAgQmx1ZXRvb3RoIERldmljZQorCTAwYTIgIEJsdWV0b290aCBEZXZpY2UKKwkwMGRmICAzQ29tIEhvbWUgQ29ubmVjdCBsaXRlCisJMDEwMCAgSG9tZUNvbm5lY3QgQURTTCBNb2RlbSBEcml2ZXIKKwkwM2U4ICAzQzE5MjUwIEV0aGVybmV0IFtrbHNpXQorCTBhMDEgIDNDUlNIRVc2OTYgV2lyZWxlc3MgQWRhcHRlcgorCTBhMTEgIDNDUldFMjU0RzcyIDgwMi4xMWcgQWRhcHRlcgorCTExZjggIEhvbWVDb25uZWN0IDNDNDYwCisJMjkyMiAgSG9tZUNvbm5lY3QgQ2FibGUgTW9kZW0gRXh0ZXJuYWwgd2l0aAorCTMwMjEgIFUuUy5Sb2JvdGljcyA1NjAwMCBWb2ljZSBGYXhNb2RlbSBQcm8KKwk0NjAxICAzQzQ2MEIgMTAvMTAwIEV0aGVybmV0IEFkYXB0ZXIKKwlmMDAyICAzQ1A0MjE4IEFEU0wgTW9kZW0gKHByZS1pbml0KQorCWYwMDMgIDNDUDQyMTggQURTTCBNb2RlbQorCWYxMDAgIDNDUDQyMTggQURTTCBNb2RlbSAocHJlLWluaXQpCiswNTA3ICBIb3NpZGVuIENvcnAuCisJMDAxMSAgS29uYW1pIFBhcmFQYXJhUGFyYWRpc2UgQ29udHJvbGxlcgorMDUwOCAgQ2xhcmlvbiBDby4sIEx0ZAorMDUwOSAgQXp0ZWNoIFN5c3RlbXMsIEx0ZAorCTA4MDEgIEFEU0wgTW9kZW0KKwkwODAyICBBRFNMIE1vZGVtIChSRkMxNDgzKQorCTA4MDYgIERTTCBNb2RlbQorCTA4MGYgIEJpbmF0b25lIEFEU0w1MDAgTW9kZW0gTmV0d29yayBJbnRlcmZhY2UKKwkwODEyICBQaXJlbGxpIEFEU0wgTW9kZW0gTmV0d29yayBJbnRlcmZhY2UKKzA1MGEgIENpbmNoIENvbm5lY3RvcnMKKzA1MGIgIENhYmxlIFN5c3RlbSBJbnRlcm5hdGlvbmFsCiswNTBjICBJbm5vTWVkaWEsIEluYy4KKzA1MGQgIEJlbGtpbiBDb21wb25lbnRzCisJMDAwNCAgRGlyZWN0IENvbm5lY3QKKwkwMDEyICBGOFQwMTIgQmx1ZXRvb3RoIEFkYXB0ZXIKKwkwMDEzICBGOFQwMTMgQmx1ZXRvb3RoIEFkYXB0ZXIKKwkwMDUwICBGNUQ2MDUwIDgwMi4xMWIgV2lyZWxlc3MgQWRhcHRlcgorCTAwODEgIEY4VDAwMXYyIEJsdWV0b290aAorCTAwODMgIEJsdWV0b290aCBEZXZpY2UKKwkwMDg0ICBGOFQwMDN2MiBCbHVldG9vdGgKKwkwMTAyICBGbGlwIEtWTQorCTAxMDMgIEY1VTEwMyBTZXJpYWwgQWRhcHRlciBbZXRla10KKwkwMTA2ICBWaWRlb0J1cyBJSSBBZGFwdGVyLCBWaWRlbworCTAxMDggIEYxREUxMDhCIEtWTQorCTAxMDkgIEY1VTEwOS9GNVU0MDkgUERBIEFkYXB0ZXIKKwkwMTE1ICBTQ1NJIEFkYXB0ZXIKKwkwMTE5ICBGNVUxMjAtUEMgRHVhbCBQUy8yIFBvcnRzCisJMDEyMSAgRjVENTA1MCAxMDBNYnBzIEV0aGVybmV0CisJMDEyMiAgRXRoZXJuZXQgQWRhcHRlcgorCTAxMzEgIEJsdWV0b290aCBEZXZpY2Ugd2l0aCB0cmFjZSBmaWx0ZXIKKwkwMTZhICBCbHVldG9vdGggTWluaSBEb25nbGUKKwkwMjAxICBQZXJpcGhlcmFsIFN3aXRjaAorCTAyMDggIFVTQlZpZXcgSUkgVmlkZW8gQWRhcHRlciBbbnQxMDA0XQorCTAyMTAgIEY1VTIyOCBIaS1TcGVlZCBVU0IgMi4wIERWRCBDcmVhdG9yCisJMDIxMSAgRjVVMjExIFVTQiAyLjAgMTUtaW4tMSBNZWRpYSBSZWFkZXIgJiBXcml0ZXIKKwkwMjI0ICBGNVUyMjQgVVNCIDIuMCA0LVBvcnQgSHViCisJMDIzNCAgRjVVMjM0IFVTQiAyLjAgNC1Qb3J0IEh1YgorCTAyMzcgIEY1VTIzNyBVU0IgMi4wIDctUG9ydCBIdWIKKwkwMjQwICBGNVUyNDAgVVNCIDIuMCBDRiBDYXJkIFJlYWRlcgorCTAyNDkgIFVTQiAyIEZsYXNoIE1lZGlhIERldmljZQorCTAyNTcgIEY1VTI1NyBTZXJpYWwKKwkwNDA5ICBGNVU0MDkgU2VyaWFsCisJMDU1MSAgRjZDNTUwLUFWUiBVUFMKKwkwODAyICBOb3N0cm9tbyBuNDAgR2FtZXBhZAorCTA4MDMgIE5vc3Ryb21vIDE3NDUgR2FtZVBhZAorCTA4MDUgIE5vc3Ryb21vIE41MCBHYW1lUGFkCisJMDgxNSAgTm9zdHJvbW8gbjUyIEhJRCBTcGVlZFBhZCBNb3VzZSBXaGVlbAorCTA4MjYgIEVyZ29GaXQgV2lyZWxlc3MgT3B0aWNhbCBNb3VzZSAoSElEKQorCTA5ODAgIEhJRCBVUFMgQmF0dGVyeQorCTEyMDIgIEY1VTEyMC1QQyBQYXJhbGxlbCBQcmludGVyIFBvcnQKKwkxMjAzICBGNVUxMjAtUEMgU2VyaWFsIFBvcnQKKwkyNThhICBGNVUyNTggSG9zdCB0byBIb3N0IGNhYmxlCisJMzEwMSAgRjFERjEwMlUvRjFERzEwMlUgRmxpcCBIdWIKKwkzMjAxICBGMURGMTAyVS9GMURHMTAyVSBGbGlwIEtWTQorCTQwNTAgIFpEMTIxMUIKKwk1MDU1ICBGNUQ1MDU1CisJNjA1MSAgODAyLjExYgorCTcwNTAgIEY1RDcwNTAgdmVyIDEwMDAgV2lGaQorCTcwNTEgIEY1RDcwNTEgNTRnIFVTQiBOZXR3b3JrIEFkYXB0ZXIKKwk3MDVhICBGNUQ3MDUwQSBXaXJlbGVzcyBBZGFwdGVyCisJNzA1YiAgV2lyZWxlc3MgRyBBZGFwdGVyCisJNzA1YyAgODAyLjExYmcKKwk5MDViICBGNUQ5MDUwIHZlciAzIFdpcmVsZXNzIEFkYXB0ZXIKKwk5MDVjICBXaXJlbGVzcyBHIFBsdXMgTUlNTyBOZXR3b3JrIEFkYXB0ZXIKKzA1MGUgIE5lb24gVGVjaG5vbG9neSwgSW5jLgorMDUwZiAgS0MgVGVjaG5vbG9neSwgSW5jLgorCTAwMDEgIEh1YgorCTAwMDMgIEtDODJDMTYwUyBIdWIKKwkwMTgwICBLQy0xODAgSXJEQSBEb25nbGUKKwkwMTkwICBLQzIxOTAgVVNCIEhvc3QtdG8tSG9zdCBjYWJsZQorMDUxMCAgU2VqaW4gRWxlY3Ryb24sIEluYy4KKwkwMDAxICBLZXlib2FyZAorCTEwMDAgIEtleWJvYXJkIHdpdGggUFMvMiBNb3VzZSBQb3J0CisJZTAwMSAgTW91c2UKKzA1MTEgIE4nQWJsZSAoRGF0YUJvb2spIFRlY2hub2xvZ2llcywgSW5jLgorMDUxMiAgSHVhbG9uIE1pY3JvZWxlY3Ryb25pY3MgQ29ycC4KKzA1MTMgIGRpZ2l0YWwtWCwgSW5jLgorMDUxNCAgRkNJIEVsZWN0cm9uaWNzCiswNTE1ICBBQ1RDCiswNTE2ICBMb25nd2VsbCBFbGVjdHJvbmljcworMDUxNyAgQnV0dGVyZmx5IENvbW11bmljYXRpb25zCiswNTE4ICBFektFWSBDb3JwLgorCTAwMDEgIFVTQiB0byBQUzIgQWRhcHRvciB2MS4wOQorCTAwMDIgIEVaLTk5MDBDIEtleWJvYXJkCiswNTE5ICBTdGFyIE1pY3JvbmljcyBDby4sIEx0ZAorCWMwMDIgIFhsaXZlIEJsdWV0b290aCBYQk0tMTAwUyBNUDMgUGxheWVyCiswNTFhICBXWVNFIFRlY2hub2xvZ3kKKwlhMDA1ICBTbWFydCBEaXNwbGF5IFZlcnNpb24gOTk3MworMDUxYiAgU2lsaWNvbiBHcmFwaGljcworMDUxYyAgU2h1dHRsZSwgSW5jLgorCWMwMDEgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJYzAwMiAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKzA1MWQgIEFtZXJpY2FuIFBvd2VyIENvbnZlcnNpb24KKwkwMDAxICBVUFMKKwkwMDAyICBVbmludGVycnVwdGlibGUgUG93ZXIgU3VwcGx5CisJMDAwMyAgVVBTCiswNTFlICBTY2llbnRpZmljIEF0bGFudGEsIEluYy4KKzA1MWYgIElPIFN5c3RlbXMgKEVsaXRlIEVsZWN0cm9uaWNzKSwgSW5jLgorMDUyMCAgVGFpd2FuIFNlbWljb25kdWN0b3IgTWFudWZhY3R1cmluZyBDby4KKzA1MjEgIEFpcmJvcm4gQ29ubmVjdG9ycworMDUyMiAgQWR2YW5jZWQgQ29ubmVjdGVrLCBJbmMuCiswNTIzICBBVEVOIEdtYkgKKzA1MjQgIFNvbGEgRWxlY3Ryb25pY3MKKzA1MjUgIE5ldGNoaXAgVGVjaG5vbG9neSwgSW5jLgorCTEwMGQgIFJGTUQgQmx1ZXRvb3RoIERldmljZQorCTEwODAgIE5FVDEwODAgVVNCLVVTQiBCcmlkZ2UKKwlhMTQwICBVU0IgQ2xpayEgNDAKKwlhMTQxICAoT01FKSBQb2NrZXRaaXAgNDAgTVAzIFBsYXllciBEcml2ZXIKKwlhMjIwICBHVkMgQmx1ZXRvb3RoIFdpcmVsZXNzIEFkYXB0ZXIKKwlhNGEwICBMaW51eC1VU0IgIkdhZGdldCBaZXJvIgorCWE0YTEgIExpbnV4LVVTQiBFdGhlcm5ldCBHYWRnZXQKKwlhNGEyICBMaW51eC1VU0IgRXRoZXJuZXQvUk5ESVMgR2FkZ2V0CisJYTRhMyAgTGludXgtVVNCIHVzZXItbW9kZSBpc29jaHJvbm91cyBzb3VyY2Uvc2luaworCWE0YTQgIExpbnV4LVVTQiB1c2VyLW1vZGUgYnVsayBzb3VyY2Uvc2luaworCWE0YTUgIExpbnV4LVVTQiBGaWxlIFN0b3JhZ2UgR2FkZ2V0CisJYTRhNiAgTGludXgtVVNCIFNlcmlhbCBHYWRnZXQKKwlhNGE3ICBMaW51eC1VU0IgU2VyaWFsIEdhZGdldCAoQ0RDIEFDTSBtb2RlKQorCWE0YTggIExpbnV4LVVTQiBQcmludGVyIEdhZGdldAorCWE0YTkgIExpbnV4LVVTQiBPQkVYIEdhZGdldAorCWE0YWEgIExpbnV4LVVTQiBDREMgQ29tcG9zaXRlIEdhZGdlIChFdGhlcm5ldCBhbmQgQUNNKQorMDUyNiAgVGVtaWMgTUhTIFMuQS4KKzA1MjcgIEFMVFJBCiswNTI4ICBBVEkgVGVjaG5vbG9naWVzLCBJbmMuCisJNzU2MSAgVFYgV29uZGVyCisJNzU2MiAgVFYgV29uZGVyLCBFZGl0aW9uIChGTjUpCisJNzU2MyAgVFYgV29uZGVyLCBFZGl0aW9uIChGSSkKKwk3NTY0ICBUViBXb25kZXIsIEVkaXRpb24gKEZRKQorCTc1NjUgIFRWIFdvbmRlciwgRWRpdGlvbiAoTlRTQyspCisJNzU2NiAgVFYgV29uZGVyLCBFZGl0aW9uIChGTjUpCisJNzU2NyAgVFYgV29uZGVyLCBFZGl0aW9uIChGSSkKKwk3NTY4ICBUViBXb25kZXIsIEVkaXRpb24gKEZRKQorCTc1NjkgIExpdmUhIFBybyAoQSkKKwk3NTZhICBMaXZlISBQcm8gQXVkaW8gKE8pCiswNTI5ICBBbGFkZGluIEtub3dsZWRnZSBTeXN0ZW1zCisJMDAwMSAgSEFTUCB2MC4wNgorCTAzMGIgIGVUb2tlbiBSMSB2My4xLjMueAorCTAzMTMgIGVUb2tlbiBSMSB2My4yLjMueAorCTAzMWIgIGVUb2tlbiBSMSB2My4zLjMueAorCTAzMjMgIGVUb2tlbiBSMSB2My40LjMueAorCTA0MTIgIGVUb2tlbiBSMiB2Mi4yLjQueAorCTA0MWEgIGVUb2tlbiBSMiB2Mi4yLjQueAorCTA0MjIgIGVUb2tlbiBSMiB2Mi40LjQueAorCTA0MmEgIGVUb2tlbiBSMiB2Mi41LjQueAorCTA1MGMgIGVUb2tlbiBQcm8gdjQuMS41LngKKwkwNTE0ICBlVG9rZW4gUHJvIHY0LjIuNS40CisJMDYwMCAgZVRva2VuIFBybyA2NGsgKDQuMikKKzA1MmEgIENyZXNjZW50IEhlYXJ0IFNvZnR3YXJlCiswNTJiICBUZWtvbSBUZWNobm9sb2dpZXMsIEluYy4KKwkwMTAyICBDYTUwOEEgSFAxMDIwIENhbWVyYSB2LjEuMy4xLjYKKwkwODAxICBZYWt1bW8gTWVnYUltYWdlIDM3CisJMTUxMiAgWWFrdW1vIE1lZ2FJbWFnZSBJVgorCTE1MTMgIEFvc3RhIENYMTAwIFdlYmNhbQorCTE1MTQgIEFvc3RhIENYMTAwIFdlYmNhbSBTdG9yYWdlCisJMTkwNSAgWWFrdW1vIE1lZ2FJbWFnZSA0NworCTE5MTEgIFlha3VtbyBNZWdhSW1hZ2UgNDcgU0wKKwkyMjAyICBXRE0gU3RpbGwgSW1hZ2UgQ2FwdHVyZQorCTIyMDMgIFNvdW5kIFZpc2lvbiBTdHJlYW0gRHJpdmVyCisJM2EwNiAgRGlnaUxpZmUgRERWLTUxMjBBCisJZDAwMSAgUDM1VSBDYW1lcmEgQ2FwdHVyZQorMDUyYyAgQ2Fub24gSW5mb3JtYXRpb24gU3lzdGVtcywgSW5jLgorMDUyZCAgQXZpZCBFbGVjdHJvbmljcyBDb3JwLgorMDUyZSAgU3RhbmRhcmQgTWljcm9zeXN0ZW1zIENvcnAuCiswNTJmICBVbmljb3JlIFNvZnR3YXJlLCBJbmMuCiswNTMwICBBbWVyaWNhbiBNaWNyb3N5c3RlbXMsIEluYy4KKzA1MzEgIFdhY29tIFRlY2hub2xvZ3kgQ29ycC4KKzA1MzIgIFN5c3RlY2ggQ29ycC4KKzA1MzMgIEFsY2F0ZWwgTW9iaWxlIFBob25lcworMDUzNCAgTW90b3JvbGEsIEluYy4KKzA1MzUgIExJSCBUWlUgRWxlY3RyaWMgQ28uLCBMdGQKKzA1MzYgIEhhbmQgSGVsZCBQcm9kdWN0cyAoV2VsY2ggQWxseW4sIEluYy4pCisJMDFhMCAgUERUCiswNTM3ICBJbnZlbnRlYyBDb3JwLgorMDUzOCAgQ2FsZGVyYSBJbnRlcm5hdGlvbmFsLCBJbmMuIChTQ08pCiswNTM5ICBTaHloIFNoaXVuIFRlcm1pbmFscyBDby4sIEx0ZAorMDUzYSAgUHJlaCBXZXJrZSBHbWJIICYgQ28uIEtHCiswNTNiICBHbG9iYWwgVmlsbGFnZSBDb21tdW5pY2F0aW9uCiswNTNjICBJbnN0aXR1dCBvZiBNaWNyb2VsZWN0cm9uaWMgJiBNZWNoYXRyb25pYyBTeXN0ZW1zCiswNTNkICBTaWxpY29uIEFyY2hpdGVjdAorMDUzZSAgTW9iaWxpdHkgRWxlY3Ryb25pY3MKKzA1M2YgIFN5bm9wc3lzLCBJbmMuCiswNTQwICBVbmlBY2Nlc3MgQUIKKwkwMTAxICBQYW5hY2hlIFN1cmYgSVNETiBUQQorMDU0MSAgU2lyZiBUZWNobm9sb2d5LCBJbmMuCiswNTQzICBWaWV3U29uaWMgQ29ycC4KKwkwMGZlICBHNzczIE1vbml0b3IgSHViCisJMDBmZiAgUDgxNSBNb25pdG9yIEh1YgorCTBiZjIgIGFpcnBhbmVsIFYxNTAgV2lyZWxlc3MgU21hcnQgRGlzcGxheQorCTBiZjMgIGFpcnBhbmVsIFYxMTAgV2lyZWxlc3MgU21hcnQgRGlzcGxheQorCTBlZDkgIENvbG9yIFBvY2tldCBQQyBWMzUKKwkwZjAxICBhaXJzeW5jIFdpLUZpIFdpcmVsZXNzIEFkYXB0ZXIKKwkxNTI3ICBDb2xvciBQb2NrZXQgUEMgVjM2CisJMTUyOSAgQ29sb3IgUG9ja2V0IFBDIFYzNworCTE1MmIgIENvbG9yIFBvY2tldCBQQyBWMzgKKwkxNTJlICBQb2NrZXQgUEMKKwkxOTIxICBDb21tdW5pY2F0b3IgUG9ja2V0IFBDCisJMTkyMiAgU21hcnRwaG9uZQorCTE5MjMgIFBvY2tldCBQQyBWMzAKKwkxYTExICBXaXJlbGVzcyA4MDIuMTFnIEFkYXB0ZXIKKwkxZTYwICBUQTMxMCAtIEFUU0MvTlRTQy9QQUwgRHJpdmVyKFBDTTQpCisJNDE1MyAgVmlld1NvbmljIEc3NzMgQ29udHJvbCAoPykKKzA1NDQgIENyaXN0aWUgRWxlY3Ryb25pY3MsIEx0ZAorMDU0NSAgWGlybGluaywgSW5jLgorCTczMzMgIFRydXRpb24gV2ViIENhbWVyYQorCTgwMDIgIElCTSBOZXRDYW1lcmEKKwk4MDA5ICBWZW8gUEMgQ2FtZXJhCisJODAwYyAgVmVvIFN0aW5ncmF5CisJODAwZCAgVmVvIFBDIENhbWVyYQorCTgwODAgIElCTSBDLUl0IFdlYmNhbQorCTgwOGEgIFZlbyBQQyBDYW1lcmEKKwk4MDhiICBWZW8gU3RpbmdyYXkKKwk4MDhkICBWZW8gUEMgQ2FtZXJhCisJODEwYSAgVmVvIEFkdmFuY2VkIENvbm5lY3QgV2ViY2FtCisJODEwYiAgVmVvIFBDIENhbWVyYQorCTgxMGMgIFZlbyBQQyBDYW1lcmEKKwk4MTM1ICBWZW8gTW9iaWxlL0FkdmFuY2VkIFdlYiBDYW1lcmEKKwk4MTNhICBWZW8gUEMgQ2FtZXJhCisJODEzYiAgVmVvIFBDIENhbWVyYQorCTgxM2MgIFZlbyBNb2JpbGUvQWR2YW5jZWQgV2ViIENhbWVyYQorCTgzMzMgIFZlbyBTdGluZ3JheS9Db25uZWN0IFdlYiBDYW1lcmEKKwk4ODhjICBlVmlzaW9uIDEyMyBkaWdpdGFsIGNhbWVyYQorCTg4OGQgIGVWaXNpb24gMTIzIGRpZ2l0YWwgY2FtZXJhCiswNTQ2ICBQb2xhcm9pZCBDb3JwLgorCTBkYWYgIFBEQyAyMzAwWgorCTFiZWQgIFBEQyAxMzIwIENhbWVyYQorCTMwOTcgIFBEQyAzMTAKKwkzMTU1ICBQREMgMzA3MCBDYW1lcmEKKwkzMTg3ICBEaWdpdGFsIENhbWVyYQorCTMxOTEgIElvbiA4MCBDYW1lcmEKKwkzMjczICBQREMgMjAzMCBDYW1lcmEKKwlkY2NmICBTb3VuZCBWaXNpb24gU3RyZWFtIERyaXZlcgorMDU0NyAgQW5jaG9yIENoaXBzLCBJbmMuCisJMDAwMSAgSUNTSSBCbHVldG9vdGggRGV2aWNlCisJMTAwMiAgUHl0aG9uMiBXRE0gRW5jb2RlcgorCTIxMzEgIEFOMjEzMSBFWlVTQiBNaWNyb2NvbnRyb2xsZXIKKwkyMjM1ICBBTjIyMzUgRVpVU0ItRlggTWljcm9jb250cm9sbGVyCisJMjcxMCAgRVotTGluayBMb2FkZXIgKEVaTE5LTERSLlNZUykKKwkyNzIwICBBTjI3MjAgVVNCLVVTQiBCcmlkZ2UKKwkyNzI3ICBYaXJjb20gUEdVTkVUIFVTQi1VU0IgQnJpZGdlCisJMjc1MCAgRVotTGluayAoRVpMTktVU0IuU1lTKQorCTI4MTAgIEN5cHJlc3MgQVRBUEkgQnJpZGdlCisJNzc3NyAgQmx1ZXRvb3RoIERldmljZQorCTk5OTkgIEFOMjEzMSB1bmluaXRpYWxpemVkICg/KQorMDU0OCAgVHlhbiBDb21wdXRlciBDb3JwLgorCTEwMDUgIEVaIENhcnQgSUkgR2FtZUJveSBGbGFzaCBQcm9ncmFtbWVyCiswNTQ5ICBQaXhlcmEgQ29ycC4KKzA1NGEgIEZ1aml0c3UgTWljcm9lbGVjdHJvbmljcywgSW5jLgorMDU0YiAgTmV3IE1lZGlhIENvcnAuCiswNTRjICBTb255IENvcnAuCisJMDAwMSAgSFVCCisJMDAwMiAgU3RhbmRhcmQgSFVCCisJMDAxMCAgRFNDLVMzMC9TNzAvUzc1L0Y1MDVWL0Y1MDUvRkQ5Mi9XMSBDeWJlcnNob3QvTWF2aWNhIERpZ2l0YWwgQ2FtZXJhCisJMDAxNCAgTm9nYXRlY2ggVVNCVmlzaW9uIChTWSkKKwkwMDIyICBTdG9yYWdlIEFkYXB0ZXIgVjIgKFRQUCkKKwkwMDIzICBDRCBXcml0ZXIKKwkwMDI0ICBNYXZpY2EgQ0QtMTAwMCBDYW1lcmEKKwkwMDI1ICBOVy1NUzcgV2Fsa21hbiBNZW1vcnlTdGljayBSZWFkZXIKKwkwMDJiICBQb3J0YWJsZSBVU0IgSGFyZGRyaXZlIFYyCisJMDAyYyAgVVNCIEZsb3BweSBEaXNrIERyaXZlCisJMDAyZCAgTVNBQy1VUzEgTWVtb3J5U3RpY2sgUmVhZGVyCisJMDAyZSAgU29ueSBIYW5keUNhbSBNZW1vcnlTdGljayBSZWFkZXIKKwkwMDMwICBTdG9yYWdlIEFkYXB0ZXIgVjIgKFRQUCkKKwkwMDMyICBNZW1vcnlTdGljayBNU0MtVTAxIFJlYWRlcgorCTAwMzUgIE5ldHdvcmsgV2Fsa21hbiAoRSkKKwkwMDM2ICBOZXQgTUQKKwkwMDM3ICBNRyBNZW1vcnkgU3RpY2sgUmVhZGVyL1dyaXRlcgorCTAwMzggIENsaWUgUEVHLVMzMDAvRCBQYWxtT1MgUERBCisJMDAzOSAgTmV0d29yayBXYWxrbWFuIChNUykKKwkwMDNjICBWQUlPLU1YIExDRCBDb250cm9sCisJMDA0NSAgRGlnaXRhbCBJbWFnaW5nIFZpZGVvCisJMDA0NiAgTmV0d29yayBXYWxrbWFuCisJMDA0YSAgTWVtb3J5IFN0aWNrIEhpLUZpIFN5c3RlbQorCTAwNGIgIE1lbW9yeSBTdGljayBSZWFkZXIvV3JpdGVyCisJMDA0ZSAgRFNDLXh4eCAocHRwKQorCTAwNTYgIE1HIE1lbW9yeSBTdGljayBSZWFkZXIvV3JpdGVyCisJMDA1OCAgQ2xpZSBQRUctTjd4MEMgUGFsbU9TIFBEQSBNYXNzIFN0b3JhZ2UKKwkwMDY2ICBDbGllIFBFRy1ON3gwQy9QRUctVDQyNSBQYWxtT1MgUERBIFNlcmlhbAorCTAwNjkgIE1lbW9yeXN0aWNrIE1TQy1VMDMgUmVhZGVyCisJMDA2ZCAgQ2xpZSBQRUctVDQyNSBQREEgTWFzcyBTdG9yYWdlCisJMDA2ZiAgTmV0d29yayBXYWxrbWFuIChFVikKKwkwMDczICBTdG9yYWdlIENSWDE3NTBVCisJMDA3NSAgTmV0IE1ECisJMDA3NiAgU3RvcmFnZSBBZGFwdGVyIEFDUi1VMjAKKwkwMDdjICBOZXQgTUQKKwkwMDdmICBJQyBSZWNvcmRlciAoTVMpCisJMDA4MCAgTmV0IE1ECisJMDA4MSAgTmV0IE1ECisJMDA4NCAgTmV0IE1ECisJMDA4NSAgTmV0IE1ECisJMDA4NiAgTmV0IE1ECisJMDA4YiAgTWljcm8gVmF1bHQgNjRNIE1hc3MgU3RvcmFnZQorCTAwOTUgIFNvbnkgQ2xpZSBzMzYwCisJMDA5OSAgQ2xpZSBOUjcwIFBEQSBNYXNzIFN0b3JhZ2UKKwkwMDlhICBDbGllIE5SNzAgUERBIFNlcmlhbAorCTAwYWIgIFZpc3VhbCBDb21tdW5pY2F0aW9uIENhbWVyYSAoUENHQS1VVkMxMCkKKwkwMGFmICBEUFAtRVggU2VyaWVzIERpZ2l0YWwgUGhvdG8gUHJpbnRlcgorCTAwYmYgIElDIFJlY29yZGVyIChTKQorCTAwYzAgIEhhbmR5Y2FtIERDUi0zMAorCTAwYzYgIE5ldCBNRAorCTAwYzcgIE5ldCBNRAorCTAwYzggIE1aLU43MTAgTWluaWRpc2MgV2Fsa21hbgorCTAwYzkgIE5ldCBNRAorCTAwY2EgIE1aLURONDMwIE1pbmlkaXNjIFdhbGttYW4KKwkwMGNiICBNU0FDLVVTMjAgTWVtb3J5IFN0aWNrIFJlYWRlcgorCTAwZGEgIFNvbnkgQ2xpZSBueDYwCisJMDBlOCAgTmV0d29yayBXYWxrbWFuIChNUykKKwkwMGU5ICBIYW5kaGVsZAorCTAwZWIgIE5ldCBNRAorCTAxMDEgIE5ldCBNRAorCTAxMDMgIElDIFJlY29yZGVyIChTVCkKKwkwMTA1ICBNaWNybyBWYXVsdCBIdWIKKwkwMTA3ICBWQ0MtVTAxIFZpc3VhbCBDb21tdW5pY2F0aW9uIENhbWVyYQorCTAxMTAgIERpZ2l0YWwgSW1hZ2luZyBWaWRlbworCTAxMTMgIE5ldCBNRAorCTAxMTYgIElDIFJlY29yZGVyIChQKQorCTAxNDQgIENsaWUgUEVHLVRINTUgUERBCisJMDE0NyAgVmlzdWFsIENvbW11bmljYXRpb24gQ2FtZXJhIChQQ0dBLVVWQzExKQorCTAxNGMgIEFpd2EgQU0tTlg5IE5ldCBNRCBNdXNpYyBSZWNvcmRlciBNRExQCisJMDE0ZCAgTWVtb3J5IFN0aWNrIFJlYWRlci9Xcml0ZXIKKwkwMTU0ICBFeWV0b3kgQXVkaW8gRGV2aWNlCisJMDE1ZiAgSUMgUmVjb3JkZXIgKEJNKQorCTAxNjkgIENsaWUgUEVHLVRKMzUgUERBIFNlcmlhbAorCTAxNmEgIENsaWUgUEVHLVRKMzUgUERBIE1hc3MgU3RvcmFnZQorCTAxNmIgIE1vYmlsZSBIREQKKwkwMTZkICBJQyBSZWNvcmRlciAoU1gpCisJMDE2ZSAgRFBQLUVYNTAgRGlnaXRhbCBQaG90byBQcmludGVyCisJMDE3MSAgRmluZ2VycHJpbnQgU2Vuc29yIDM1MDAKKwkwMTdlICBOZXQgTUQKKwkwMTdmICBIaS1NRCBXQUxLTUFOCisJMDE4MCAgTmV0IE1ECisJMDE4MSAgSGktTUQgV0FMS01BTgorCTAxODIgIE5ldCBNRAorCTAxODMgIEhpLU1EIFdBTEtNQU4KKwkwMTg0ICBOZXQgTUQKKwkwMTg1ICBIaS1NRCBXQUxLTUFOCisJMDE4NiAgTmV0IE1ECisJMDE4NyAgSGktTUQgTVotTkg2MDAgV0FMS01BTgorCTAxODggIE5ldCBNRAorCTAxOGEgIE5ldCBNRAorCTAxOGIgIEhpLU1EIFNPVU5EIEdBVEUKKwkwMTllICBNaWNybyBWYXVsdCAxLjBHIE1hc3MgU3RvcmFnZQorCTAxYWQgIEFUUkFDIEhERCBQQQorCTAxYmQgIE1SVzYyRSBNdWx0aS1DYXJkIFJlYWRlci9Xcml0ZXIKKwkwMWMzICBOVy1FNTUgTmV0d29yayBXYWxrbWFuCisJMDFjNiAgTUVNT1JZIFAtQVVESU8KKwkwMWM3ICBQcmludGluZyBTdXBwb3J0CisJMDFjOCAgUFNQIFR5cGUgQQorCTAxZDAgIERWRCtSVyBFeHRlcm5hbCBEcml2ZSBEUlUtNzAwQQorCTAxZDUgIElDIFJFQ09SREVSCisJMDFkZSAgVlJELVZDMTAgW1ZpZGVvIENhcHR1cmVdCisJMDFlOSAgTmV0IE1ECisJMDFlYSAgSGktTUQgV0FMS01BTgorCTAxZWUgIElDIFJFQ09SREVSCisJMDFmYSAgU29ueSBJQyBSZWNvcmRlciAoUCkKKwkwMWZiICBOVy1FNDA1IE5ldHdvcmsgV2Fsa21hbgorCTAyMGYgIERldmljZQorCTAyMTAgIEFUUkFDIEhERCBQQQorCTAyMTkgIE5ldCBNRAorCTAyMWEgIEhpLU1EIFdBTEtNQU4KKwkwMjFiICBOZXQgTUQKKwkwMjFjICBIaS1NRCBXQUxLTUFOCisJMDIxZCAgTmV0IE1ECisJMDIyNyAgUHJpbnRpbmcgU3VwcG9ydAorCTAyMmMgIE5ldCBNRAorCTAyMmQgIEhpLU1EIEFVRElPCisJMDIzMyAgQVRSQUMgSEREIFBBCisJMDIzNiAgTW9iaWxlIEhERAorCTAyM2IgIERWRCtSVyBFeHRlcm5hbCBEcml2ZSBEUlUtODAwVUwKKwkwMjNjICBOZXQgTUQKKwkwMjNkICBIaS1NRCBXQUxLTUFOCisJMDI0MyAgTWljcm9WYXVsdCBGbGFzaCBEcml2ZQorCTAyNTcgIElGVS1XTE0yIFVTQiBXaXJlbGVzcyBMQU4gTW9kdWxlIChXaXJlbGVzcyBNb2RlKQorCTAyNTggIElGVS1XTE0yIFVTQiBXaXJlbGVzcyBMQU4gTW9kdWxlIChNZW1vcnkgTW9kZSkKKwkwMjU5ICBJQyBSRUNPUkRFUgorCTAyNjcgIFRhY2hpa29tYSBEZXZpY2UKKwkwMjY4ICBCYXRvaCBEZXZpY2UKKwkwMjY5ICBIREQgV0FMS01BTgorCTAyNmEgIEhERCBXQUxLTUFOCisJMDI3MSAgSUMgUmVjb3JkZXIgKFApCisJMDI3YyAgTkVUV09SSyBXQUxLTUFOCisJMDI3ZSAgU09OWSBDb21tdW5pY2F0b3IKKwkwMjdmICBJQyBSRUNPUkRFUgorCTAyODYgIE5ldCBNRAorCTAyODcgIEhpLU1EIFdBTEtNQU4KKwkwMjkwICBWR1AtVVZDMTAwIFZpc3VhbCBDb21tdW5pY2F0aW9uIENhbWVyYQorCTAyOWIgIFBSUy01MDAgZUJvb2sgcmVhZGVyCisJMDJhNSAgTWljcm9WYXVsdCBGbGFzaCBEcml2ZQorCTAyYWYgIEhhbmR5Y2FtIERDUi1EVkQzMDZFCisJMDJjNCAgRGV2aWNlCisJMDJkMSAgRFZEIFJXCisJMDJkMiAgUFNQIFNsaW0KKwkwMmVhICBQbGF5U3RhdGlvbiAzIE1lbW9yeSBDYXJkIEFkYXB0b3IKKwkxMDAwICBXaXJlbGVzcyBCdXp6ISBSZWNlaXZlcgorMDU0ZCAgVHJ5IENvcnAuCiswNTRlICBQcm9zaWRlIENvcnAuCiswNTRmICBXWVNFIFRlY2hub2xvZ3kgVGFpd2FuCiswNTUwICBGdWppIFhlcm94IENvLiwgTHRkCisJMDAwMiAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwkwMDA0ICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTAwMDUgIElua0pldCBDb2xvciBQcmludGVyCiswNTUxICBDb21wdVRyZW5kIFN5c3RlbXMsIEluYy4KKzA1NTIgIFBoaWxpcHMgTW9uaXRvcnMKKzA1NTMgIFNUTWljcm9lbGVjdHJvbmljcyBJbWFnaW5nIERpdmlzaW9uIChWTFNJIFZpc2lvbikKKwkwMDAxICBUZXJyYUNBTQorCTAwMDIgIENQaUEgV2ViY2FtCisJMDEwMCAgU1RWMDY3MiBDYW1lcmEKKwkwMTQwICBWaWRlbyBDYW1lcmEKKwkwMTUwICBDREUgQ0FNIDEwMAorCTAxNTEgIERpZ2l0YWwgQmx1ZSBRWDUgTWljcm9zY29wZQorCTAyMDAgIER1YWwtbW9kZSBDYW1lcmEwCisJMDIwMSAgRHVhbC1tb2RlIENhbWVyYTEKKwkwMjAyICBBaXB0ZWsgUGVuQ2FtIDEKKwkwNjc0ICBNdWx0aS1tb2RlIENhbWVyYQorCTA2NzkgIE5NUyBWaWRlbyBDYW1lcmEgKFdlYmNhbSkKKwkxMDAyICBDaGUtZXohIFNwbGFzaAorMDU1NCAgRGljdGFwaG9uZSBDb3JwLgorMDU1NSAgQU5BTSBTJlQgQ28uLCBMdGQKKzA1NTYgIEFzYWhpIEthc2VpIE1pY3Jvc3lzdGVtcyBDby4sIEx0ZAorCTAwMDEgIEFLNTM3MCBJL0YgQS9EIENvbnZlcnRlcgorMDU1NyAgQVRFTiBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCisJMjAwMSAgVUMtMTI4NCBQcmludGVyIFBvcnQKKwkyMDAyICAxME1icHMgRXRoZXJuZXQgW2tsc2ldCisJMjAwNCAgVUMtMTAwS00gUFMvMiBNb3VzZSBhbmQgS2V5Ym9hcmQgYWRhcHRlcgorCTIwMDYgIFVDLTEyODRCIFByaW50ZXIgUG9ydAorCTIwMDcgIFVDLTExMFQgMTAwTWJwcyBFdGhlcm5ldCBbcGVnYXN1c10KKwkyMDA4ICBVQy0yMzJBIFNlcmlhbCBQb3J0IFtwbDIzMDNdCisJMjAwOSAgVUMtMjEwVCBFdGhlcm5ldAorCTIwMTEgIFVDLTIzMjQgNHhTZXJpYWwgUG9ydHMgW21vczc4NDBdCisJMjIwMiAgQ1MxMjRVIE1pbml2aWV3IElJIEtWTSBTd2l0Y2gKKwkyNjAwICBJREUgQnJpZGdlCisJNDAwMCAgRFNCLTY1MCAxME1icHMgRXRoZXJuZXQgW2tsc2ldCisJNzAwMCAgSHViCiswNTU4ICBUcnVldmlzaW9uLCBJbmMuCiswNTU5ICBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zLCBJbmMuCiswNTVhICBLZW53b29kIFVTQQorMDU1YiAgS25vd2xlZGdlVGVrLCBJbmMuCiswNTVjICBQcm90b24gRWxlY3Ryb25pYyBJbmQuCiswNTVkICBTYW1zdW5nIEVsZWN0cm8tTWVjaGFuaWNzIENvLgorCTAwMDEgIEtleWJvYXJkCisJMGJiMSAgQmx1ZXRvb3RoIERldmljZQorCTEwMzAgIE9wdGljYWwgV2hlZWwgTW91c2UgKE9NUzNDQi9PTUdCMzApCisJMTAzMSAgT3B0aWNhbCBXaGVlbCBNb3VzZSAoT01BM0NCL09NR0kzMCkKKwkxMDQwICBNb3VzZSBISUQgRGV2aWNlCisJMTA1MCAgRS1NYWlsIE9wdGljYWwgV2hlZWwgTW91c2UgKE9NUzNDRSkKKwkxMDgwICBPcHRpY2FsIFdoZWVsIE1vdXNlIChPTVMzQ0gpCisJMjAyMCAgRmxvcHB5IERpc2sgRHJpdmUKKwk2NzgwICBLZXlib2FyZCBWMQorCTY3ODEgIEtleWJvYXJkIE1vdXNlCisJODAwMSAgRS5NLiBIdWIKKwk5MDAwICBBbnlDYW0gW3B3Y10KKwk5MDAxICBNUEMtQzMwIEFueUNhbSBQcmVtaXVtIGZvciBOb3RlYm9va3MgW3B3Y10KKwlhMDEwICBXTEFOIEFkYXB0ZXIoU1dMLTIzMDApCisJYTAxMSAgQm9vdCBEZXZpY2UKKwlhMDEyICBXTEFOIEFkYXB0ZXIoU1dMLTIzMDApCisJYTAxMyAgV0xBTiBBZGFwdGVyKFNXTC0yMzUwKQorCWEyMzAgIEJvb3QgRGV2aWNlCisJYjAwMCAgMTFNYnBzIFdMQU4gTWluaSBBZGFwdGVyCisJYjIzMCAgTmV0b3BpYSA4MDIuMTFiIFdMQU4gQWRhcHRlcgorCWIyMzEgIExHIFdpcmVsZXNzIExBTiAxMWIgQWRhcHRlcgorMDU1ZSAgQ1RYIE9wdG8tRWxlY3Ryb25pY3MgQ29ycC4KKzA1NWYgIE11c3RlayBTeXN0ZW1zLCBJbmMuCisJMDAwMSAgU2NhbkV4cHJlc3MgMTIwMCBDVQorCTAwMDIgIFNjYW5FeHByZXNzIDYwMCBDVQorCTAwMDMgIFNjYW5FeHByZXNzIDEyMDAgVVNCCisJMDAwNiAgU2NhbkV4cHJlc3MgMTIwMCBVQgorCTAwMDcgIFNjYW5FeHByZXNzIDEyMDAgVVNCIFBsdXMKKwkwMDA4ICBTY2FuRXhwcmVzcyAxMjAwIENVIFBsdXMKKwkwMDEwICBCZWFyUGF3IDEyMDBGCisJMDIxMCAgU2NhbkV4cHJlc3MgQTMgVVNCCisJMDIxOCAgQmVhclBhdyAyNDAwIFRBCisJMDIxOSAgQmVhclBhdyAyNDAwIFRBIFBsdXMKKwkwMjFhICBCZWFyUGF3IDI0NDggVEEgUGx1cworCTAyMWMgIEJlYXJQYXcgMTIwMCBDVSBQbHVzCisJMDIxZCAgQmVhclBhdyAyNDAwIENVIFBsdXMKKwkwMjFlICBCZWFyUGF3IDEyMDAgVEEvQ1MKKwkwMjFmICBTTkFQU0NBTiBlMjIKKwkwNDAwICBCZWFyUGF3IDI0MDAgVEEgUHJvCisJMDQwMSAgUCAzNjAwIEEzIFBybworCTA0MDggIEJlYXJQYXcgMjQ0OCBDVSBQcm8KKwkwNDA5ICBCZWFyUGF3IDI0NDggVEEgUHJvCisJMDg3MyAgU2NhbkV4cHJlc3MgNjAwIFVTQgorCTEwMDAgIEJlYXJQYXcgNDgwMCBUQSBQcm8KKwlhMzUwICBnU21hcnQgMzUwIENhbWVyYQorCWE4MDAgIE1EQyA4MDAgQ2FtZXJhCisJYjUwMCAgTURDIDMwMDAgQ2FtZXJhCisJYzAwNSAgUEMgQ0FNIDMwMEEKKwljMjAwICBnU21hcnQgMzAwCisJYzIxMSAgS293YSBCczg4OGUgTWljcm9jYW1lcmEKKwljMjIwICBnU21hcnQgbWluaQorCWMyMzAgIERpZ2ljYW0gMzMwSworCWMyMzIgIE1EQzM1MDAgQ2FtZXJhCisJYzM2MCAgRFYgNDAwMCBDYW1lcmEKKwljNDIwICBnU21hcnQgbWluaSAyIENhbWVyYQorCWM0MzAgIGdTbWFydCBMQ0QgMiBDYW1lcmEKKwljNDQwICBEViAzMDAwIENhbWVyYQorCWM1MjAgIGdTbWFydCBtaW5pIDMgQ2FtZXJhCisJYzUzMCAgZ1NtYXJ0IExDRCAyIENhbWVyYQorCWM1NDAgIGdTbWFydCBEMzAgQ2FtZXJhCisJYzYzMCAgTURDIDQwMDAgQ2FtZXJhCisJYzYzMSAgTURDIDQwMDAgQ2FtZXJhCisJYzY1MCAgTURDIDU1MDBaIENhbWVyYQorCWQwMDEgIFdDYW0gMzAwCisJZDAwMyAgV0NhbSAzMDBBCisJZDAwNCAgV0NhbSAzMDBBTgorMDU2MCAgSW50ZXJmYWNlIENvcnAuCiswNTYxICBPYXNpcyBEZXNpZ24sIEluYy4KKzA1NjIgIFRlbGV4IENvbW11bmljYXRpb25zLCBJbmMuCisJMDAwMSAgRW5oYW5jZWQgTWljcm9waG9uZQorCTAwMDIgIFRlbGV4IE1pY3JvcGhvbmUKKzA1NjMgIEltbWVyc2lvbiBDb3JwLgorMDU2NCAgQ2hpbm9uIEluZHVzdHJpZXMsIEluYy4KKzA1NjUgIFBlcmFjb20gTmV0d29ya3MsIEluYy4KKwkwMDAxICBTZXJpYWwgUG9ydCBbZXRla10KKwkwMDAyICBFbmV0IEV0aGVybmV0IFtrbHNpXQorCTAwMDMgIEBIb21lIE5ldHdvcmtzIEV0aGVybmV0IFtrbHNpXQorCTAwMDUgIEVuZXQyIEV0aGVybmV0IFtrbHNpXQorCTAwNDEgIFBlcmFjb20gUmVtb3RlIE5ESVMgRXRoZXJuZXQgQWRhcHRlcgorMDU2NiAgTW9udGVyZXkgSW50ZXJuYXRpb25hbCBDb3JwLgorCTAxMTAgIFZpZXdNYXRlIERlc2t0b3AgTW91c2UgQ0MyMjAxCisJMTAwMSAgVmlld01hdGUgRGVza3RvcCBNb3VzZSBDQzIyMDEKKwkxMDAyICBWaWV3TWF0ZSBEZXNrdG9wIE1vdXNlIENDMjIwMQorCTEwMDMgIFZpZXdNYXRlIERlc2t0b3AgTW91c2UgQ0MyMjAxCisJMTAwNCAgVmlld01hdGUgRGVza3RvcCBNb3VzZSBDQzIyMDEKKwkxMDA1ICBWaWV3TWF0ZSBEZXNrdG9wIE1vdXNlIENDMjIwMQorCTEwMDYgIFZpZXdNYXRlIERlc2t0b3AgTW91c2UgQ0MyMjAxCisJMTAwNyAgVmlld01hdGUgRGVza3RvcCBNb3VzZSBDQzIyMDEKKwkyODAwICBNSUMgSy9CCisJMjgwMSAgTUlDIEsvQiBNb3VzZQorCTI4MDIgIEtiZCBIdWIKKzA1NjcgIFh5cmF0ZXggSW50ZXJuYXRpb25hbCwgTHRkCiswNTY4ICBRdWFydHogSW5nZW5pZXJpZQorMDU2OSAgU2VnYVNvZnQKKzA1NmEgIFdhY29tIENvLiwgTHRkCisJMDAwMCAgUGVuUGFydG5lcgorCTAwMDEgIFBlblBhcnRuZXIgNHg1CisJMDAwMiAgUGVuUGFydG5lciA2eDgKKwkwMDEwICBHcmFwaGlyZQorCTAwMTEgIEdyYXBoaXJlIDIKKwkwMDEzICBHcmFwaGlyZSAzIDR4NQorCTAwMjAgIEludHVvcyA0eDUKKwkwMDIxICBJbnR1b3MgNng4CisJMDAyMiAgSW50dW9zIDl4MTIKKwkwMDIzICBJbnR1b3MgMTJ4MTIKKwkwMDI0ICBJbnR1b3MgMTJ4MTgKKwkwMDMwICBQTDQwMAorCTAwMzEgIFBMNTAwCisJMDAzMiAgUEw2MDAKKwkwMDM0ICBQTDU1MAorCTAwMzUgIFBMODAwCisJMDA0MSAgSW50dW9zMiA0eDUKKwkwMDQyICBJbnR1b3MgMiA2eDgKKwkwMDQzICBJbnR1b3MgMgorCTAwNDQgIEludHVvczIgMTJ4MTIKKwkwMDQ1ICBJbnR1b3MyIDEyeDE4CisJMDBiNSAgSW50dW9zMyA2eDExIChQVFotNjMxVykKKwkwNDAwICBQZW5QYXJ0bmVyIDR4NQorCTQ4NTAgIFBlblBhcnRuZXIgNng4CiswNTZiICBEZWNpY29uLCBJbmMuCiswNTZjICBlVEVLIExhYnMKKwkwMDA2ICBLd2lrTGluayBIb3N0LUhvc3QgQ29ubmVjdG9yCisJODAwNyAgS3dpazIzMiBTZXJpYWwgUG9ydAorCTgxMDAgIEt3aWtMaW5rIEhvc3QtSG9zdCBDb25uZWN0b3IKKwk4MTAxICBLd2lrTGluayBVU0ItVVNCIEJyaWRnZQorMDU2ZCAgRUlaTyBDb3JwLgorCTAwMDAgIEh1YgorCTAwMDEgIE1vbml0b3IKKwkwMDAyICBISUQgTW9uaXRvciBDb250cm9scworCTAwMDMgIERldmljZSBCYXkgQ29udHJvbGxlcgorMDU2ZSAgRWxlY29tIENvLiwgTHRkCisJMDAwMiAgMjlVTyBNb3VzZQorCTIwMGMgIExELVVTQi9UWAorCTQwMDIgIExhbmVlZCAxMDBNYnBzIEV0aGVybmV0IExELVVTQi9UWCBbcGVnYXN1c10KKwk0MDA1ICBMRC1VU0JML1RYCisJNDAwYiAgTEQtVVNCL1RYCisJNDAxMCAgTEQtVVNCMjAKKwk1MDAzICBVQy1TR1QKKwk1MDA0ICBVQy1TR1QKKwlhYmMxICBMRC1VU0IvVFgKKzA1NmYgIEtvcmVhIERhdGEgU3lzdGVtcyBDby4sIEx0ZAorCWNkMDAgIENETS03NTEgQ0Qgb3JnYW5pemVyCiswNTcwICBFcHNvbiBBbWVyaWNhCiswNTcxICBJbnRlcmV4LCBJbmMuCisJMDAwMiAgZWNob0ZYIEludGVyVmlldyBMaXRlCiswNTcyICBDb25leGFudCBTeXN0ZW1zIChSb2Nrd2VsbCksIEluYy4KKwkwMDAxICBFemNhbSBJSSBXZWJjYW0KKwkwMDAyICBFemNhbSBJSSBXZWJjYW0KKwkwMDQwICBXb25kZXJleWUgQ1AtMTE1IFdlYmNhbQorCTAwNDEgIFdlYmNhbSBOb3RlYm9vaworCTAwNDIgIFdlYmNhbSBOb3RlYm9vaworCTEyMzIgIFYuOTAgbW9kZW0KKwkxMjM0ICBUeXBob29uIFJlZGZ1biBNb2RlbSBWOTAgNTZrCisJMTI1MiAgSENGIFY5MCBEYXRhIEZheCBWb2ljZSBNb2RlbQorCTEyNTMgIFpvb20gVi45MiBGYXhtb2RlbQorCTEzMDAgIFNvZnRLNTYgRGF0YSBGYXggVm9pY2UgQ0FSUAorCTEzMDEgIE1vZGVtIEVudW1lcmF0b3IKKwkyMDAwICBTb2Z0R2F0ZSA4MDIuMTEgQWRhcHRlcgorCTIwMDIgIFNvZnRHYXRlIDgwMi4xMSBBZGFwdGVyCisJODM5MCAgV2luRmFzdCBQYWxtVG9wL05vdm8gVFYgVmlkZW8KKwk4MzkyICBXaW5GYXN0IFBhbG1Ub3AvTm92byBUViBWaWRlbworCWNhZmUgIEFjY2Vzc1J1bm5lciBBRFNMIE1vZGVtCisJY2IwMCAgRS1UZWNoIEFEU0wgTW9kZW0gdjIKKwljYjAxICBHZWVrQURTTCBQcm9tYXggUTMxIEFEU0wgTW9kZW0KKwljYjA2ICBTdGFyTW9kZW0gTmV0d29yayBJbnRlcmZhY2UKKzA1NzMgIFpvcmFuIENvLiBQZXJzb25hbCBNZWRpYSBEaXZpc2lvbiAoTm9nYXRlY2gpCisJMDAwMyAgVVNCR2VhciBVU0JHLVYxCisJMDQwMCAgRC1MaW5rIFYxMDAKKwkwNjAwICBEYXp6bGUgVVNCVmlzaW9uICgxMDA2KQorCTEzMDAgIGxlYWR0ZWsgVVNCVmlzaW9uICgxMDA2KQorCTIwMDAgIFgxMCB2YTEwYSBXaXJlbGVzcyBDYW1lcmEKKwkyMDAxICBEYXp6bGUgRW1NZSAoMjAwMSkKKwkyMTAxICBab3JhbiBDby4gUE1EIChOb2dhdGVjaCkgQVYtZ3JhYmJlciBNYW5oYXR0YW4KKwkyZDAwICBPc3ByZXkgNTAKKwkyZDAxICBIYXVwcGF1Z2UgVVNCLUxpdmUgTW9kZWwgNjAwCisJMzAwMCAgRGF6emxlIE1pY3JvQ2FtIChOVFNDKQorCTMwMDEgIERhenpsZSBNaWNyb0NhbSAoUEFMKQorCTQwMDAgIE5vZ2F0ZWNoIFRWISAoTlRTQykKKwk0MDAxICBOb2dhdGVjaCBUViEgKFBBTCkKKwk0MDAyICBOb2dhdGVjaCBUViEgKFBBTC1JLSkKKwk0MDAzICBOb2dhdGVjaCBUViEgKE1GLSkKKwk0MDA4ICBOb2dhdGVjaCBUViEgKE5UU0MpIChUKQorCTQwMDkgIE5vZ2F0ZWNoIFRWISAoUEFMKSAoVCkKKwk0MDEwICBOb2dhdGVjaCBUViEgKE5UU0MpIChBKQorCTQxMDAgIFVTQi1UViBGTSAoTlRTQykKKwk0MTEwICBQTlkgVVNCLVRWIChOVFNDKSBGTQorCTQ0MDAgIE5vZ2F0ZWNoIFRWISBQcm8gKE5UU0MpCisJNDQwMSAgTm9nYXRlY2ggVFYhIFBybyAoUEFMKQorCTQ0NTAgIFBpeGVsVmlldyBQbGF5VHYtVVNCIFBSTyAoUEFMKSBGTQorCTQ0NTEgIE5vZ2F0ZWNoIFRWISBQcm8gKFBBTCspCisJNDQ1MiAgTm9nYXRlY2ggVFYhIFBybyAoUEFMLUkrKQorCTQ1MDAgIE5vZ2F0ZWNoIFRWISBQcm8gKE5UU0MpCisJNDUwMSAgTm9nYXRlY2ggVFYhIFBybyAoUEFMKQorCTQ1NTAgIFpUViBaVC03MjEgMi40R0h6IEEvViBSZWNlaXZlcgorCTQ1NTEgIERhenpsZSBUViEgUHJvIEF1ZGlvIChQKykKKwk0ZDAwICBIYXVwcGF1Z2UgV2luVFYtVVNCIFVTQQorCTRkMDEgIEhhdXBwYXVnZSBXaW5UVi1VU0IKKwk0ZDAyICBIYXVwcGF1Z2UgV2luVFYtVVNCIFVLCisJNGQwMyAgSGF1cHBhdWdlIFdpblRWLVVTQiBGcmFuY2UKKwk0ZDA0ICBIYXVwcGF1Z2UgV2luVFYgKFBBTCBEL0spCisJNGQxMCAgSGF1cHBhdWdlIFdpblRWLVVTQiB3aXRoIEZNIFVTQSByYWRpbworCTRkMTEgIEhhdXBwYXVnZSBXaW5UVi1VU0IgKFBBTCkgd2l0aCBGTSByYWRpbworCTRkMTIgIEhhdXBwYXVnZSBXaW5UVi1VU0IgVUsgd2l0aCBGTSBSYWRpbworCTRkMTQgIEhhdXBwYXVnZSBXaW5UViAoUEFMIEQvSyBGTSkKKwk0ZDIwICBIYXVwcGF1Z2UgV2luVFYtVVNCIElJIChQQUwpIHdpdGggRk0gcmFkaW8KKwk0ZDIxICBIYXVwcGF1Z2UgV2luVFYtVVNCIElJIChQQUwpCisJNGQyMiAgSGF1cHBhdWdlIFdpblRWLVVTQiBJSSAoUEFMKSBNb2RlbCA1NjYKKwk0ZDIzICBIYXVwcGF1Z2UgV2luVFYtVVNCIEZyYW5jZSA0RDIzCisJNGQyNCAgSGF1cHBhdWdlIFdpblRWIFBybyAoUEFMIEQvSykKKwk0ZDI1ICBIYXVwcGF1Z2UgV2luVFYtVVNCIE1vZGVsIDQwMjA5IHJldiBCMjM0CisJNGQyNiAgSGF1cHBhdWdlIFdpblRWLVVTQiBNb2RlbCA0MDIwOSByZXYgQjI0MworCTRkMjcgIEhhdXBwYXVnZSBXaW5UVi1VU0IgTW9kZWwgNDAyMDQgUmV2IEIyODEKKwk0ZDI4ICBIYXVwcGF1Z2UgV2luVFYtVVNCIE1vZGVsIDQwMjA0IHJldiBCMjgzCisJNGQyOSAgSGF1cHBhdWdlIFdpblRWLVVTQiBNb2RlbCA0MDIwNSByZXYgQjI5OAorCTRkMmEgIEhhdXBwYWd1ZSBXaW5UVi1VU0IgTW9kZWwgNjAyIFJldiBCMjg1CisJNGQyYiAgSGF1cHBhZ3VlIFdpblRWLVVTQiBNb2RlbCA2MDIgUmV2IEIyODIKKwk0ZDJjICBIYXVwcGF1Z2UgV2luVFYgUHJvIChQQUwvU0VDQU0pCisJNGQzMCAgSGF1cHBhdWdlIFdpblRWLVVTQiBGTSBNb2RlbCA0MDIxMSBSZXYgQjEyMworCTRkMzEgIEhhdXBwYXVnZSBXaW5UVi1VU0IgSUlJIChQQUwpIHdpdGggRk0gcmFkaW8gTW9kZWwgNTY4CisJNGQzMiAgSGF1cHBhdWdlIFdpblRWLVVTQiBJSUkgKFBBTCkgRk0gTW9kZWwgNTczCisJNGQzNCAgSGF1cHBhdWdlIFdpblRWIFBybyAoUEFMIEQvSyBGTSkKKwk0ZDM1ICBIYXVwcGF1Z2UgV2luVFYtVVNCIElJSSAoUEFMKSBGTSBNb2RlbCA1OTcKKwk0ZDM2ICBIYXVwcGF1Z2UgV2luVFYgUHJvIChQQUwgQi9HIEZNKQorCTRkMzcgIEhhdXBwYXVnZSBXaW5UVi1VU0IgTW9kZWwgNDAyMTkgcmV2IEUxODkKKwk0ZDM4ICBIYXVwcGF1Z2UgV2luVFYgUHJvIChOVFNDIEZNKQorMDU3NCAgQ2l0eSBVbml2ZXJzaXR5IG9mIEhvbmcgS29uZworMDU3NSAgUGhpbGlwcyBDcmVhdGl2ZSBEaXNwbGF5IFNvbHV0aW9ucworMDU3NiAgQkFGTy9RdWFsaXR5IENvbXB1dGVyIEFjY2Vzc29yaWVzCiswNTc3ICBFTFNBCiswNTc4ICBJbnRyaW5zaXggQ29ycC4KKzA1NzkgIEdWQyBDb3JwLgorMDU3YSAgU2Ftc3VuZyBFbGVjdHJvbmljcyBBbWVyaWNhCiswNTdiICBZLUUgRGF0YSwgSW5jLgorCTAwMDAgIEZsYXNoQnVzdGVyLVUgRmxvcHB5CisJMDAwMSAgVHJpLU1lZGlhIFJlYWRlciBGbG9wcHkKKwkwMDA2ICBUcmktTWVkaWEgUmVhZGVyIENhcmQgUmVhZGVyCisJMDAxMCAgTWVtb3J5IFN0aWNrIFJlYWRlciBXcml0ZXIKKwkwMDIwICBIRVhBIE1lZGlhIERyaXZlIDYtaW4tMSBDYXJkIFJlYWRlciBXcml0ZXIKKwkwMDMwICBNZW1vcnkgQ2FyZCBWaWV3ZXIgKFRWKQorMDU3YyAgQVZNIEdtYkgKKwkwYjAwICBJU0ROLUNvbnRyb2xsZXIgQjEgRmFtaWx5CisJMGMwMCAgSVNETi1Db250cm9sbGVyIEZSSVRaIUNhcmQKKwkxMDAwICBJU0ROLUNvbnRyb2xsZXIgRlJJVFohQ2FyZCB2Mi4wCisJMTkwMCAgSVNETi1Db250cm9sbGVyIEZSSVRaIUNhcmQgdjIuMQorCTIwMDAgIElTRE4tQ29ubmVjdG9yIEZSSVRaIVgKKwkyMjAwICBCbHVlRlJJVFohCisJMjMwMCAgVGVsZWRhdCBYMTMwIERTTAorCTI4MDAgIElTRE4tQ29ubmVjdG9yIFRBCisJMzIwMCAgVGVsZWRhdCBYMTMwIERTTAorCTM1MDAgIEZSSVRaIUNhcmQgRFNMIFNMCisJMzcwMSAgRlJJVFohQm94IFNMCisJMzcwMiAgRlJJVFohQm94CisJMzgwMCAgQmx1ZUZSSVRaISBCbHVldG9vdGggU3RpY2sKKwkzYTAwICBGUklUWiFCb3ggRm9uCisJM2MwMCAgRlJJVFohQm94IFdMQU4KKwkzZDAwICBGcml0eiFCb3gKKwkzZTAxICBGUklUWiFCb3ggKEFubmV4IEEpCisJNDAwMSAgRlJJVFohQm94IEZvbiAoQW5uZXggQSkKKwk0MTAxICBGUklUWiFCb3ggV0xBTiAoQW5uZXggQSkKKwk0MjAxICBGUklUWiFCb3ggRm9uIFdMQU4gKEFubmV4IEEpCisJNDYwMSAgRXVtZXggNTUyMFBDIChXaW5YUC8yMDAwKQorCTQ2MDIgIEV1bWV4IDQwMCAoV2luWFAvMjAwMCkKKwk0NzAxICBBVk0gRlJJVFohQm94IEZvbiBhdGEKKwk1NDAxICBFdW1leCAzMDAgSVAKKwk1NjAxICBBVk0gRlJJVFohV0xBTiBTdGljaworCTYyMDEgIFdMQU4gVVNCIHYxLjEKKwk2MmZmICBXTEFOIFVTQiB2MS4xIFtubyBmaXJtd2FyZV0KKwk4NDAxICBGUklUWiFXTEFOIFN0aWNrIE4KKzA1N2QgIFNoYXJrIE11bHRpbWVkaWEsIEluYy4KKzA1N2UgIE5pbnRlbmRvIENvLiwgTHRkCisJMDMwNiAgV2lpIFJlbW90ZSBDb250cm9sbGVyIFJWTC0wMDMKKzA1N2YgIFF1aWNrU2hvdCwgTHRkCisJNjIzOCAgVVNCIFN0cmlrZVBhZAorMDU4MCAgRGVucm9uLCBJbmMuCiswNTgxICBSYWNhbCBEYXRhIEdyb3VwCiswNTgyICBSb2xhbmQgQ29ycC4KKwkwMDAwICBVQS0xMDAKKwkwMDAyICBVTS00L01QVS02NCBNSURJIEludGVyZmFjZQorCTAwMDMgIFNvdW5kQ2FudmFzIFNDLTg4NTAKKwkwMDA0ICBVLTgKKwkwMDA1ICBFZGlyb2wgVU0tMiBNSURJIEFkYXB0ZXIKKwkwMDA3ICBTb3VuZENhbnZhcyBTQy04ODIwCisJMDAwOCAgUEMtMzAwCisJMDAwOSAgRWRpcm9sIFVNLTFTWCBNSURJIEFkYXB0ZXIKKwkwMDBiICBTSy01MDAKKwkwMDBjICBTQy1ENzAKKwkwMDEwICBFRElST0wgVUEtNQorCTAwMTEgIEVkaXJvbCBVQS01IFNvdW5kIENhcHR1cmUKKwkwMDEyICBYVi01MDUwCisJMDAxMyAgWFYtNTA1MAorCTAwMTQgIEVESVJPTCBVTS04ODAgTUlESSBJL0YgKG5hdGl2ZSkKKwkwMDE1ICBFRElST0wgVU0tODgwIE1JREkgSS9GIChnZW5lcmljKQorCTAwMTYgIEVESVJPTCBTRC05MAorCTAwMTcgIEVESVJPTCBTRC05MAorCTAwMWIgIE1NUC0yCisJMDAxYyAgTU1QLTIKKwkwMDFkICBWLVNZTlRICisJMDAxZSAgVi1TWU5USAorCTAwMjMgIEVESVJPTCBVTS01NTAKKwkwMDI0ICBFRElST0wgVU0tNTUwCisJMDAyNSAgRURJUk9MIFVBLTIwCisJMDAyNiAgRURJUk9MIFVBLTIwCisJMDAyNyAgRURJUk9MIFNELTIwCisJMDAyOCAgRURJUk9MIFNELTIwCisJMDAyOSAgRURJUk9MIFNELTgwCisJMDAyYSAgRURJUk9MIFNELTgwCisJMDAyYiAgRURJUk9MIFVBLTcwMAorCTAwMmMgIEVESVJPTCBVQS03MDAKKwkwMDJkICBYVi0yMDIwIFN5bnRoZXNpemVyCisJMDAyZSAgWFYtMjAyMCBTeW50aGVzaXplcgorCTAwMmYgIFZhcmlPUworCTAwMzAgIFZhcmlPUworCTAwMzMgIEVESVJPTCBQQ1IKKwkwMDM0ICBFRElST0wgUENSCisJMDAzNyAgRGlnaXRhbCBQaWFubworCTAwMzggIERpZ2l0YWwgUGlhbm8KKwkwMDNiICBCT1NTIEdTLTEwCisJMDAzYyAgQk9TUyBHUy0xMAorCTAwNDAgIEdJLTIwCisJMDA0MSAgR0ktMjAKKwkwMDQyICBSUy03MAorCTAwNDMgIFJTLTcwCisJMDA0NCAgRURJUk9MIFVBLTEwMDAKKwkwMDQ3ICBFRElST0wgVVItODAgV0FWRQorCTAwNDggIEVESVJPTCBVUi04MCBNSURJCisJMDA0OSAgRURJUk9MIFVSLTgwIFdBVkUKKwkwMDRhICBFRElST0wgVVItODAgTUlESQorCTAwNGIgIEVESVJPTCBNLTEwMEZYCisJMDA0YyAgRURJUk9MIFBDUi1BIFdBVkUKKwkwMDRkICBFRElST0wgUENSLUEgTUlESQorCTAwNGUgIEVESVJPTCBQQ1ItQSBXQVZFCisJMDA0ZiAgRURJUk9MIFBDUi1BIE1JREkKKwkwMDUwICBFRElST0wgVUEtM0ZYCisJMDA1MiAgRURJUk9MIFVNLTFTWAorCTAwNTQgIERpZ2l0YWwgUGlhbm8KKwkwMDYwICBFWFIgU2VyaWVzCisJMDA2NCAgRURJUk9MIFBDUi0xIFdBVkUKKwkwMDY1ICBFRElST0wgUENSLTEgTUlESQorCTAwNjYgIEVESVJPTCBQQ1ItMSBXQVZFCisJMDA2NyAgRURJUk9MIFBDUi0xIE1JREkKKwkwMDZhICBTUC02MDYKKwkwMDZiICBTUC02MDYKKwkwMDZkICBGQU5UT00tWAorCTAwNmUgIEZBTlRPTS1YCisJMDA3MyAgRURJUk9MIFVBLTI1CisJMDA3NCAgRURJUk9MIFVBLTI1CisJMDA3NSAgQk9TUyBEUi04ODAKKwkwMDc2ICBCT1NTIERSLTg4MAorCTAwN2EgIFJECisJMDA3YiAgUkQKKwkwMDdkICBFRElST0wgVUEtMTAxCisJMDA4MCAgRy03MAorCTAwODEgIEctNzAKKwkwMDhiICBFRElST0wgUEMtNTAKKwkwMDhjICBFRElST0wgUEMtNTAKKwkwMDhkICBFRElST0wgVUEtMTAxIFVTQjEKKwkwMDkyICBFRElST0wgUEMtODAgV0FWRQorCTAwOTMgIEVESVJPTCBQQy04MCBNSURJCisJMDA5NiAgRURJUk9MIFVBLTFFWAorCTAwOWEgIEVESVJPTCBVTS0zRVgKKwkwMDlkICBFRElST0wgVU0tMQorCTAwYTIgIERpZ2l0YWwgUGlhbm8KKwkwMGEzICBFRElST0wgVUEtNEZYCisJMDBhNiAgSnVuby1HCisJMDBhZCAgU0gtMjAxCisJMDBjNCAgRURJUk9MIE0tMTZEWAorCTAwZGUgIEZhbnRvbS1HNworMDU4MyAgUGFkaXggQ28uLCBMdGQgKFJvY2tmaXJlKQorCTIwMzAgIFJNLTIwMyBVU0IgTmVzdCBbbW9kZSAxXQorCTIwMzEgIFJNLTIwMyBVU0IgTmVzdCBbbW9kZSAyXQorCTIwMzIgIFJNLTIwMyBVU0IgTmVzdCBbbW9kZSAzXQorCTIwMzMgIFJNLTIwMyBVU0IgTmVzdCBbbW9kZSA0XQorCTIwNTAgIFBYLTIwNSBQU1ggQnJpZGdlCisJMzA1MCAgUUYtMzA1dSBHYW1lcGFkCisJNjg4ZiAgUUYtNjg4dXYgV2luZHN0b3JtIFBybyBKb3lzdGljaworCTcwNzAgIFFGLTcwN3UgQmF6b29rYSBKb3lzdGljaworMDU4NCAgUkFUT0MgU3lzdGVtLCBJbmMuCisJMDAwOCAgRnVqaWZpbG0gTWVtb3J5Q2FyZCBSZWFkZXJXcml0ZXIKKwliMDAwICBSRVgtVVNCNjAKKzA1ODUgIEZsYXNoUG9pbnQgVGVjaG5vbG9neSwgSW5jLgorCTAwMDEgIERpZ2l0YWwgQ2FtZXJhCisJMDAwMiAgRGlnaXRhbCBDYW1lcmEKKwkwMDAzICBEaWdpdGFsIENhbWVyYQorCTAwMDQgIERpZ2l0YWwgQ2FtZXJhCisJMDAwNSAgRGlnaXRhbCBDYW1lcmEKKwkwMDA2ICBEaWdpdGFsIENhbWVyYQorCTAwMDcgIERpZ2l0YWwgQ2FtZXJhCisJMDAwOCAgRGlnaXRhbCBDYW1lcmEKKwkwMDA5ICBEaWdpdGFsIENhbWVyYQorCTAwMGEgIERpZ2l0YWwgQ2FtZXJhCisJMDAwYiAgRGlnaXRhbCBDYW1lcmEKKwkwMDBjICBEaWdpdGFsIENhbWVyYQorCTAwMGQgIERpZ2l0YWwgQ2FtZXJhCisJMDAwZSAgRGlnaXRhbCBDYW1lcmEKKwkwMDBmICBEaWdpdGFsIENhbWVyYQorMDU4NiAgWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycC4KKwkwMTAyICBvbW5pLm5ldCBJSSBJU0ROIFRBCisJMTAwMCAgT21uaSBORVQgTW9kZW0gLyBJU0ROIFRBCisJMTUwMCAgT21uaSA1NksgUGx1cworCTIwMTEgIFNjb3JwaW9uLTk4ME4ga2V5Ym9hcmQKKwkzMzA0ICBMQU4gTW9kZW0KKwkzMzBhICBBRFNMIE1vZGVtIEludGVyZmFjZQorCTMzMGUgIFVTQiBCcm9hZGJhbmQgQURTTCBNb2RlbSBSZXYgMS4xMAorCTM0MDAgIDgwMi4xMWIKKwkzNDAxICBaeUFJUiBHLTIyMCA4MDIuMTFiZworCTM0MDIgIFp5QUlSIEctMjIwRiA4MDIuMTFiZworCTM0MDcgIEctMjAwIHYyIDgwMi4xMWJnCisJMzQwOSAgQUctMjI1SCA4MDIuMTFiZworCTM0MGEgIE0tMjAyIDgwMi4xMWJnCisJMzQwZiAgRy0yMjAgdjIgODAyLjExYmcKKwkzNDEwICBaeUFJUiBHLTIwMiA4MDIuMTFiZworCTM0MTIgIDgwMi4xMWJnCisJMzQxMyAgWnlBSVIgQUctMjI1SCB2MiA4MDIuMTFiZworCTM0MTUgIEctMjEwSCA4MDIuMTFnIFdpcmVsZXNzIEFkYXB0ZXIKKwkzNDE2ICBOV0QtMjEwTiA4MDIuMTFiL2cvbi1kcmFmdCB3aXJlbGVzcyBhZGFwdGVyCiswNTg3ICBBbWVyaWNhIEtvdG9idWtpIEVsZWN0cm9uaWNzIEluZHVzdHJpZXMsIEluYy4KKzA1ODggIFNhcGllbiBEZXNpZ24KKzA1ODkgIFZpY3Ryb24KKzA1OGEgIE5vaGF1IENvcnAuCiswNThiICBJbmZpbmVvbiBUZWNobm9sb2dpZXMKKzA1OGMgIEluIEZvY3VzIFN5c3RlbXMKKwkwMDA3ICBGbGFzaAorCTAwMDggIExQMTMwCisJMDAwYSAgTFA1MzAKKwkwMDEwICBQcm9qZWN0b3IKKwkwMDExICBQcm9qZWN0b3IKKwkwMDEyICBQcm9qZWN0b3IKKwkwMDEzICBQcm9qZWN0b3IKKwkwMDE0ICBQcm9qZWN0b3IKKwkwMDE1ICBQcm9qZWN0b3IKKwkwMDE2ICBQcm9qZWN0b3IKKwkwMDE3ICBQcm9qZWN0b3IKKwkwMDE4ICBQcm9qZWN0b3IKKwkwMDE5ICBQcm9qZWN0b3IKKwkwMDFhICBQcm9qZWN0b3IKKwkwMDFiICBQcm9qZWN0b3IKKwkwMDFjICBQcm9qZWN0b3IKKwkwMDFkICBQcm9qZWN0b3IKKwkwMDFlICBQcm9qZWN0b3IKKwkwMDFmICBQcm9qZWN0b3IKKzA1OGQgIE1pY3JlbCBTZW1pY29uZHVjdG9yCiswNThlICBUcmlwYXRoIFRlY2hub2xvZ3ksIEluYy4KKzA1OGYgIEFsY29yIE1pY3JvIENvcnAuCisJMTIzNCAgRmxhc2ggRHJpdmUKKwkyNDEyICBTQ2FyZCBSL1cgQ1NSLTE0NQorCTI4MDIgIE1vbnRlcmV5IEtleWJvYXJkCisJNTQ5MiAgSHViCisJNjIzMiAgSGktU3BlZWQgMTYtaW4tMSBGbGFzaCBDYXJkIFJlYWRlci9Xcml0ZXIKKwk2MjU0ICBVU0IgSHViCisJNjMzNSAgU0QvTU1DIENhcmQgUmVhZGVyCisJNjM2MCAgTXVsdGltZWRpYSBDYXJkIFJlYWRlcgorCTYzNjEgIE11bHRpbWVkaWEgQ2FyZCBSZWFkZXIKKwk2MzYyICBIaS1TcGVlZCAyMS1pbi0xIEZsYXNoIENhcmQgUmVhZGVyL1dyaXRlciAoSW50ZXJuYWwvRXh0ZXJuYWwpCisJNjM3NyAgTXVsdGltZWRpYSBDYXJkIFJlYWRlcgorCTYzODYgIE1lbW9yeSBDYXJkCisJNjM4NyAgVHJhbnNjZW5kIEpldEZsYXNoIEZsYXNoIERyaXZlCisJNjM5MCAgVVNCIDIuMC1JREUgYnJpZGdlCisJOTIxMyAgTWFjQWxseSBLYmQgSHViCisJOTIxNSAgQVU5ODE0IEh1YgorCTkyNTQgIEh1YgorCTkzMTAgIE1hc3MgU3RvcmFnZSAoVUlENC81QSAmIFVJRDdBKQorCTkzMjAgIE1pY3JvIFN0b3JhZ2UgRHJpdmVyIGZvciBXaW45OAorCTkzMjEgIE1pY3JvIFN0b3JhZ2UgRHJpdmVyIGZvciBXaW45OAorCTkzMzAgIFNEIFJlYWRlcgorCTkzMzEgIE1pY3JvIFN0b3JhZ2UgRHJpdmVyIGZvciBXaW45OAorCTkzNDAgIERlbGtpbiBlRmlsbSBSZWFkZXItMzIKKwk5MzUwICBEZWxraW4gZUZpbG0gUmVhZGVyLTMyCisJOTM2MCAgOC1pbi0xIE1lZGlhIENhcmQgUmVhZGVyCisJOTM2MSAgTXVsdGltZWRpYSBDYXJkIFJlYWRlcgorCTkzNjggIE11bHRpbWVkaWEgQ2FyZCBSZWFkZXIKKwk5MzgwICBGbGFzaCBEcml2ZQorCTkzODIgIEFjZXIvU3dlZXggRmxhc2ggZHJpdmUKKwk5NDEwICBLZXlib2FyZAorCTk0NzIgIEtleWJvYXJkIEh1YgorCTk1MTAgIENodW5naHdhVEwgVVNCMDIgU21hcnRjYXJkIFJlYWRlcgorCTk1MjAgIEVNViBDZXJ0aWZpZWQgU21hcnQgQ2FyZCBSZWFkZXIKKwk5NzIwICBVU0ItU2VyaWFsIEFkYXB0ZXIKKzA1OTAgIE9tcm9uIENvcnAuCisJMDAwNCAgQ2FibGUgTW9kZW0KKwkwMDBiICBNUjU2U1ZTCisJMDAyOCAgSEotNzIwSVQgUGVkb21ldGVyCiswNTkxICBRdWVzdHJhIENvbnN1bHRpbmcKKzA1OTIgIFBvd2Vyd2FyZSBDb3JwLgorCTAwMDIgIFVQUyAoWC1TbG90KQorMDU5MyAgSW5jaXRlCiswNTk0ICBQcmluY2V0b24gR3JhcGhpYyBTeXN0ZW1zCiswNTk1ICBab3JhbiBNaWNyb2VsZWN0cm9uaWNzLCBMdGQKKwkxMDAxICBEaWdpdHJleCBEU0MtMTMwMC9EU0MtMjEwMCAobWFzcyBzdG9yYWdlIG1vZGUpCisJNDM0MyAgRGlnaXRhbCBDYW1lcmEgRVgtMjAgRFNDCiswNTk2ICBNaWNyb1RvdWNoIFN5c3RlbXMsIEluYy4KKwkwMDAxICBUb3VjaHNjcmVlbgorCTAwMDIgIFRvdWNoIFNjcmVlbiBDb250cm9sbGVyCiswNTk3ICBUcmlzaWduYWwgQ29tbXVuaWNhdGlvbnMKKzA1OTggIE5paWdhdGEgQ2Fub3RlYyBDby4sIEluYy4KKzA1OTkgIEJyaWxsaWFuY2UgU2VtaWNvbmR1Y3RvciwgSW5jLgorMDU5YSAgU3BlY3RydW0gU2lnbmFsIFByb2Nlc3NpbmcsIEluYy4KKzA1OWIgIElvbWVnYSBDb3JwLgorCTAwMDEgIFppcCAxMDAgKFR5cGUgMSkKKwkwMDBiICBaaXAgMTAwIChUeXBlIDIpCisJMDAyMSAgV2luOTggRGlzayBDb250cm9sbGVyCisJMDAzMCAgWmlwIDI1MCAoVmVyIDEpCisJMDAzMSAgWmlwIDEwMCAoVHlwZSAzKQorCTAwMzIgIFppcCAyNTAgKFZlciAyKQorCTAwMzQgIFppcCAxMDAgRHJpdmVyCisJMDAzNyAgWmlwIDc1MCBNQgorCTAwNDAgIFNDU0kgQnJpZGdlCisJMDA0MiAgUmV2IDcwIEdCCisJMDA1MCAgWmlwIENEIDY1MCBXcml0ZXIKKwkwMDUzICBDRFJXNTUyOTJFWFQgQ0QtUlcgRXh0ZXJuYWwgRHJpdmUKKwkwMDU3ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDA1ZCAgTWFzcyBTdG9yYWdlIERldmljZQorCTAwNWYgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMDYwICBQQ01DSUEgUG9ja2V0WmlwIERvY2sKKwkwMDYxICBWYXJvIFBvY2tldFppcCA0MCBNUDMgUGxheWVyCisJMDA2ZCAgSGlwWmlwIE1QMyBQbGF5ZXIKKwkwMDdjICBVbHRyYSBNYXggVVNCLzEzOTQKKwkwMGRiICBGb3RvU2hvdyBaaXAgMjUwIERyaXZlcgorCTAxNTAgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTVkICBTdXBlciBEVkQgV3JpdGVyCisJMDE3MyAgSGktU3BlZWQgVVNCLXRvLUlERSBCcmlkZ2UgQ29udHJvbGxlcgorCTAxNzQgIEhpLVNwZWVkIFVTQi10by1JREUgQnJpZGdlIENvbnRyb2xsZXIKKwkwMTc2ICBIaS1TcGVlZCBVU0ItdG8tSURFIEJyaWRnZSBDb250cm9sbGVyCisJMDE3NyAgSGktU3BlZWQgVVNCLXRvLUlERSBCcmlkZ2UgQ29udHJvbGxlcgorCTAxNzggIEhpLVNwZWVkIFVTQi10by1JREUgQnJpZGdlIENvbnRyb2xsZXIKKwkwMTc5ICBIaS1TcGVlZCBVU0ItdG8tSURFIEJyaWRnZSBDb250cm9sbGVyCisJMDE3YSAgSERECisJMDE3YiAgSERELzEzOTRBCisJMDE3YyAgSERELzEzOTRCCisJMDI1MSAgT3B0aWNhbAorCTAyNTIgIE9wdGljYWwKKwkxMDUyICBEVkQrUlcgRXh0ZXJuYWwgRHJpdmUKKzA1OWMgIEEtVHJlbmQgVGVjaG5vbG9neSBDby4sIEx0ZAorMDU5ZCAgQWR2YW5jZWQgSW5wdXQgRGV2aWNlcworMDU5ZSAgSW50ZWxsaWdlbnQgSW5zdHJ1bWVudGF0aW9uCiswNTlmICBMYUNpZSwgTHRkCisJMDIwMSAgU3R1ZGlvRHJpdmUgVVNCMgorCTAyMDIgIFN0dWRpb0RyaXZlIFVTQjIKKwkwMjAzICBTdHVkaW9Ecml2ZSBVU0IyCisJMDIxMSAgUG9ja2V0RHJpdmUKKwkwMjEyICBQb2NrZXREcml2ZQorCTAyMTMgIFBvY2tldERyaXZlIFVTQjIKKwkwMzIzICBMYUNpZSBkMiBEcml2ZSBVU0IyCisJMDY0MSAgTW9iaWxlIEhhcmQgRHJpdmUKKwkxMDEwICBEZXNrdG9wIEhhcmQgRHJpdmUKKwlhNjAxICBIYXJkRHJpdmUKKwlhNjAyICBDRCBSL1cKKzA1YTAgIFZldHJvbml4IENvcnAuCiswNWExICBVU0MgQ29ycC4KKzA1YTIgIEZ1amkgRmlsbSBNaWNyb2RldmljZXMgQ28uLCBMdGQKKzA1YTMgIEFSQyBJbnRlcm5hdGlvbmFsCiswNWE0ICBPcnRlayBUZWNobm9sb2d5LCBJbmMuCisJOTcyMCAgS2V5Ym9hcmQgTW91c2UKKwk5NzIyICBLZXlib2FyZAorCTk3MzEgIE1DSy02MDBXL01DSy04MDBVU0IgS2V5Ym9hcmQKKzA1YTUgIFNhbXBvIFRlY2hub2xvZ3kgQ29ycC4KKzA1YTYgIENpc2NvIFN5c3RlbXMsIEluYy4KKwkwMDAxICBDVkExMjQgQ2FibGUgVm9pY2UgQWRhcHRlciAoV0RNKQorCTAwMDIgIENWQTEyMiBDYWJsZSBWb2ljZSBBZGFwdGVyIChXRE0pCisJMDAwMyAgQ1ZBMTI0RSBDYWJsZSBWb2ljZSBBZGFwdGVyIChXRE0pCisJMDAwNCAgQ1ZBMTIyRSBDYWJsZSBWb2ljZSBBZGFwdGVyIChXRE0pCiswNWE3ICBCb3NlIENvcnAuCiswNWE4ICBTcGFjZXRlYyBJTUMgQ29ycC4KKzA1YTkgIE9tbmlWaXNpb24gVGVjaG5vbG9naWVzLCBJbmMuCisJMDUxMSAgT1Y1MTEgV2ViY2FtCisJMDUxOCAgT1Y1MTggV2ViY2FtCisJMDUxOSAgT1Y1MTkgTWljcm9waG9uZQorCTE1NTAgIFZFSE8gRmlsbXNjYW5uZXIKKwkyNjQwICBPVjI2NDAgV2ViY2FtCisJMjY0MyAgTW9uaXRvciBXZWJjYW0KKwkyODAwICBTdXBlckNBTQorCTQ1MTkgIFdlYmNhbSBDbGFzc2ljCisJNzY3MCAgT1Y3NjcwIFdlYmNhbQorCTg1MTkgIE9WNTE5IFdlYmNhbQorCWE1MTEgIE9WNTExKyBXZWJjYW0KKwlhNTE4ICBELUxpbmsgRFNCLUMzMTAgV2ViY2FtCiswNWFhICBVdGlsdXggU291dGggQ2hpbmEsIEx0ZAorMDVhYiAgSW4tU3lzdGVtIERlc2lnbgorCTAwMDIgIFBhcmFsbGVsIFBvcnQKKwkwMDMwICBTdG9yYWdlIEFkYXB0ZXIgVjIgKFRQUCkKKwkwMDMxICBBVEEgQnJpZGdlCisJMDA2MCAgVVNCIDIuMCBBVEEgQnJpZGdlCisJMDA2MSAgU3RvcmFnZSBBZGFwdGVyIFYzIChUUFAtSSkKKwkwMTAxICBTdG9yYWdlIEFkYXB0ZXIgKFRQUCkKKwkwMTMwICBDb21wYWN0IEZsYXNoIGFuZCBNaWNyb2RyaXZlIFJlYWRlciAoVFBQKQorCTAyMDAgIFVTUzcyNSBBVEEgQnJpZGdlCisJMDIwMSAgU3RvcmFnZSBBZGFwdGVyIChUUFApCisJMDIwMiAgQVRBIEJyaWRnZQorCTAzMDAgIFBvcnRhYmxlIEhhcmQgRHJpdmUgKFRQUCkKKwkwMzAxICBQb3J0YWJsZSBIYXJkIERyaXZlIFYyCisJMDM1MCAgUG9ydGFibGUgSGFyZCBEcml2ZSAoVFBQKQorCTAzNTEgIFBvcnRhYmxlIEhhcmQgRHJpdmUgVjIKKwkwODFhICBBVEEgQnJpZGdlCisJMGNkYSAgQVRBIEJyaWRnZSBmb3IgQ0QtUi9SVworCTEwMDEgIEJBWUkgUHJpbnRlciBDbGFzcyBTdXBwb3J0CisJNTcwMCAgU3RvcmFnZSBBZGFwdGVyIFYyIChUUFApCisJNTcwMSAgVVNCIFN0b3JhZ2UgQWRhcHRlciBWMgorCTU5MDEgIFNtYXJ0IEJvYXJkIChUUFApCisJNWEwMSAgQVRJIFN0b3JhZ2UgQWRhcHRlciAoVFBQKQorCTVkMDEgIERhdGFCb29rIEFkYXB0ZXIgKFRQUCkKKzA1YWMgIEFwcGxlLCBJbmMuCisJMDIwMSAgVVNCIEtleWJvYXJkIFtBbHBzIG9yIExvZ2l0ZWNoLCBNMjQ1Ml0KKwkwMjAyICBLZXlib2FyZCBbQUxQU10KKwkwMjA1ICBFeHRlbmRlZCBLZXlib2FyZCBbTWl0c3VtaV0KKwkwMjA2ICBFeHRlbmRlZCBLZXlib2FyZCBbTWl0c3VtaV0KKwkwMjBiICBQcm8gS2V5Ym9hcmQgW01pdHN1bWksIEExMDQ4L1VTIGxheW91dF0KKwkwMjBjICBFeHRlbmRlZCBLZXlib2FyZCBbTWl0c3VtaV0KKwkwMjBkICBQcm8gS2V5Ym9hcmQgW01pdHN1bWksIEExMDQ4L0pJUyBsYXlvdXRdCisJMDIwZSAgSW50ZXJuYWwgS2V5Ym9hcmQvVHJhY2twYWQKKwkwMjBmICBJbnRlcm5hbCBLZXlib2FyZC9UcmFja3BhZAorCTAyMWIgIEludGVybmFsIEtleWJvYXJkL1RyYWNrcGFkCisJMDIyMCAgQWx1bWludW0gS2V5Ym9hcmQKKwkwMjIxICBLZXlib2FyZCAoQWx1bWluaXVtKSAoSVNPKQorCTAyMjkgIEludGVybmFsIEtleWJvYXJkL1RyYWNrcGFkIChNYWNCb29rIFBybykgKEFOU0kpCisJMDIyYSAgSW50ZXJuYWwgS2V5Ym9hcmQvVHJhY2twYWQgKE1hY0Jvb2sgUHJvKSAoSVNPKQorCTAyMmIgIEludGVybmFsIEtleWJvYXJkL1RyYWNrcGFkIChNYWNCb29rIFBybykgKEpJUykKKwkwMzAxICBVU0IgTW91c2UgW01pdHN1bWksIE00ODQ4XQorCTAzMDIgIE9wdGljYWwgTW91c2UgW0Z1aml0c3VdCisJMDMwNCAgT3B0aWNhbCBVU0IgTW91c2UgW01pdHN1bWldCisJMDMwNiAgT3B0aWNhbCBVU0IgTW91c2UgW0Z1aml0c3VdCisJMDMwYSAgSW50ZXJuYWwgVHJhY2twYWQKKwkxMDAwICBCbHVldG9vdGggSENJIE1hY0Jvb2tQcm8gKEhJRCBtb2RlKQorCTEwMDEgIEtleWJvYXJkIEh1YiBbQUxQU10KKwkxMDAyICBFeHRlbmRlZCBLZXlib2FyZCBIdWIgW01pdHN1bWldCisJMTAwMyAgSHViIGluIFBybyBLZXlib2FyZCBbTWl0c3VtaSwgQTEwNDhdCisJMTAwNiAgSHViIGluIEFsdW1pbnVtIEtleWJvYXJkCisJMTEwMSAgU3BlYWtlcnMKKwkxMjAxICAzRyBpUG9kCisJMTIwMiAgaVBvZCAyRworCTEyMDMgIGlQb2QgNC5HZW4gR3JheXNjYWxlIDQwRworCTEyMDQgIGlQb2QgW1Bob3RvXQorCTEyMDUgIGlQb2QgTWluaSAxLkdlbi8yLkdlbgorCTEyMDYgIGlQb2QgJzA2JworCTEyMDcgIGlQb2QgJzA3JworCTEyMDggIGlQb2QgJzA4JworCTEyMDkgIGlQb2QgVmlkZW8KKwkxMjBhICBpUG9kIE5hbm8KKwkxMjQwICBpUG9kIE5hbm8gMi5HZW4gKERGVSBtb2RlKQorCTEyNjAgIGlQb2QgTmFubyAyLkdlbgorCTEyNjEgIGlQb2QgQ2xhc3NpYworCTEyNjIgIGlQb2QgTmFubyAzLkdlbgorCTEyOTAgIGlQaG9uZQorCTEyOTEgIGlQb2QgVG91Y2ggMS5HZW4KKwkxMjkyICBpUGhvbmUgM0cKKwkxMzAwICBpUG9kIFNodWZmbGUKKwkxMzAxICBpUG9kIFNodWZmbGUgMi5HZW4KKwk4MjAyICBIQ0YgVi45MCBEYXRhL0ZheCBNb2RlbQorCTgyMDMgIEJsdWV0b290aCBIQ0kKKwk4MjA0ICBCbHVldG9vdGggSENJIFtCbHVldG9vdGggMi4wICsgRURSLCBidWlsZC1pbl0KKwk4MjA1ICBCbHVldG9vdGggSENJCisJODIwNiAgQmx1ZXRvb3RoIEhDSQorCTgyNDAgIElSIFJlY2VpdmVyIFtidWlsZC1pbl0KKwk4MzAwICBCdWlsdC1pbiBpU2lnaHQgKG5vIGZpcm13YXJlIGxvYWRlZCkKKwk4NTAxICBCdWlsdC1pbiBpU2lnaHQgW01pY3Jvbl0KKwk4NTAyICBCdWlsdC1pbiBpU2lnaHQKKwk5MTJmICBIdWIgaW4gMzAiIENpbmVtYSBEaXNwbGF5CisJOTIyMSAgMzAiIENpbmVtYSBEaXNwbGF5CisJZmZmZiAgQmx1ZXRvb3RoIGluIERGVSBtb2RlIC0gRHJpdmVyCiswNWFkICBZLkMuIENhYmxlIFUuUy5BLiwgSW5jLgorMDVhZSAgU3lub3BzeXMsIEluYy4KKzA1YWYgIEppbmctTW9sZCBFbnRlcnByaXNlIENvLiwgTHRkCisJMDgyMSAgSURFIHRvCisJOTE2NyAgS0IgOTE1MUIgLSA2NzgKKwk5MjY3ICBLQiA5MjUxQiAtIDY3OCBNb3VzZQorMDViMCAgRm91bnRhaW4gVGVjaG5vbG9naWVzLCBJbmMuCiswNWIxICBGaXJzdCBJbnRlcm5hdGlvbmFsIENvbXB1dGVyLCBJbmMuCisJMTM4OSAgQmx1ZXRvb3RoIFdpcmVsZXNzIEFkYXB0ZXIKKzA1YjQgIExHIFNlbWljb24gQ28uLCBMdGQKKwk0ODU3ICBNLUFueSBEQUgtMjEwCisJNjAwMSAgRGlnaXNldHRlIERVTy1NUDMgQVItMTAwCiswNWI1ICBEaWFsb2dpYyBDb3JwLgorMDViNiAgUHJveGltYSBDb3JwLgorMDViNyAgTWVkaWFuaXggU2VtaWNvbmR1Y3RvciwgSW5jLgorMDViOCAgQWdpbGVyLCBJbmMuCisJMzAwMiAgU2Nyb2xsIE1vdXNlCiswNWI5ICBQaGlsaXBzIFJlc2VhcmNoIExhYm9yYXRvcmllcworMDViYSAgRGlnaXRhbFBlcnNvbmEsIEluYy4KKzA1YmIgIEdyZXkgQ2VsbCBTeXN0ZW1zCiswNWJjICAzRyBHcmVlbiBHcmVlbiBHbG9iZSBDby4sIEx0ZAorCTAwMDQgIFRyYWNrYmFsbAorMDViZCAgUkFGSSBHbWJIICYgQ28uIEtHCiswNWJlICBUeWNvIEVsZWN0cm9uaWNzIChSYXljaGVtKQorMDViZiAgUyAmIFMgUmVzZWFyY2gKKzA1YzAgIEtlaWwgU29mdHdhcmUKKzA1YzEgIEthd2FzYWtpIE1pY3JvZWxlY3Ryb25pY3MsIEluYy4KKzA1YzIgIE1lZGlhIFBob25pY3MgKFN1aXNzZSkgUy5BLgorMDVjNSAgRGlnaSBJbnRlcm5hdGlvbmFsLCBJbmMuCisJMDAwMiAgQWNjZWxlUG9ydCBVU0IgMgorCTAwMDQgIEFjY2VsZVBvcnQgVVNCIDQKKwkwMDA4ICBBY2NlbGVQb3J0IFVTQiA4CiswNWM2ICBRdWFsY29tbSwgSW5jLgorCTMxMDAgIENETUEgV2lyZWxlc3MgTW9kZW0vUGhvbmUKKwkzMTk2ICBDRE1BIFdpcmVsZXNzIE1vZGVtCisJMzE5NyAgQ0RNQSBXaXJlbGVzcyBNb2RlbS9QaG9uZQorCTY2MTMgIE9uZGEgSDYwMC9ONTAxSFMgWlRFIE1GMzMwCiswNWM3ICBRdHJvbml4IENvcnAuCisJMDExMyAgUEMgTGluZSBNb3VzZQorCTEwMDEgIEx5bnggTW91c2UKKwkyMDAxICBLZXlib2FyZAorCTIwMTEgIFNDb3JwaXVzIEtleWJvYXJkCisJNjAwMSAgVGVuLUtleXBhZAorMDVjOCAgQ2hlbmcgVWVpIFByZWNpc2lvbiBJbmR1c3RyeSBDby4sIEx0ZCAoRm94bGluaykKKwkwMTAzICBGTzEzRkYtNjUgUEMtQ0FNCiswNWM5ICBTZW10ZWNoIENvcnAuCiswNWNhICBSaWNvaCBDby4sIEx0ZAorCTAxMDEgIFJEQy01MzAwIENhbWVyYQorCTAzMjUgIENhcGxpbyBHWCAocHRwKQorCTAzMmQgIENhcGxpbyBHWCA4IChwdHApCisJMDMyZiAgQ2FwbGlvIFIzIChwdHApCisJMDNhMSAgSVMyMDBlCisJMDQwMyAgUHJpbnRpbmcgU3VwcG9ydAorCTA0MDUgIFR5cGUgMTAxCisJMDQwNiAgVHlwZSAxMDIKKwkxODAzICBWNSBjYW1lcmEgW1I1VTg3MF0KKwkxODEwICBQYXZpbGlvbiBXZWJjYW0gW1I1VTg3MF0KKwkxODEyICBQYXZpbGlvbiBXZWJjYW0KKwkxODMwICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzIgW1I1VTg3MF0KKwkxODMyICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzMgW1I1VTg3MF0KKwkxODMzICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzIgW1I1VTg3MF0KKwkxODM0ICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzIgW1I1VTg3MF0KKwkxODM1ICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzUgW1I1VTg3MF0KKwkxODM2ICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzQgW1I1VTg3MF0KKwkxODM3ICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzQgW1I1VTg3MF0KKwkxODM5ICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzYgW1I1VTg3MF0KKwkxODNhICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzcgW1I1VTg3MF0KKwkxODNiICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzggW1I1VTg3MF0KKwkxODNlICBWaXN1YWwgQ29tbXVuaWNhdGlvbiBDYW1lcmEgVkdQLVZDQzkgW1I1VTg3MF0KKwkxODQxICBGdWppdHN1IEYwMS8gTGlmZWJvb2sgVTgxMCBbUjVVODcwXQorCTE4NzAgIFdlYmNhbSAxMDAwCisJMjIwMSAgUkRDLTcgQ2FtZXJhCisJMjIwMiAgQ2FwbGlvIFJSMzAKKwkyMjAzICBDYXBsaW8gMzAwRworCTIyMDQgIENhcGxpbyBHMworCTIyMDUgIENhcGxpbyBSUjMwIC8gTWVkaW9uIE1EIDYxMjYgQ2FtZXJhCisJMjIwNiAgS29uaWNhIERHLTNaCisJMjIwNyAgQ2FwbGlvIFBybyBHMworCTIyMDggIENhcGxpbyBHNAorCTIyMDkgIENhcGxpbyA0MDBHIHdpZGUKKwkyMjBhICBLT05JQ0EgTUlOT0xUQSBERy00V2lkZQorCTIyMGIgIENhcGxpbyBSWAorCTIyMGMgIENhcGxpbyBHWAorCTIyMGQgIENhcGxpbyBSMS9SWjEKKwkyMjBlICBTZWEgJiBTZWEgNTAwMEcKKwkyMjBmICBSb2xsZWkgZHI1IC8gUm9sbGVpIGRyNSAoUFRQIG1vZGUpCisJMjIxMSAgQ2FwbGlvIFIxUworCTIyMTIgIENhcGxpbyBSMXYgQ2FtZXJhCisJMjIxMyAgQ2FwbGlvIFIyCisJMjIxNCAgQ2FwbGlvIEdYIDgKKwkyMjE1ICBEU0MgNzI1CisJMjIxNiAgQ2FwbGlvIFIzCisJMjIyMiAgUkRDLWk1MDAKKzA1Y2IgIFBvd2VyVmlzaW9uIFRlY2hub2xvZ2llcywgSW5jLgorCTE0ODMgIFBWODYzMCBpbnRlcmZhY2UgKHNjYW5uZXJzLCB3ZWJjYW1zKQorMDVjYyAgRUxTQSBBRworCTIxMDAgIE1pY3JvTGluayBJU0ROIE9mZmljZQorCTIyMTkgIE1pY3JvTGluayBJU0ROCisJMjI2NSAgTWljcm9MaW5rIDU2aworCTIyNjcgIE1pY3JvTGluayA1NmsgKFYuMjUwKQorCTIyODAgIE1pY3JvTGluayA1NmsgRnVuCisJMzAwMCAgTWljb2xpbmsgVVNCMkV0aGVybmV0IFtwZWdhc3VzXQorCTMxMDAgIEFpckxhbmNlciBVU0ItMTEKKwkzMzYzICBNaWNyb0xpbmsgQURTTCBGdW4KKzA1Y2QgIFNpbGljb20sIEx0ZAorMDVjZSAgc2NpLXdvcnggR21iSAorMDVjZiAgU3VuZyBGb3JuIENvLiwgTHRkCiswNWQwICBHRSBNZWRpY2FsIFN5c3RlbXMgTHVuYXIKKzA1ZDEgIEJyYWluYm94ZXMsIEx0ZAorCTAwMDMgIEJsdWV0b290aCBBZGFwdGVyIEJMLTU1NAorMDVkMiAgV2F2ZSBTeXN0ZW1zIENvcnAuCiswNWQzICBUb2hva3UgUmljb2ggQ28uLCBMdGQKKzA1ZDUgIFN1cGVyIEdhdGUgVGVjaG5vbG9neSBDby4sIEx0ZAorMDVkNiAgUGhpbGlwcyBTZW1pY29uZHVjdG9ycywgQ0lDVAorMDVkNyAgVGhvbWFzICYgQmV0dHMgQ29ycC4KKwkwMDk5ICAxME1icHMgRXRoZXJuZXQgW2tsc2ldCiswNWQ4ICBVbHRpbWEgRWxlY3Ryb25pY3MgQ29ycC4KKwk0MDAxICBBcnRlYyBVbHRpbWEgMjAwMAorCTQwMDIgIEFydGVjIFVsdGltYSAyMDAwIChHVDY4MDEgYmFzZWQpL0xpZmV0ZWMgTFQ5Mzg1L1NjYW5NYWdpYyAxMjAwIFVCIFBsdXMgU2Nhbm5lcgorCTQwMDMgIEFydGVjIEUrIDQ4VQorCTQwMDQgIEFydGVjIEUrIFBybworCTQwMDUgIE1FTTQ4VQorCTQwMDYgIFRSVVNUIEVBU1kgV0VCU0NBTiAxOTIwMAorCTQwMDcgIFRSVVNUIDI0MEggRUFTWSBXRUJTQ0FOIEdPTEQKKwk0MDA4ICBUcnVzdCBFYXN5IFdlYnNjYW4gMTkyMDAKKwk0MDA5ICBVbWF4IEFzdHJhc2xpbQorCTQwMTMgIElUIFNjYW4gMTIwMAorCTgxMDUgIEFydGVjIFQxIFVTQiBUVkJPWCAoY29sZCkKKwk4MTA2ICBBcnRlYyBUMSBVU0IgVFZCT1ggKHdhcm0pCisJODEwNyAgQXJ0ZWMgVDEgVVNCIFRWQk9YIHdpdGggQU4yMjM1IChjb2xkKQorCTgxMDggIEFydGVjIFQxIFVTQiBUVkJPWCB3aXRoIEFOMjIzNSAod2FybSkKKwk4MTA5ICBBcnRlYyBUMSBVU0IyLjAgVFZCT1ggKGNvbGQKKzA1ZDkgIEF4aW9obSBUcmFuc2FjdGlvbiBTb2x1dGlvbnMKKwlhMjI1ICBBMjI1IFByaW50ZXIKKwlhNzU4ICBBNzU4IFByaW50ZXIKKwlhNzk0ICBBNzk0IFByaW50ZXIKKzA1ZGEgIE1pY3JvdGVrIEludGVybmF0aW9uYWwsIEluYy4KKwkwMDkxICBTY2FuTWFrZXIgWDZ1CisJMDA5MyAgU2Nhbk1ha2VyIFY2VVNMCisJMDA5NCAgUGhhbnRvbSAzMzZDWC9DMworCTAwOTkgIFNjYW5NYWtlciBYNi9YNlUKKwkwMDlhICBQaGFudG9tIEM2CisJMDBhMCAgUGhhbnRvbSAzMzZDWC9DMyAoIzIpCisJMDBhMyAgU2Nhbk1ha2VyIFY2VVNMCisJMDBhYyAgU2Nhbk1ha2VyIFY2VUwKKwkwMGI2ICBTY2FuTWFrZXIgVjZVUEwKKwkwMGVmICBTY2FuTWFrZXIgVjZVUEwKKwkxMDA2ICBKZW5vcHRpayBKRDM1MCBlbnRyYW5jZQorCTEwMTEgIE5ISiBDaGUtZXohIEtpc3MgRGlnaXRhbCBDYW1lcmEKKwkxMDE4ICBEaWdpdGFsIERyZWFtIEVuaWdtYSAxLjMKKwkxMDIwICBEaWdpdGFsIERyZWFtIGwnZXNwaW9uIHh0cmEKKwkxMDI1ICBUYWtlLWl0IFN0aWxsIENhbWVyYSBEZXZpY2UKKwkxMDI2ICBUYWtlLWl0CisJMTA0MyAgVGFrZS1JdCAxMzAwIERTQyBCdWxrIERyaXZlcgorCTEwNDUgIFRha2UtaXQgRDEKKwkxMDQ3ICBUYWtlLWl0IENhbWVyYSBDb21wb3NpdGUgRGV2aWNlCisJMTA0OCAgVGFrZS1pdCBRMworCTEwNDkgIDNNIFN0aWxsIENhbWVyYSBEZXZpY2UKKwkxMDUxICBDYW1jb3JkZXIgU2VyaWVzCisJMTA1MiAgTWFzcyBTdG9yYWdlIERldmljZQorCTEwNTMgIFRha2UtaXQgRFYgQ29tcG9zaXRlIERldmljZQorCTEwNTQgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkxMDU1ICBEaWdpdGFsIENhbWVyYSBTZXJpZXMoNTM2KQorCTEwNTYgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkxMDU3ICBUYWtlLWl0IERTQyBDYW1lcmEgRGV2aWNlKDUzNikKKwkxMDU4ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMTA1OSAgQ2FtY29yZGVyIERTQyBTZXJpZXMKKwkxMDYwICBNaWNyb3RlayBUYWtlLWl0IE1WNTAwCisJMjAwNyAgQXJ0aXhTY2FuIERJIDEyMTAKKwkyMDBjICAxMzk0X1VTQjIgU2Nhbm5lcgorCTIwMGUgIEFydGl4U2NhbiBESSA4MTAKKwkyMDE3ICBVRiBJQ0UgU2Nhbm5lcgorCTIwMWMgIDQ4MDAgU2Nhbm5lcgorCTIwMWQgIEFydGl4U2NhbiBESSAxNjEwCisJMjAxZiAgNDgwMCBTY2FubmVyLUlDRQorCTIwMmUgIEFydGl4U2NhbiBESSAyMDIwCisJMjA4YiAgU2Nhbk1ha2VyIDY4MDAKKwkyMDhmICBBcnRpeFNjYW4gREkgMjAxMAorCTIwOWUgIFNjYW5NYWtlciA0NzAwTFAKKwkyMGE3ICBTY2FuTWFrZXIgNTYwMAorCTIwYjAgIFNjYW5NYWtlciBYMTJVU0wKKwkyMGIxICBTY2FuTWFrZXIgODcwMAorCTIwYjQgIFNjYW5NYWtlciA0NzAwCisJMjBiZCAgU2Nhbk1ha2VyIDU3MDAKKwkyMGM5ICBTY2FuTWFrZXIgNjcwMAorCTIwZDIgIE1pY3JvdGVrIEFydGl4U2NhbiAxODAwZgorCTIwZDYgIFBTNDAwMAorCTIwZGUgIFNjYW5NYWtlciA5ODAwWEwKKwkyMGUwICBTY2FuTWFrZXIgOTcwMFhMCisJMjBlZCAgU2Nhbk1ha2VyIDQ3MDAKKwkyMGVlICBNaWNvcnRlayBTY2FuTWFrZXIgWDEyVVNMCisJMzAwOCAgU2Nhbm5lcgorCTMwMGEgIDQ4MDAgSUNFIFNjYW5uZXIKKwkzMDBiICA0ODAwIFNjYW5uZXIKKwkzMDBmICBNaW5pU2NhbiBDNQorCTMwMjAgIDQ4MDBkcGkgU2Nhbm5lcgorCTMwMjEgIDEyMDBkcGkgU2Nhbm5lcgorCTMwMjIgIFNjYW5uZXIgNDgwMGRwaQorCTMwMjMgIFVTQjEyMDBJSSBTY2FubmVyCisJMzBjMSAgVVNCNjAwIFNjYW5uZXIKKwkzMGNlICBTY2FuTWFrZXIgMzgwMAorCTMwY2YgIFNjYW5NYWtlciA0ODAwCisJMzBkNCAgVVNCMTIwMCBTY2FubmVyCisJMzBkOCAgU2Nhbm5lcgorCTMwZDkgIFVTQjI0MDAgU2Nhbm5lcgorCTMwZTQgIFNjYW5NYWtlciA0MTAwCisJMzBlNSAgVVNCMzIwMCBTY2FubmVyCisJMzBlNiAgU2Nhbk1ha2VyIGkzMjAKKwk0MGIzICBTY2FuTWFrZXIgMzYwMAorCTQwYjggIFNjYW5NYWtlciAzNzAwCisJNDBjNyAgU2Nhbk1ha2VyIDQ2MDAKKwk0MGNhICBTY2FuTWFrZXIgMzYwMAorCTQwY2IgIFNjYW5NYWtlciAzNzAwCisJNDBkZCAgU2Nhbk1ha2VyIDM3NTBpCisJNDBmZiAgU2Nhbk1ha2VyIDM2MDAKKwk1MDAzICBHb3lhCisJNTAxMyAgMzIwMCBTY2FubmVyCisJODBhMyAgU2Nhbk1ha2VyIFY2VVNMICgjMikKKwk4MGFjICBTY2FuTWFrZXIgVjZVTC9TcGljeVUKKzA1ZGIgIFN1biBDb3JwLiAoU3VudGFjPykKKwkwMDAzICBTVU5UQUMgVS1DYWJsZSB0eXBlIEQyCisJMDAwNSAgU1VOVEFDIFUtQ2FibGUgdHlwZSBQMQorCTAwMDkgIFNVTlRBQyBTbGlwcGVyIFUKKwkwMDBhICBTVU5UQUMgSXItVHJpbml0eQorCTAwMGIgIFNVTlRBQyBVLUNhYmxlIHR5cGUgQTMKKwkwMDExICBTVU5UQUMgVS1DYWJsZSB0eXBlIEE0CiswNWRjICBMZXhhciBNZWRpYSwgSW5jLgorCTAwMDEgIGp1bXBTSE9UIENvbXBhY3RGbGFzaCBSZWFkZXIKKwkwMDAyICBKdW1wU2hvdAorCTAwMDMgIEp1bXBTaG90CisJMDA4MCAgSnVtcGRyaXZlIFNlY3VyZSA2NE1CCisJMDA4MSAgUkJDIENvbXBhY3QgRmxhc2ggRHJpdmUKKwkwMGE3ICBKdW1wRHJpdmUgSW1wYWN0CisJMDEwMCAgSnVtcERyaXZlIFBSTworCTAyMDAgIEp1bXBEcml2ZSAyLjAgUHJvCisJMDMwMCAgSnVtcGRyaXZlIEdleXNyCisJMDMwMSAgSnVtcERyaXZlIENsYXNzaWMKKwkwMzAyICBKRCBNaWNybworCTAzMDMgIEpEIE1pY3JvIFBybworCTAzMDQgIEpEIFNlY3VyZSBJSQorCTAzMTAgIEp1bXBEcml2ZQorCTAzMTEgIEp1bXBEcml2ZSBDbGFzc2ljCisJMDMxMiAgSkQgTWljcm8KKwkwMzEzICBKRCBNaWNybyBQcm8KKwkwMzIwICBKdW1wRHJpdmUKKwkwMzIxICBKRCBNaWNybworCTAzMjIgIEpEIE1pY3JvIFBybworCTAzMjMgIFVGQworCTAzMzAgIEp1bXBEcml2ZSBFeHByZXNzaW9uCisJMDM0MCAgSnVtcERyaXZlIFRBRAorCTAzNTAgIEV4cHJlc3MgQ2FyZAorCTA0MDAgIFVGREMKKwkwNDAxICBVRkRDCisJMDQwMyAgTG9ja2VkIEIgRGV2aWNlCisJMDQwNSAgTG9ja2VkIEMgRGV2aWNlCisJMDQwNyAgTG9ja2VkIEQgRGV2aWNlCisJMDQwOSAgTG9ja2VkIEUgRGV2aWNlCisJMDQwYiAgTG9ja2VkIEYgRGV2aWNlCisJMDQwZCAgTG9ja2VkIEcgRGV2aWNlCisJMDQwZiAgTG9ja2VkIEggRGV2aWNlCisJMDQxMCAgSnVtcERyaXZlCisJMDQxMSAgSnVtcERyaXZlCisJMDQxMyAgTG9ja2VkIEogRGV2aWNlCisJMDQxNSAgTG9ja2VkIEsgRGV2aWNlCisJMDQxNyAgTG9ja2VkIEwgRGV2aWNlCisJMDQxOSAgTG9ja2VkIE0gRGV2aWNlCisJMDQxYiAgTG9ja2VkIE4gRGV2aWNlCisJMDQxZCAgTG9ja2VkIE8gRGV2aWNlCisJMDQxZiAgTG9ja2VkIFAgRGV2aWNlCisJMDQyMCAgSnVtcERyaXZlCisJMDQyMSAgSnVtcERyaXZlCisJMDQyMyAgTG9ja2VkIFIgRGV2aWNlCisJMDQyNSAgTG9ja2VkIFMgRGV2aWNlCisJMDQyNyAgTG9ja2VkIFQgRGV2aWNlCisJMDQyOSAgTG9ja2VkIFUgRGV2aWNlCisJMDQyYiAgTG9ja2VkIFYgRGV2aWNlCisJMDQyZCAgTG9ja2VkIFcgRGV2aWNlCisJMDQyZiAgTG9ja2VkIFggRGV2aWNlCisJMDQzMSAgTG9ja2VkIFkgRGV2aWNlCisJMDQzMyAgTG9ja2VkIFogRGV2aWNlCisJNGQwMiAgTVAzIFBsYXllcgorCTRkMTIgIE1QMyBQbGF5ZXIKKwk0ZDMwICBNUDMgUGxheWVyCisJYTMwMCAgSnVtcERyaXZlMgorCWE0MDAgIEp1bXBEcml2ZSB0cmFkZTsgUHJvIDQwLTUwMQorCWE0MTAgIEp1bXBEcml2ZSAxMjhNQi8yNTZNQgorCWE0MTEgIEp1bXBEcml2ZSBUcmF2ZWxlcgorCWE0MjAgIEp1bXBEcml2ZSBQcm8KKwlhNDIxICBKdW1wRHJpdmUgUHJvIElJCisJYTQyMiAgSnVtcERyaXZlIE1pY3JvIFBybworCWE0MzAgIEp1bXBEcml2ZSBTZWN1cmUKKwlhNDMxICBKdW1wRHJpdmUgU2VjdXJlIElJCisJYTQzMiAgSnVtcERyaXZlIENsYXNzaWMKKwlhNDQwICBKdW1wRHJpdmUgTGlnaHRuaW5nCisJYTQ1MCAgSnVtcERyaXZlIFRvdWNoR3VhcmQKKwlhNDYwICBKRCBNZXJjdXJ5CisJYTUwMSAgSnVtcERyaXZlIENsYXNzaWMKKwlhNTEwICBKdW1wRHJpdmUgU3BvcnQKKwlhNTMwICBKdW1wRHJpdmUgRXhwcmVzc2lvbgorCWE1MzEgIEp1bXBEcml2ZSBTZWN1cmUgSUkKKwlhNTYwICBKdW1wRHJpdmUgRmlyZUZseQorCWE3MDEgIEp1bXBEcml2ZSBGaXJlRmx5CisJYjAwMiAgVVNCIENGIFJlYWRlcgorCWIwMTggIE11bHRpLUNhcmQgUmVhZGVyCiswNWRkICBEZWx0YSBFbGVjdHJvbmljcywgSW5jLgorCWZmMzEgIEFXVS0xMjAKKwlmZjMyICBGcmllbmRseU5FVCBBZXJvTEFOIEFMMjAxMQorCWZmMzUgIFBDVyAxMDAgLSBXaXJlbGVzcyA4MDIuMTFiIEFkYXB0ZXIKKwlmZjkxICAyV2lyZSBQQyBQb3J0IFBob25lbGluZSAxME1icHMgQWRhcHRlcgorMDVkZiAgU2lsaWNvbiBWaXNpb24sIEluYy4KKzA1ZTAgIFN5bWJvbCBUZWNobm9sb2dpZXMKKwkwNzAwICBCYXIgQ29kZSBTY2FubmVyIChDUzE1MDQpCisJMDgwMCAgU3BlY3RydW0yNCBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTEyMDAgIERTNjYwOCBCYXIgQ29kZSBTY2FubmVyCisJMTkwMCAgU05BUEkgSW1hZ2luZyBEZXZpY2UKKwkyMDAwICBNQzMwOTAgUnVnZ2VkIE1vYmlsZSBDb21wdXRlcgorCTIwMGQgIE1DNzAgUnVnZ2VkIE1vYmlsZSBDb21wdXRlcgorMDVlMSAgU3ludGVrIFNlbWljb25kdWN0b3IgQ28uLCBMdGQKKwkwNTAwICBEQy0xMTJYIFdlYmNhbQorCTA1MDEgIERDLTExMjUgV2ViY2FtCisJMDg5MCAgU1RLMDExIENhbWVyYQorCTA4OTIgIFNUSzAxMyBDYW1lcmEKKwkwODk1ICBTVEswMTYgQ2FtZXJhCisJMDg5NiAgU1RLMDE3IENhbWVyYQorMDVlMiAgRWxlY1Zpc2lvbiwgSW5jLgorMDVlMyAgR2VuZXN5cyBMb2dpYywgSW5jLgorCTAwMGEgIEtleWJvYXJkIHdpdGggUFMvMiBQb3J0CisJMDAwYiAgTW91c2UKKwkwMTAwICBOaW50ZW5kbyBHYW1lIEJveSBBZHZhbmNlIFNQCisJMDEyMCAgUGFjaWZpYyBJbWFnZSBFbGVjdHJvbmljcyBQcmltZUZpbG0gMTgwMHUgc2xpZGUvbmVnYXRpdmUgc2Nhbm5lcgorCTAxMzEgIENGL1NNIFJlYWRlci9Xcml0ZXIKKwkwMTQyICBNdWx0aXBsZSBTbGlkZXMgU2Nhbm5lci0zNjAwCisJMDE0MyAgTXVsdGlwbGUgRnJhbWVzIEZpbG0gU2Nhbm5lci0zNnNlcmllcworCTAxODAgIFBsdXN0ZWsgU2Nhbm5lcgorCTAxODIgIFdpemUgTWVkaWEgMTAwMAorCTAxODkgIFNjYW5KZXQgNDYwMCBzZXJpZXMKKwkwMThhICBYZXJveCA2NDAwCisJMDMwMCAgR0xVU0I5OFBUIFBhcmFsbGVsIFBvcnQKKwkwMzAxICBVU0IyTFBUIENhYmxlIFJlbGVhc2UyCisJMDQwNiAgSHViCisJMDUwMSAgR0w2MjBVU0IgSG9zdC1Ib3N0IGludGVyZmFjZQorCTA1MDIgIEdMNjIwVVNCLUEgR2VuZUxpbmsgVVNCLVVTQiBCcmlkZ2UKKwkwNTA0ICBISUQgS2V5Ym9hcmQgRmlsdGVyCisJMDYwNCAgVVNCIDEuMSBIdWIKKwkwNjA1ICBVU0IgMi4wIEh1YiBbZWRuZXRdCisJMDYwNiAgVVNCIDIuMCBIdWIgLyBELUxpbmsgRFVCLUg0IFVTQiAyLjAgSHViCisJMDYwOCAgVVNCLTIuMCA0LVBvcnQgSFVCCisJMDY2MCAgVVNCIDIuMCBIdWIKKwkwNzAwICBTSUlHIFVTMjI1NiBDb21wYWN0Rmxhc2ggQ2FyZCBSZWFkZXIKKwkwNzAxICBVU0IgMi4wIElERSBBZGFwdGVyCisJMDcwMiAgVVNCIDIuMCBJREUgQWRhcHRlcgorCTA3MDMgIENhcmQgUmVhZGVyCisJMDcwNCAgQ2FyZCBSZWFkZXIKKwkwNzA1ICBDYXJkIFJlYWRlcgorCTA3MDYgIENhcmQgUmVhZGVyCisJMDcwNyAgQ2FyZCBSZWFkZXIKKwkwNzA4ICBDYXJkIFJlYWRlcgorCTA3MDkgIENhcmQgUmVhZGVyCisJMDcwYSAgUGVuIEZsYXNoCisJMDcwYiAgRE1IUzFCIFJldiAzIERGVSBBZGFwdGVyCisJMDcwZSAgWC1QUk8gQ1IyMHhBIFVTQiAyLjAgSW50ZXJuYWwgQ2FyZCBSZWFkZXIKKwkwNzBmICBQZW4gRmxhc2gKKwkwNzEwICBVU0IgMi4wIDMzLWluLTEgQ2FyZCBSZWFkZXIKKwkwNzExICBDYXJkIFJlYWRlcgorCTA3MTIgIERlbGtpbiBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDcxNSAgVVNCIDIuMCBtaWNyb1NEIFJlYWRlcgorCTA3NjAgIFVTQiAyLjAgQ2FyZCBSZWFkZXIvV3JpdGVyCisJMDc2MSAgR2VuZXN5cyBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDc4MCAgVVNCRlMgREZVIEFkYXB0ZXIKKwkwN2EwICBQZW4gRmxhc2gKKwkwOTI3ICBDYXJkIFJlYWRlcgorCTEyMDUgIEFmaWxpYXMgT3B0aWNhbCBNb3VzZSBIMzAwMworCWE3MDAgIFBlbiBGbGFzaAorCWYxMDIgIFZYNzAxMiBUViBCb3gKKwlmMTAzICBWWDcwMTIgVFYgQm94CisJZjEwNCAgVlg3MDEyIFRWIEJveAorCWZkMjEgIDNNIFRMMjAgVGVtcGVyYXR1cmUgTG9nZ2VyCisJZmUwMCAgUmF6ZXIgTW91c2UKKzA1ZTQgIFJlZCBXaW5nIENvcnAuCiswNWU1ICBGdWppIEVsZWN0cmljIENvLiwgTHRkCiswNWU2ICBLZWl0aGxleSBJbnN0cnVtZW50cworMDVlOCAgSUNDLCBJbmMuCiswNWU5ICBLYXdhc2FraSBMU0kKKwkwMDA4ICBLTDVLVVNCMTAxQiBFdGhlcm5ldCBba2xzaV0KKwkwMDA5ICBTb255IDEwTWJwcyBFdGhlcm5ldCBbcGVnYXN1c10KKwkwMDBjICBVU0ItdG8tUlMtMjMyCisJMDAwZCAgVVNCLXRvLVJTLTIzMgorCTAwMTQgIFJTLTIzMiBKMTA0CisJMDA0MCAgRXRoZXJuZXQgQWRhcHRlcgorCTIwMDggIEV0aGVybmV0IEFkYXB0ZXIKKzA1ZWIgIEZGQywgTHRkCiswNWVjICBDT00yMSwgSW5jLgorMDVlZSAgQ3l0ZWNoaW5mbyBJbmMuCiswNWVmICBBVkIsIEluYy4gW2Fua28/XQorCTAyMGEgIFRvcCBTaG90IFBlZ2FzdXMgSm95c3RpY2sKKwk4ODg0ICBNYWcgVHVyYm8gRm9yY2UgV2hlZWwKKwk4ODg4ICBUb3AgU2hvdCBGb3JjZSBGZWVkYmFjayBSYWNpbmcgV2hlZWwKKzA1ZjAgIENhbm9wdXMgQ28uLCBMdGQKKwkwMTAxICBEQS1Qb3J0IERBQworMDVmMSAgQ29tcGFzcyBDb21tdW5pY2F0aW9ucworMDVmMiAgRGV4aW4gQ29ycC4sIEx0ZAorCTAwMTAgIEFRIE1vdXNlCiswNWYzICBQSSBFbmdpbmVlcmluZywgSW5jLgorCTAwMDcgIEtpbmVzaXMgQWR2YW50YWdlIFBSTyBNUEMvVVNCIEtleWJvYXJkCisJMDA4MSAgS2luZXNpcyBJbnRlZ3JhdGVkIEh1YgorCTAyMGIgIFBTMiBBZGFwdGVyCisJMDIzMiAgWC1LZXlzIFN3aXRjaCBJbnRlcmZhY2UsIFByb2dyYW1taW5nIE1vZGUKKwkwMjYxICBYLUtleXMgU3dpdGNoIEludGVyZmFjZSwgU1BMQVQgTW9kZQorCTAyNjQgIFgtS2V5cyBTd2l0Y2ggSW50ZXJmYWNlLCBDb21wb3NpdGUgTW9kZQorMDVmNSAgVW5peHRhciBUZWNobm9sb2d5LCBJbmMuCiswNWY2ICBBT0MgSW50ZXJuYXRpb25hbAorMDVmNyAgUkZDIERpc3RyaWJ1dGlvbihzKSBQVEUsIEx0ZAorMDVmOSAgUFNDIFNjYW5uaW5nLCBJbmMuCiswNWZhICBTaWVtZW5zIFRlbGVjb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBMdGQKKwkzMzAxICBLZXlib2FyZCB3aXRoIFBTLzIgTW91c2UgUG9ydAorCTMzMDIgIEtleWJvYXJkCisJMzMwMyAgS2V5Ym9hcmQgd2l0aCBQUy8yIE1vdXNlIFBvcnQKKzA1ZmMgIEhhcm1hbiBNdWx0aW1lZGlhCisJNzg0OSAgSGFybWFuL0thcmRvbiBTb3VuZFN0aWNrcworMDVmZCAgSW50ZXJBY3QsIEluYy4KKwkwMjM5ICBTVi0yMzkgSGFtbWVySGVhZCBEaWdpdGFsCisJMDI1MSAgUmFpZGVyIFBybworCTAyNTMgIFByb1BhZCA4IERpZ2l0YWwKKwkwMjg2ICBTVi0yODYgQ3ljbG9uZSBEaWdpdGFsCisJMjYyYSAgM2RmeCBIYW1tZXJIZWFkIEZYCisJMjYyZiAgSGFtbWVySGVhZCBGeAorCWRhYWUgIEdhbWUgU2hhcmsKKzA1ZmUgIENoaWMgVGVjaG5vbG9neSBDb3JwLgorCTAwMDEgIE1vdXNlCisJMDAwMyAgQ3lwcmVzcyBVU0IgTW91c2UKKwkwMDA1ICBWaWV3bWFzdGVyIDREIEJyb3dzZXIgTW91c2UKKwkwMDA3ICBUd2luaGVhZCBNb3VzZQorCTAwMDkgIElubGFuZCBQcm8gNDUwMC81MDAwIE1vdXNlCisJMDAxMSAgQnJvd3NlciBNb3VzZQorCTEwMTAgIE9wdGljYWwgV2lyZWxlc3MKKzA1ZmYgIExlQ3JveSBDb3JwLgorMDYwMCAgQmFyY28gRGlzcGxheSBTeXN0ZW1zCiswNjAxICBKYXp6IEhpcHN0ZXIgQ29ycC4KKwkwMDAzICBJbnRlcm5ldCBTZWN1cml0eSBDby4sIEx0ZC4gU2VjdXJlS2V5CiswNjAyICBWaXN0YSBJbWFnaW5nLCBJbmMuCisJMTAwMSAgVmlDYW0gV2ViY2FtCiswNjAzICBOb3ZhdGVrIE1pY3JvZWxlY3Ryb25pY3MgQ29ycC4KKwkwMGYxICBLZXlib2FyZAorCTY4NzEgIE1vdXNlCiswNjA0ICBKZWFuIENvLiwgTHRkCiswNjA1ICBBbmNob3IgQyZDIENvLiwgTHRkCiswNjA2ICBSb3lhbCBJbmZvcm1hdGlvbiBFbGVjdHJvbmljcyBDby4sIEx0ZAorMDYwNyAgQnJpZGdlIEluZm9ybWF0aW9uIENvLiwgTHRkCiswNjA4ICBHZW5yYWQgQWRzCiswNjA5ICBTTUsgTWFudWZhY3R1cmluZywgSW5jLgorCTAzMWQgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisJMDMyMiAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKwlmZjEyICBTTUsgQmx1ZXRvb3RoIERldmljZQorMDYwYSAgV29ydGhpbmd0b24gRGF0YSBTb2x1dGlvbnMsIEluYy4KKzA2MGIgIFNvbGlkIFllYXIKKwkwMDAxICBNYWNBbGx5IEtleWJvYXJkCisJMTAwNiAgSmFwYW5lc2UgS2V5Ym9hcmQgLSAyNjBVCisJMjEwMSAgS2V5Ym9hcmQKKwk1ODExICBBQ0stNTcxVSBXaXJlbGVzcyBLZXlib2FyZAorCTU5MDMgIEphcGFuZXNlIEtleWJvYXJkIC0gNTk1VQorCTYwMDEgIFNvbGlkVGVrIFVTQiAycCBIVUIKKwk2MDAyICBTb2xpZFRlayBVU0IgS2V5Ym9hcmQKKwk2MDAzICBKYXBhbmVzZSBLZXlib2FyZCAtIDYwMEhNCisJYTAwMSAgTWF4d2VsbCBDb21wYWN0IFBjIFBNMworMDYwYyAgRUVIIERhdGFsaW5rIEdtYkgKKzA2MGQgIEF1Y3RvciBDb3JwLgorMDYwZSAgVHJhbnNtb25kZSBUZWNobm9sb2dpZXMsIEluYy4KKzA2MGYgIEpvaW5zb29uIEVsZWN0cm9uaWNzIE1mZy4gQ28uLCBMdGQKKzA2MTAgIENvc3RhciBFbGVjdHJvbmljcywgSW5jLgorMDYxMSAgVG90b2t1IEVsZWN0cmljIENvLiwgTHRkCiswNjEzICBUcmFuc0FjdCBUZWNobm9sb2dpZXMsIEluYy4KKzA2MTQgIEJpby1SYWQgTGFib3JhdG9yaWVzCiswNjE1ICBRdWFiYmluIFdpcmUgJiBDYWJsZSBDby4sIEluYy4KKzA2MTYgIEZ1dHVyZSBUZWNobm8gRGVzaWducyBQVlQsIEx0ZAorMDYxNyAgU3dpc3MgRmVkZXJhbCBJbnNpdHV0ZSBvZiBUZWNobm9sb2d5CiswNjE4ICBNYWNBbGx5CisJMDEwMSAgTW91c2UKKzA2MTkgIFNlaWtvIEluc3RydW1lbnRzLCBJbmMuCisJMDEwMSAgU0xQLTEwMCBEcml2ZXIKKwkwMTAyICBTTFAtMjAwIERyaXZlcgorCTAxMDMgIFNMUC0xMDBOIERyaXZlcgorCTAxMDQgIFNMUC0yMDBOIERyaXZlcgorCTAxMDUgIFNMUC0yNDAgRHJpdmVyCiswNjFhICBWZXJpZGljb20gSW50ZXJuYXRpb25hbCwgSW5jLgorCTAxMTAgIDV0aFNlbnNlIEZpbmdlcnByaW50IFNlbnNvcgorCTAyMDAgIEZQUzIwMCBGaW5nZXJwcmludCBTZW5zb3IKKwk4MjAwICBWS0ktQSBGaW5nZXJwcmludCBTZW5zb3IvRmxhc2ggU3RvcmFnZSAoZHVtYikKKwk5MjAwICBWS0ktQiBGaW5nZXJwcmludCBTZW5zb3IvRmxhc2ggU3RvcmFnZSAoc21hcnQpCiswNjFiICBQcm9tcHR1cyBDb21tdW5pY2F0aW9ucywgSW5jLgorMDYxYyAgQWN0IExhYnMsIEx0ZAorMDYxZCAgUXVhdGVjaCwgSW5jLgorMDYxZSAgTmlzc2VpIEVsZWN0cmljIENvLgorCTAwMDEgIG5pc3NlaSAxMjhERS1VU0IgLQorCTAwMTAgIG5pc3NlaSAxMjhERS1QTkEgLQorMDYyMCAgQWxhcmlzLCBJbmMuCisJMDAwNCAgUXVpY2tWaWRlbyB3ZWVDYW0KKwkwMDA3ICBRdWlja1ZpZGVvIHdlZUNhbQorCTAwMGEgIFF1aWNrVmlkZW8gd2VlQ2FtCisJMDAwYiAgUXVpY2tWaWRlbyB3ZWVDYW0KKzA2MjEgIE9EVS1TdGVja3ZlcmJpbmR1bmdzc3lzdGVtZSBHbWJIICYgQ28uIEtHCiswNjIyICBJb3RlY2gsIEluYy4KKzA2MjMgIExpdHRlbGZ1c2UsIEluYy4KKzA2MjQgIEF2b2NlbnQgQ29ycC4KKzA2MjUgIFRpTWVkaWEgVGVjaG5vbG9neSBDby4sIEx0ZAorMDYyNiAgTmlwcG9uIFN5c3RlbXMgRGV2ZWxvcG1lbnQgQ28uLCBMdGQKKzA2MjcgIEFkb21heCBUZWNobm9sb2d5IENvLiwgTHRkCiswNjI4ICBUYXNraW5nIFNvZnR3YXJlLCBJbmMuCiswNjI5ICBaaWRhIFRlY2hub2xvZ2llcywgTHRkCiswNjJhICBDcmVhdGl2ZSBMYWJzCisJMDAwMCAgT3B0aWNhbCBtb3VzZQorCTAwMDEgIE5vdGVib29rIE9wdGljYWwgTW91c2UKKwkwMjAxICBEZWZlbmRlciBPZmZpY2UgS2V5Ym9hcmQgKEs3MzEwKSBTIFpvZGlhayBLTS05MDEwCisJOTAwMyAgVm9JUCBDb25mZXJlbmNlIEh1YiAoQTE2R0gpCisJOTAwNCAgVVNSOTYwMiBVU0IgSW50ZXJuZXQgTWluaSBQaG9uZQorMDYyYiAgR3JlYXRsaW5rIEVsZWN0cm9uaWNzIFRhaXdhbiwgTHRkCiswNjJjICBJbnN0aXR1dGUgZm9yIEluZm9ybWF0aW9uIEluZHVzdHJ5CiswNjJkICBUYWl3YW4gVGFpLUhhbyBFbnRlcnByaXNlcyBDby4sIEx0ZAorMDYyZSAgTWFpbnN1cGVyIEVudGVycHJpc2VzIENvLiwgTHRkCiswNjJmICBTaW4gU2hlbmcgVGVybWluYWwgJiBNYWNoaW5lLCBJbmMuCiswNjMxICBKVUpPIEVsZWN0cm9uaWNzIENvcnAuCiswNjMzICBDeXJpeCBDb3JwLgorMDYzNCAgTWljcm9uIFRlY2hub2xvZ3ksIEluYy4KKzA2MzUgIE1ldGhvZGUgRWxlY3Ryb25pY3MsIEluYy4KKzA2MzYgIFNpZXJyYSBJbWFnaW5nLCBJbmMuCisJMDAwMyAgVml2aWNhbSAzNVh4CiswNjM4ICBBdmlzaW9uLCBJbmMuCisJMDI2OCAgaVZpbmEgMTIwMFUgU2Nhbm5lcgorCTAyNmEgIE1pbm9sdGEgRGltYWdlIFNjYW4gRHVhbCBJSQorCTBhMTAgIGlWaW5hIEZCMTYwMC9VTUFYIEFzdHJhIDQ1MDAKKwkwYTEzICBBVjYwMFUKKwkwYTE2ICBTQy0yMTUKKwkwYTMwICBVTUFYIEFzdHJhIDY3MDAgU2Nhbm5lcgorCTBhNDEgIEF2aXNpb24gQU0zMDAwL01GMzAwMCBTZXJpZXMKKwkwZjAxICBmaS00MDEwQ1UKKwk0MDA0ICBNaW5vbHRhIERpbWFnZSBTY2FuIEVsaXRlIElJCiswNjM5ICBDaHJvbnRlbCwgSW5jLgorMDYzYSAgVGVjaHdpbiBDb3JwLgorMDYzYiAgVGF1Z2FncmVpbmluZyBIRgorMDYzYyAgWWFtYWljaGkgRWxlY3Ryb25pY3MgQ28uLCBMdGQgKFNha3VyYSkKKzA2M2QgIEZvbmcgS2FpIEluZHVzdHJpYWwgQ28uLCBMdGQKKzA2M2UgIFJlYWxNZWRpYSBUZWNobm9sb2d5LCBJbmMuCiswNjNmICBOZXcgVGVjaG5vbG9neSBDYWJsZSwgTHRkCiswNjQwICBIaXRleCBEZXZlbG9wbWVudCBUb29scworCTAwMjYgIExQQy1TdGljaworMDY0MSAgV29vZHMgSW5kdXN0cmllcywgSW5jLgorMDY0MiAgVklBIE1lZGljYWwgQ29ycC4KKzA2NDQgIFRFQUMgQ29ycC4KKwkwMDAwICBGbG9wcHkKKwkxMDAwICBDRC1ST00gRHJpdmUKKwk4MDBkICBUQVNDQU0gUG9ydGFzdHVkaW8gRFAtMDFGWAorCWQwMDEgIENELVIvUlcgVW5pdAorCWQwMDIgIENELVIvUlcgVW5pdAorCWQwMTAgIENELVJXL0RWRCBVbml0CiswNjQ1ICBXaG8/IFZpc2lvbiBTeXN0ZW1zLCBJbmMuCiswNjQ2ICBVTUFYCiswNjQ3ICBBY3RvbiBSZXNlYXJjaCBDb3JwLgorCTAxMDAgIEFSQyBTcGVjdHJhUHJvIFVWL1ZJUy9JUiBNb25vY2hyb21hdG9yL1NwZWN0cm9ncmFwaAorCTAxMDEgIEFSQyBBTS1WTSBNb25vIEFpcnBhdGgvVmFjdXVtIE1vbm9jaHJvbWF0b3IvU3BlY3Ryb2dyYXBoCisJMDEwMiAgQVJDIEluc3BlY3RydW0gTW9ubworCTAxMDMgIEFSQyBGaWx0ZXJ3aGVlbAorCTAzZTkgIEluc3BlY3RydW0gMTI4eDEwMjQgRiBWSVMgU3BlY3Ryb2dyYXBoCisJMDNlYSAgSW5zcGVjdHJ1bSAyNTZ4MTAyNCBGIFZJUyBTcGVjdHJvZ3JhcGgKKwkwM2ViICBJbnNwZWN0cnVtIDEyOHgxMDI0IEIgVklTIFNwZWN0cm9ncmFwaAorCTAzZWMgIEluc3BlY3RydW0gMjU2eDEwMjQgQiBWSVMgU3BlY3Ryb2dyYXBoCiswNjQ4ICBJbnNpZGUgT3V0IE5ldHdvcmtzCiswNjQ5ICBXZWxpIFNjaWVuY2UgQ28uLCBMdGQKKzA2NGIgIFdoaXRlIE1vdW50YWluIERTUCwgSW5jLgorMDY0YyAgSmktSGF3IEluZHVzdHJpYWwgQ28uLCBMdGQKKzA2NGQgIFRyaVRlY2ggTWljcm9lbGVjdHJvbmljcywgTHRkCiswNjRlICBTdXlpbiBDb3JwLgorCWExMDAgIEFjZXIgT3JiaUNhbQorCWExMDEgIEFjZXIgQ3J5c3RhbEV5ZSBXZWJjYW0KKwlhMTEwICBIUCBXZWJjYW0KKwlkMTAxICBBY2VyIENyeXN0YWxFeWUgV2ViY2FtCiswNjRmICBXSUJVLVN5c3RlbXMgQUcKKwkwYmQ3ICBCT1gvVQorCTBiZDggIEJPWC9SVQorMDY1MCAgRHluYXBybyBTeXN0ZW1zCiswNjUxICBMaWtvbSBUZWNobm9sb2d5IFNkbi4gQmhkLgorMDY1MiAgU3RhcmdhdGUgU29sdXRpb25zLCBJbmMuCiswNjUzICBDTkYsIEluYy4KKzA2NTQgIEdyYW5pdGUgTWljcm9zeXN0ZW1zLCBJbmMuCisJMDAwNSAgRGV2aWNlIEJheSBDb250cm9sbGVyCisJMDAwNiAgSHViCisJMDAwNyAgRGV2aWNlIEJheSBDb250cm9sbGVyCisJMDAxNiAgSHViCiswNjU1ICBTcGFjZSBTaHV0dGxlIEhpLVRlY2ggQ28uLCBMdGQKKzA2NTYgIEdsb3J5IE1hcmsgRWxlY3Ryb25pYywgTHRkCiswNjU3ICBUZWtjb24gRWxlY3Ryb25pY3MgQ29ycC4KKzA2NTggIFNpZ21hIERlc2lnbnMsIEluYy4KKzA2NTkgIEFldGhyYQorMDY1YSAgT3B0b2VsZWN0cm9uaWNzIENvLiwgTHRkCisJMDAwMSAgQmFyY29kZSBzY2FubmVyCiswNjViICBUcmFjZXdlbGwgU3lzdGVtcworMDY1ZSAgU2lsaWNvbiBHcmFwaGljcworMDY1ZiAgR29vZCBXYXkgVGVjaG5vbG9neSBDby4sIEx0ZCAmIEdXQyB0ZWNobm9sb2d5IEluYy4KKzA2NjAgIFRTQVktRSAoQlZJKSBJbnRlcm5hdGlvbmFsLCBJbmMuCiswNjYxICBIYW1hbWF0c3UgUGhvdG9uaWNzIEsuSy4KKzA2NjIgIEthbnNhaSBFbGVjdHJpYyBDby4sIEx0ZAorMDY2MyAgVG9wbWF4IEVsZWN0cm9uaWMgQ28uLCBMdGQKKwkwMTAzICBDb2JyYVBhZAorMDY2NSAgQ3lwcmVzcyBTZW1pY29uZHVjdG9yCisJNTE2MSAgVVNCIHRvIFNlcmlhbAorMDY2NyAgQWl3YSBDby4sIEx0ZAorCTBmYTEgIFRELVU4MDAwIFRhcGUgRHJpdmUKKzA2NjggIFdvcmRXYW5kCiswNjY5ICBPY2UnIFByaW50aW5nIFN5c3RlbXMgR21iSAorMDY2YSAgVG90YWwgVGVjaG5vbG9naWVzLCBMdGQKKzA2NmIgIExpbmtzeXMsIEluYy4KKwkwMTA1ICBTQ00gZVVTQiBTbWFydE1lZGlhIENhcmQgUmVhZGVyCisJMDEwYSAgTWVsY28gTUNSLVUyIFNtYXJ0TWVkaWEgLyBDb21wYWN0Rmxhc2ggUmVhZGVyCisJMjAwYyAgVVNCMTBUWAorCTIyMDIgIFVTQjEwVFggRXRoZXJuZXQgW3BlZ2FzdXNdCisJMjIwMyAgVVNCMTAwVFggRXRoZXJuZXQgW3BlZ2FzdXNdCisJMjIwNCAgVVNCMTAwVFggSG9tZVBOQSBFdGhlcm5ldCBbcGVnYXN1c10KKwkyMjA2ICBVU0IgRXRoZXJuZXQgW3BlZ2FzdXNdCisJMjIwNyAgSG9tZUxpbmsgUGhvbmVsaW5lIDEwTSBOZXR3b3JrIEFkYXB0ZXIKKwkyMjExICBXVVNCMTEgODAyLjExYiBBZGFwdGVyCisJMjIxMiAgV1VTQjExdjIuNSA4MDIuMTFiIEFkYXB0ZXIKKwkyMjEzICBXVVNCMTJ2MS4xIDgwMi4xMWIgQWRhcHRlcgorCTIyMTkgIEluc3RhbnQgV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyCisJNDAwYiAgVVNCMTBUWAorMDY2ZCAgRW50cmVnYSwgSW5jLgorMDY2ZSAgQWNlciBTZW1pY29uZHVjdG9yIEFtZXJpY2EsIEluYy4KKzA2NmYgIFNpZ21hVGVsLCBJbmMuCisJMDAzYiAgTVAzIFBsYXllcgorCTAwM2UgIE1QMyBQbGF5ZXIKKwkwMDNmICBNUDMgUGxheWVyCisJMDA0MCAgTVAzIFBsYXllcgorCTAwNDEgIE1QMyBQbGF5ZXIKKwkwMDQyICBNUDMgUGxheWVyCisJMDA0MyAgTVAzIFBsYXllcgorCTAwNGIgIEEtTWF4IFBBMTEgTVAzIFBsYXllcgorCTM0MDAgIFNUTVAzNDAwIEQtTWFqb3IgTVAzIFBsYXllcgorCTM0MTAgIFNUTVAzNDEwIEQtTWFqb3IgTVAzIFBsYXllcgorCTM1MDAgIFBsYXllciBSZWNvdmVyeSBEZXZpY2UKKwk0MjAwICBTVElyNDIwMCBJckRBIEJyaWRnZQorCTQyMTAgIFNUSXI0MjEwIElyREEgQnJpZGdlCisJODAwMCAgTVNDTiBNUDMgUGxheWVyCisJODAwMSAgU2lnbWFUZWwgTVNDTiBBdWRpbyBQbGF5ZXIKKwk4MDA0ICBNU0NOTU1DIE1QMyBQbGF5ZXIKKwk4MDA4ICBpLUJlYWQgMTAwIE1QMyBQbGF5ZXIKKwk4MDIwICBNUDMgUGxheWVyCisJODAzNCAgTVAzIFBsYXllcgorCTgwMzYgIE1QMyBQbGF5ZXIKKwk4MDM4ICBNUDMgUGxheWVyCisJODA1NiAgTVAzIFBsYXllcgorCTgwNjAgIE1QMyBQbGF5ZXIKKwk4MDY2ICBNUDMgUGxheWVyCisJODA3ZSAgTVAzIFBsYXllcgorCTgwOTIgIE1QMyBQbGF5ZXIKKwk4MDk2ICBNUDMgUGxheWVyCisJODA5YSAgTVAzIFBsYXllcgorCTgwYWEgIE1QMyBQbGF5ZXIKKwk4MGFjICBNUDMgUGxheWVyCisJODBiOCAgTVAzIFBsYXllcgorCTgwYmEgIE1QMyBQbGF5ZXIKKwk4MGJjICBNUDMgUGxheWVyCisJODBiZiAgTVAzIFBsYXllcgorCTgwYzUgIE1QMyBQbGF5ZXIKKwk4MGM4ICBNUDMgUGxheWVyCisJODBjYSAgTVAzIFBsYXllcgorCTgwY2MgIE1QMyBQbGF5ZXIKKwk4MTA0ICBNUDMgUGxheWVyCisJODEwNiAgTVAzIFBsYXllcgorCTgxMDggIE1QMyBQbGF5ZXIKKwk4MTBhICBNUDMgUGxheWVyCisJODEwYyAgTVAzIFBsYXllcgorCTgxMjIgIE1QMyBQbGF5ZXIKKwk4MTI0ICBNUDMgUGxheWVyCisJODEyNiAgTVAzIFBsYXllcgorCTgxMjggIE1QMyBQbGF5ZXIKKwk4MTM0ICBNUDMgUGxheWVyCisJODEzNiAgTVAzIFBsYXllcgorCTgxMzggIE1QMyBQbGF5ZXIKKwk4MTNhICBNUDMgUGxheWVyCisJODEzZSAgTVAzIFBsYXllcgorCTgxNDAgIE1QMyBQbGF5ZXIKKwk4MTQyICBNUDMgUGxheWVyCisJODE0NCAgTVAzIFBsYXllcgorCTgxNDYgIE1QMyBQbGF5ZXIKKwk4MTQ4ICBNUDMgUGxheWVyCisJODE0YyAgTVAzIFBsYXllcgorCTgyMDEgIE1QMyBQbGF5ZXIKKwk4MjAyICBKZW5zIG9mIFN3ZWRlbiAvIEktQkVBRCAxNTBNLzE1MEggTVAzIHBsYXllcgorCTgyMDMgIE1QMyBQbGF5ZXIKKwk4MjA0ICBNUDMgUGxheWVyCisJODIwNSAgTVAzIFBsYXllcgorCTgyMDYgIERpZ2l0YWwgTVAzIE11c2ljIFBsYXllcgorCTgyMDcgIE1QMyBQbGF5ZXIKKwk4MjA4ICBNUDMgUGxheWVyCisJODIwOSAgTVAzIFBsYXllcgorCTgyMGEgIE1QMyBQbGF5ZXIKKwk4MjBiICBNUDMgUGxheWVyCisJODIwYyAgTVAzIFBsYXllcgorCTgyMGQgIE1QMyBQbGF5ZXIKKwk4MjBlICBNUDMgUGxheWVyCisJODIwZiAgTVAzIFBsYXllcgorCTgyMTAgIE1QMyBQbGF5ZXIKKwk4MjExICBNUDMgUGxheWVyCisJODIxMiAgTVAzIFBsYXllcgorCTgyMTMgIE1QMyBQbGF5ZXIKKwk4MjE0ICBNUDMgUGxheWVyCisJODIxNSAgTVAzIFBsYXllcgorCTgyMTYgIE1QMyBQbGF5ZXIKKwk4MjE3ICBNUDMgUGxheWVyCisJODIxOCAgTVAzIFBsYXllcgorCTgyMTkgIE1QMyBQbGF5ZXIKKwk4MjFhICBNUDMgUGxheWVyCisJODIxYiAgTVAzIFBsYXllcgorCTgyMWMgIE1QMyBQbGF5ZXIKKwk4MjFkICBNUDMgUGxheWVyCisJODIxZSAgTVAzIFBsYXllcgorCTgyMWYgIE1QMyBQbGF5ZXIKKwk4MjIwICBNUDMgUGxheWVyCisJODIyMSAgTVAzIFBsYXllcgorCTgyMjIgIE1QMyBQbGF5ZXIKKwk4MjIzICBNUDMgUGxheWVyCisJODIyNCAgTVAzIFBsYXllcgorCTgyMjUgIE1QMyBQbGF5ZXIKKwk4MjI2ICBNUDMgUGxheWVyCisJODIyNyAgTVAzIFBsYXllcgorCTgyMjggIE1QMyBQbGF5ZXIKKwk4MjI5ICBNUDMgUGxheWVyCisJODIzMCAgTVAzIFBsYXllcgorCTkwMDAgIE1QMyBQbGF5ZXIKKwk5MDAxICBNUDMgUGxheWVyCisJOTAwMiAgTVAzIFBsYXllcgorMDY3MiAgTGFidGVjLCBJbmMuCisJMTA0MSAgTENTMTA0MCBTcGVha2VyIFN5c3RlbQorCTUwMDAgIFNwYWNlQmFsbCA0MDAwIEZMWAorMDY3MyAgSENMCisJNTAwMCAgS2V5Ym9hcmQKKzA2NzQgIEtleSBNb3VzZSBFbGVjdHJvbmljIEVudGVycHJpc2UgQ28uLCBMdGQKKzA2NzUgIERyYXl0ZWNoCisJMDExMCAgVmlnb3IgMTI4IElTRE4gVEEKKwkwNTUwICBWaWdvcjU1MAorCTE2ODggIG1pbmlWaWdvciAxMjggSVNETiBUQQorMDY3NiAgVGVsZXMgQUcKKzA2NzcgIEFpd2EgQ28uLCBMdGQKKwkwN2Q1ICBUTS1FRDEyODUoVVNCKQorCTBmYTEgIFRELVU4MDAwIFRhcGUgRHJpdmUKKzA2NzggIEFDYXJkIFRlY2hub2xvZ3kgQ29ycC4KKzA2N2IgIFByb2xpZmljIFRlY2hub2xvZ3ksIEluYy4KKwkwMDAwICBQTDIzMDEgVVNCLVVTQiBCcmlkZ2UKKwkwMDAxICBQTDIzMDIgVVNCLVVTQiBCcmlkZ2UKKwkwNGJiICBQTDIzMDMgU2VyaWFsIChJT0RBVEEgVVNCLVJTQVEyKQorCTA2MTAgIE9uZXh0IEVHMjEwVSBNT0RFTQorCTA2MTEgIEFsRGlnYSBBTC0xMVUgUXVhZC1iYW5kIEdTTS9HUFJTL0VER0UgbW9kZW0KKwkyMzAzICBQTDIzMDMgU2VyaWFsIFBvcnQKKwkyMzA1ICBQTDIzMDUgUGFyYWxsZWwgUG9ydAorCTIzMDcgIFBMMjMwNyBVU0ItQVRBUEk0IEJyaWRnZQorCTIzMTMgIEZJVEVMIFBIUyBVIENhYmxlIEFkYXB0b3IKKwkyMzE1ICBGbGFzaCBEaXNrIEVtYmVkZGVkIEh1YgorCTIzMTYgIEZsYXNoIERpc2sgU2VjdXJpdHkgRGV2aWNlCisJMjMxNyAgTWFzcyBTdG9yYWdlIERldmljZQorCTI1MDEgIFBMMjUwMSBVU0ItVVNCIEJyaWRnZSAoVVNCIDIuMCkKKwkyNTA3ICBQTDI1MDcgSGktc3BlZWQgVVNCIHRvIElERSBicmlkZ2UgY29udHJvbGxlcgorCTI1MTUgIEZsYXNoIERpc2sgRW1iZWRkZWQgSHViCisJMjUxNyAgRmxhc2ggRGlzayBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMjVhMSAgUEwyNUExIEhvc3QtSG9zdCBCcmlkZ2UKKwkzNDAwICBIaS1TcGVlZCBGbGFzaCBEaXNrIHdpdGggVHJ1ZVByaW50IEFFUzM0MDAKKwkzNTAwICBIaS1TcGVlZCBGbGFzaCBEaXNrIHdpdGggVHJ1ZVByaW50IEFFUzM1MDAKKwkzNTA3ICBQTDM1MDcgQVRBUEk2IEJyaWRnZQorCWFhYTAgIFByb2xpZmljIFBoYXJvcworCWFhYTIgIFBMMjMwMyBTZXJpYWwgQWRhcHRlciAoSU9EQVRBIFVTQi1SU0FRMykKKzA2N2MgIEVmZmljaWVudCBOZXR3b3JrcywgSW5jLgorCTEwMDEgIFNpZW1lbnMgU3BlZWRTdHJlYW0gMTAwTUJwcyBFdGhlcm5ldAorCTEwMjIgIFNpZW1lbnMgU3BlZWRTdHJlYW0gMTAyMiA4MDIuMTFiIEFkYXB0ZXIKKwkxMDIzICBTcGVlZFN0cmVhbSBXaXJlbGVzcworCTQwMjAgIFNwZWVkU3RyZWFtIDQwMjAgQVRNL0FEU0wgSW5zdGFsbGVyCisJNDAzMSAgRWZmaWNpZW50IEFEU0wgTW9kZW0KKwk0MDMyICBTcGVlZFN0cmVhbSA0MDMxIEFUTS9BRFNMIEluc3RhbGxlcgorCTQwMzMgIFNwZWVkU3RyZWFtIDQwMzEgQVRNL0FEU0wgSW5zdGFsbGVyCisJNDA2MCAgQWxjYXRlbCBTcGVlZHN0cmVhbSA0MDYwIEFEU0wgTW9kZW0KKwk0MDYyICBFZmZpY2llbnQgTmV0d29ya3MgNDA2MCBMb2FkZXIKKwk1NjY3ICBFZmZpY2llbnQgTmV0d29ya3MgVmlydHVhbCBCdXMgZm9yIEFEU0wgTW9kZW0KKwljMDMxICBTcGVlZFN0cmVhbSA0MDMxIEFUTS9BRFNMIEluc3RhbGxlcgorCWMwMzIgIFNwZWVkU3RyZWFtIDQwMzEgQVRNL0FEU0wgSW5zdGFsbGVyCisJYzAzMyAgU3BlZWRTdHJlYW0gNDAzMSBBVE0vQURTTCBJbnN0YWxsZXIKKwljMDYwICBTcGVlZFN0cmVhbSA0MDYwIE1pbmlwb3J0IEFUTS9BRFNMIEFkYXB0ZXIKKwlkNjY3ICBFZmZpY2llbnQgTmV0d29ya3MgVmlydHVhbCBCdXMgZm9yIEFEU0wgTW9kZW0KKwllMjQwICBTcGVlZHN0cmVhbSBFdGhlcm5ldCBBZGFwdGVyIEUyNDAKKwllNTQwICBTcGVlZHN0cmVhbSBFdGhlcm5ldCBBZGFwdGVyIEUyNDAKKzA2N2QgIEhvaG5lciBDb3JwLgorMDY3ZSAgSW50ZXJtZWMKKwkxMDAxICBNb2JpbGUgQ29tcHV0ZXIKKzA2N2YgIFZpcmF0YSwgTHRkCisJNDU1MiAgRFNMLTIwMCBBRFNMIE1vZGVtCisJNjU0MiAgRFNMIE1vZGVtCisJNjU0OSAgRFNMIE1vZGVtCisJNzU0MSAgRFNMIE1vZGVtCiswNjgwICBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4sIENQUCBEaXYuIChBdmFuY2UgTG9naWMpCisJMDAwMiAgQXJvd2FuYSBPcHRpY2FsIFdoZWVsIE1vdXNlIE1TT1AtMDEKKzA2ODEgIFNpZW1lbnMgSW5mb3JtYXRpb24gYW5kIENvbW11bmljYXRpb24gUHJvZHVjdHMKKwkwMDAxICBEZWN0IEJhc2UKKwkwMDAyICBHaWdhc2V0IDMwNzUgUGFzc2l2ZSBJU0ROCisJMDAwNSAgSUQtTW91c2Ugd2l0aCBGaW5nZXJwcmludCBSZWFkZXIKKwkwMDEyICBJLUdhdGUgODAyLjExYiBBZGFwdGVyCisJMDAxYiAgV0xMMDEzCisJMDAxZCAgSGlwYXRoIDEwMDAKKwkwMDIyICBHaWdhc2V0IFNYMzUzIElTRE4KKwkwMDI2ICBERUNUIERhdGEgLSBHaWdhc2V0IE0zNAorCTAwMmIgIEEtMTAwLUkgQURTTCBNb2RlbQorCTAwMmUgIEFEU0wgUm91dGVyX1MtMTQxCisJMDAzNCAgR1NNIG1vZHVsZSBNQzM1L0VTNzUgVVNCIE1vZGVtCisJM2MwNiAgNTRnIFVTQiBOZXR3b3JrIEFkYXB0ZXIKKzA2ODIgIFZpY3RvciBDb21wYW55IG9mIEphcGFuLCBMdGQKKzA2ODQgIEFjdGlvbnRlYyBFbGVjdHJvbmljcywgSW5jLgorMDY4NiAgTWlub2x0YSBDby4sIEx0ZAorCTIwMDEgIFBhZ2VQcm8gNDExMFcKKwkzMDAxICBQYWdlUHJvIDQxMDAKKwkzMDA2ICBQYWdlUHJvIDEyNTBXCisJMzAyZSAgRGV2ZWxvcCBEIDE2NTBpRCBQQ0wKKwkzMDM0ICBEZXZlbG9wIEQgMjA1MGlEIFBDTAorCTQwMDEgIERpbWFnZSAyMzAwCisJNDAwMyAgRGltYWdlIDIzMzAgWm9vbSBDYW1lcmEKKwk0MDA0ICBTY2FuIEVsaXRlIElJCisJNDAwNSAgTWlub2x0YSBEaU1BR0UgRTIwMSBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNDAwNiAgRGltYWdlIDcgQ2FtZXJhCisJNDAwNyAgRGltYWdlIFMzMDQgQ2FtZXJhCisJNDAwOCAgRGltYWdlIDUgQ2FtZXJhCisJNDAwOSAgRGltYWdlIFggQ2FtZXJhCisJNDAwYSAgRGltYWdlIFM0MDQgQ2FtZXJhCisJNDAwYiAgRGltYWdlIDdpIENhbWVyYQorCTQwMGMgIERpbWFnZSBGMTAwIENhbWVyYQorCTQwMGQgIFNjYW4gRHVhbCBJSUkKKwk0MDBlICBEaW1hZ2UgNTQwMAorCTQwMGYgIERpbWFnZSA3SGkgQ2FtZXJhCisJNDAxMCAgRGltYWdlIFhpIENhbWVyYQorCTQwMTEgIERpbWFnZSBGMzAwIENhbWVyYQorCTQwMTIgIERpbWFnZSBGMjAwIENhbWVyYQorCTQwMTQgIERpbWFnZSBTNDE0IENhbWVyYQorCTQwMTUgIERpbWFnZSBYVCBDYW1lcmEgW3N0b3JhZ2VdCisJNDAxNiAgRGltYWdlIFhUIENhbWVyYSBbcmVtb3RlIG1vZGVdCisJNDAxNyAgRGltYWdlIEUyMjMKKwk0MDE4ICBEaW1hZ2UgWjEgIENhbWVyYQorCTQwMWEgIERpbWFnZSBBMSBDYW1lcmEKKwk0MDFjICBEaW1hZ2UgWDIwIENhbWVyYQorCTQwMWUgIERpbWFnZSBFMzIzIENhbWVyYQorMDY4YSAgUGVydGVjaCwgSW5jLgorMDY4YiAgUG90cmFucyBJbnRlcm5hdGlvbmFsLCBJbmMuCiswNjhlICBDSCBQcm9kdWN0cywgSW5jLgorCTAwZTIgIEhGWCBPRU0gSm95c3RpY2sKKwkwMGYxICBQcm8gVGhyb3R0bGUKKwkwMGYyICBGbGlnaHQgU2ltIFBlZGFscworCTAwZjMgIEZpZ2h0ZXJzdGljaworCTAwZmYgIEZsaWdodCBTaW0gWW9rZQorCTA1MDAgIEdhbWVTdGljayAzRAorCTA1MDEgIENIIFBybyBQZWRhbHMKKwkwNTA0ICBGLTE2IENvbWJhdCBTdGljaworMDY5MCAgR29sZGVuIEJyaWRnZSBFbGVjdGVjaCwgSW5jLgorMDY5MyAgSGFnaXdhcmEgU3lzLUNvbSBDby4sIEx0ZAorCTAwMDIgIEZsYXNoR2F0ZSBTbWFydE1lZGlhIENhcmQgUmVhZGVyCisJMDAwMyAgRmxhc2hHYXRlIENvbXBhY3RGbGFzaCBDYXJkIFJlYWRlcgorCTAwMDUgIEZsYXNoR2F0ZQorCTAwMDYgIFNNIFBDQ2FyZCBSL1cgYW5kIFNQRAorCTAwMDcgIEZsYXNoR2F0ZSBNRSAoQXV0aGVudGljYXRlZCkKKwkwMDBhICBTRENhcmQvTU1DIFJlYWRlci9Xcml0ZXIKKzA2OTQgIExlZ28gR3JvdXAKKwkwMDAxICBNaW5kc3Rvcm1zIFRvd2VyCiswNjk4ICBDaHVudGV4IChDVFgpCisJMTc4NiAgMTMwMGV4IE1vbml0b3IKKwkyMDAzICBDVFggTTczMFYgYnVpbHQgaW4gQ2FtZXJhCisJOTk5OSAgVkx4eHh4IE1vbml0b3IrSHViCiswNjk5ICBUZWt0cm9uaXgsIEluYy4KKzA2OWEgIEFza2V5IENvbXB1dGVyIENvcnAuCisJMDAwMSAgVkMwMTAgV2ViY2FtIFtwd2NdCisJMDMwMyAgQ2FibGUgTW9kZW0KKwkwMzExICBBRFNMIFJvdXRlciBSZW1vdGUgTkRJUyBEZXZpY2UKKwkwMzE4ICBSZW1vdGUgTkRJUyBEZXZpY2UKKwkwMzE5ICAyMjBWIFJlbW90ZSBORElTIERldmljZQorCTAzMjAgIElFRUUgODAyLjExYiBXaXJlbGVzcyBMQU4gQ2FyZAorCTAzMjEgIER5bmFsaW5rIFdMTDAxMyAvIENvbXBleCBXTFUxMUEgODAyLjExYiBBZGFwdGVyCisJMDQwMiAgU2NpZW50aWZpYyBBdGxhbnRhIFdlYlNUQVIgMTAwICYgMjAwIHNlcmllcyBDYWJsZSBNb2RlbQorCTA4MTEgIEJUIFZpcnR1YWwgQnVzIGZvciBIZWxpdW0KKwkwODIxICBCVCBWb3lhZ2VyIDEwMTAgODAyLjExYiBBZGFwdGVyCisJNDQwMiAgU2NpZW50aWZpYyBBdGxhbnRhIFdlYlNUQVIgMjAwMCBzZXJpZXMgQ2FibGUgTW9kZW0KKwk0NDAzICBTY2llbnRpZmljIEF0bGFudGEgV2ViU1RBUiAzMDAgc2VyaWVzIENhYmxlIE1vZGVtCisJNDUwMSAgU2NpZW50aWZpYy1BdGxhbnRhIFdlYlNUQVIgMjAwMCBzZXJpZXMgQ2FibGUgTW9kZW0KKzA2OWIgIFRob21zb24sIEluYy4KKwkwNzA0ICBEQ00yNDUgQ2FibGUgTW9kZW0KKwkwNzBjICBNUDMgUGxheWVyCisJMDcwZCAgTVAzIFBsYXllcgorCTA3MGUgIE1QMyBQbGF5ZXIKKwkwNzBmICBSQ0EgTHlyYSBSRDEwNzEgTVAzIFBsYXllcgorCTIyMjAgIFJDQSBLYXpvbyBSRDEwMDAgTVAzIFBsYXllcgorCTMwMGEgIFJDQSBMeXJhIE1QMyBQbGF5ZXIKKwkzMDEyICBNUDMgUGxheWVyCisJMzAxMyAgTVAzIFBsYXllcgorCTU1NTcgIFJDQSBDRFM2MzAwCiswNjlkICBIdWdoZXMgTmV0d29yayBTeXN0ZW1zIChITlMpCisJMDAwMSAgU2F0ZWxsaXRlIFJlY2VpdmVyIERldmljZQorCTAwMDIgIFNhdGVsbGl0ZSBEZXZpY2UKKzA2OWUgIE1hcngKKwkwMDA1ICBDcnlwdG9Cb3ggdjEuMgorMDY5ZiAgQWxsaWVkIERhdGEgVGVjaG5vbG9naWVzIEJWCisJMDAxMCAgVG9ybmFkbyBTcGVha2VycGhvbmUgRmF4TW9kZW0gNTYuMAorCTAwMTEgIFRvcm5hZG8gU3BlYWtlcnBob25lIEZheE1vZGVtIDU2LjAKKwkxMDAwICBBRFQgVnZCdXMgZm9yIENvcHBlckpldAorMDZhMiAgVG9wcm8gVGVjaG5vbG9neSwgSW5jLgorCTAwMzMgIFVTQiBNb3VzZQorMDZhMyAgU2FpdGVrIFBMQworCTAwMDYgIEN5Ym9yZyBHb2xkIEpveXN0aWNrCisJMDEwOSAgUDg4MCBQYWQKKwkwMTYwICBTVDI5MCBQcm8KKwkwMjAwICBYYm94IEFkcmVuYWxpbiBIdWIKKwkwMjQxICBYYm94IEFkcmVuYWxpbiBHYW1lcGFkCisJMDI1NSAgWDUyIEZsaWdodCBDb250cm9sbGVyCisJMDQwYiAgUDk5MCBEdWFsIEFuYWxvZyBQYWQKKwkwNDBjICBQMjkwMCBXaXJlbGVzcyBQYWQKKwkwNDIyICBTVDkwIEpveXN0aWNrCisJMDQ2MCAgU1QyOTAgUHJvIEZsaWdodCBTdGljaworCTA0NjMgIFNUMjkwCisJMDQ2NCAgQ3lib3JnIEV2bworCTA0NzEgIEN5Ym9yZyBHcmFwaGl0ZSBTdGljaworCTA1MDEgIFIxMDAgU3BvcnRzIFdoZWVsCisJMDUwMiAgU1QyMDAgU3RpY2sKKwkwNTA2ICBSMjIwIERpZ2l0YWwgV2hlZWwKKwkwNTFlICBDeWJvcmcgRGlnaXRhbCBJSSBTdGljaworCTA1MmQgIFA3NTAgR2FtZXBhZAorCTA1M2MgIFg0NSBGbGlnaHQgQ29udHJvbGxlcgorCTA1M2YgIFgzNkYgRmxpZ2h0c3RpY2sKKwkwNTZjICBQMjAwMCBUaWx0IFBhZAorCTA1NmYgIFAyMDAwIFRpbHQgUGFkCisJMDVkMiAgUEMgRGFzaCAyCisJMDc1YyAgWDUyIEZsaWdodCBDb250cm9sbGVyCisJMDgwNSAgUjQ0MCBGb3JjZSBXaGVlbAorCTEwMDMgIEdNMiBBY3Rpb24gUGFkCisJMTAwOSAgQWN0aW9uIFBhZAorCTEwMGEgIFNQNTUwIFBhZCBhbmQgSm95c3RpY2sgQ29tYm8KKwkxMDBiICBTUDU1MCBQYWQKKwkxNTA5ICBQMzAwMCBXaXJlbGVzcyBQYWQKKwkxNTg5ICBQMzAwMCBXaXJlbGVzcyBQYWQKKwkyNTQxICBYNDUgRmxpZ2h0IENvbnRyb2xsZXIKKwkzNTA5ICBQMzAwMCBSRiBHYW1lUGFkCisJMzUzZSAgQ3lib3JnIEV2byBXaXJlbGVzcworCTM1ODkgIFAzMDAwIFdpcmVsZXNzIFBhZAorCTM1YmUgIEN5Ym9yZyBFdm8KKwk1NTA5ICBQMzAwMCBXaXJlbGVzcyBQYWQKKwk4MDAwICBHYW1lcnMnIEtleWJvYXJkCisJODAxZSAgQ3lib3JnIDNEIERpZ2l0YWwgU3RpY2sgSUkKKwk4MDIxICBFY2xpcHNlIElJIEtleWJvYXJkCisJODAyZCAgUDc1MCBQYWQKKwk4MDNmICBYMzYgRmxpZ2h0IENvbnRyb2xsZXIKKwk4MDZmICBQMjAwMCBUaWx0IFBhZAorCTgwYzAgIFBybyBHYW1lciBDb21tYW5kIFVuaXQKKwlhNTAyICBHYW1pbmcgTW91c2UKKwlmZjA0ICBSNDQwIEZvcmNlIFdoZWVsCisJZmYwYyAgQ3lib3JnIEZvcmNlIFJ1bWJsZSBQYWQKKwlmZjBkICBQMjYwMCBSdW1ibGUgRm9yY2UgUGFkCisJZmYxMiAgQ3lib3JnIDNEIEZvcmNlIFN0aWNrCisJZmYxNyAgU1QgMzMwIFJ1bWJsZSBGb3JjZSBTdGljaworCWZmNTIgIEN5Ym9yZyAzRCBSdW1ibGUgRm9yY2UgSm95c3RpY2sKKwlmZmI1ICBDeWJvcmcgRXZvIEZvcmNlIEpveXN0aWNrCiswNmE0ICBYaWFtZW4gRG9vd2VsbCBFbGVjdHJvbiBDby4sIEx0ZAorMDZhNSAgRGl2aW8KKwkwMDAwICBUeXBob29uIFdlYmNhbSAxMDBrIFtudzgwMDBdCisJZDAwMSAgUHJvTGluayBEUzMzMDN1IFdlYmNhbQorCWQ4MDAgIENoaWNvbnkgVHdpbmtsZUNhbQorCWQ4MjAgIFdpemUgTWVkaWEgMTAwMAorMDZhNyAgTWljcm9TdG9yZSwgSW5jLgorMDZhOCAgVG9wYXogU3lzdGVtcywgSW5jLgorCTAwNDIgIFNpZ25hdHVyZUdlbSAxWDUgUGFkCisJMDA0MyAgU2lnbmF0dXJlR2VtIDFYNS1ISUQgUGFkCiswNmE5ICBXZXN0ZWxsCisJMDAwNSAgV2lyZVNwZWVkIER1YWwgQ29ubmVjdCBNb2RlbQorCTAwMDYgIFdpcmVTcGVlZCBEdWFsIENvbm5lY3QgTW9kZW0KKwkwMDBhICBXaXJlU3BlZWQgRHVhbCBDb25uZWN0IE1vZGVtCisJMDAwYiAgV2lyZVNwZWVkIER1YWwgQ29ubmVjdCBNb2RlbQorCTAwMGUgIDgwMi4xMWcgQWRhcHRlcgorMDZhYSAgU3lzZ3JhdGlvbiwgTHRkCiswNmFjICBGdWppdHN1IExhYm9yYXRvcmllcyBvZiBBbWVyaWNhLCBJbmMuCiswNmFkICBHcmVhdGxhbmQgRWxlY3Ryb25pY3MgVGFpd2FuLCBMdGQKKzA2YWUgIFByb2Zlc3Npb25hbCBNdWx0aW1lZGlhIFRlc3RpbmcgQ2VudHJlCiswNmFmICBIYXJ0aW5nLCBJbmMuIG9mIE5vcnRoIEFtZXJpY2EKKzA2YjggIFBpeGVsYSBDb3JwLgorMDZiOSAgQWxjYXRlbCBUZWxlY29tCisJMDEyMSAgU3BlZWRUb3VjaCAxMjFnIFdpcmVsZXNzIERvbmdsZQorCTIwMDEgIFNQRUVEIFRPVUNIIENhcmQKKwk0MDYxICBTcGVlZFRvdWNoIElTRE4gb3IgQURTTCBNb2RlbQorCWE1YTUgIER5bmFNaVRlIE1vZGVtCiswNmJhICBTbW9vdGggQ29yZCAmIENvbm5lY3RvciBDby4sIEx0ZAorMDZiYiAgRURBLCBJbmMuCiswNmJjICBPa2kgRGF0YSBDb3JwLgorCTAwMGIgIE9raXBhZ2UgMTRleCBQcmludGVyCisJMGE5MSAgQjI1MDBNRlAgKHByaW50ZXIrc2Nhbm5lcikKKwkzODAxICBCNjEwMCBMYXNlciBQcmludGVyCiswNmJkICBBR0ZBLUdldmFlcnQgTlYKKwkwMDAxICBTbmFwU2NhbiAxMjEyVQorCTAwMDIgIFNuYXBTY2FuIDEyMzZVCisJMDEwMCAgU25hcFNjYW4gVG91Y2gKKwkwMTAxICBTTkFQU0NBTiBFTElURQorCTAyMDAgIFNjYW5NYWtlciA4NzAwCisJMDJiZiAgRFVPU0NBTiBmNDAKKwkwNDAwICBDTDMwCisJMDQwMSAgTWFzcyBTdG9yYWdlCisJMDQwMyAgZVBob3RvIENMMTggQ2FtZXJhCisJMDQwNCAgZVBob3RvIENMMjAgQ2FtZXJhCisJMjA2MSAgU25hcFNjYW4gMTIxMlUgKD8pCisJMjA4ZCAgU25hcHNjYW4gZTQwCisJMjA4ZiAgU25hcFNjYW4gZTUwCisJMjA5MSAgU25hcFNjYW4gZTIwCisJMjA5MyAgU25hcFNjYW4gZTEwCisJMjA5NSAgU25hcFNjYW4gZTI1CisJMjA5NyAgU25hcFNjYW4gZTI2CisJMjBmZCAgU25hcFNjYW4gZTUyCisJMjBmZiAgU25hcFNjYW4gZTQyCiswNmJlICBBTUUgT3B0aW1lZGlhIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkwODAwICBPcHRpbWVkaWEgQ2FtZXJhCisJMTAwNSAgRGF6emxlIERQVk0hICgxMDA1KQorCWQwMDEgIFAzNVUgQ2FtZXJhIENhcHR1cmUKKzA2YmYgIExlb2NvIENvcnAuCiswNmMyICBQaGlkZ2V0cyBJbmMuIChmb3JtZXJseSBHTEFCKQorCTAwMzAgIFBoaWRnZXRSRklECisJMDAzOCAgNC1Nb3RvciBQaGlkZ2V0U2Vydm8gdjMuMAorCTAwMzkgIDEtTW90b3IgUGhpZGdldFNlcnZvIHYzLjAKKwkwMDNhICA4LU1vdG9yIFBoaWRnZXRBdmFuY2VkU2Vydm8KKwkwMDQwICBQaGlkZ2V0SW50ZXJmYWNlIEtpdCAwLTAtNAorCTAwNDQgIFBoaWRnZXRJbnRlcmZhY2UgS2l0IDAtMTYtMTYKKwkwMDQ1ICBQaGlkZ2V0SW50ZXJmYWNlIEtpdCA4LTgtOAorCTAwNDggIFBoaWRnZXRTdGVwcGVyIChVbmRlciBEZXZlbG9wbWVudCkKKwkwMDQ5ICBQaGlkZ2V0VGV4dExFRCBWZXIgMS4wCisJMDA0YSAgUGhpZGdldExFRCBWZXIgMS4wCisJMDA0YiAgUGhpZGdldEVuY29kZXIgVmVyIDEuMAorCTAwNTEgIFBoaWRnZXRJbnRlcmZhY2UgS2l0IDAtNS03IChDdXN0b20pCisJMDA1MiAgUGhpZGdldFRleHRMQ0QKKwkwMDUzICBQaGlkZ2V0SW50ZXJmYWNlS2l0IDAtOC04CisJMDA1OCAgUGhpZGdldE1vdG9yQ29udHJvbCBWZXIgMS4wCisJMDA3MCAgUGhpZGdldFRlbXBlcmF0dXJlU2Vuc29yIFZlciAxLjAKKwkwMDcxICBQaGlkZ2V0QWNjZWxlcm9tZXRlciBWZXIgMS4wCisJMDA3MiAgUGhpZGdldFdlaWdodFNlbnNvciBWZXIgMS4wCisJMDA3MyAgUGhpZGdldEh1bWlkaXR5U2Vuc29yCisJMDA3NCAgUGhpZGdldFBIU2Vuc29yCisJMDA3NSAgUGhpZGdldEd5cm9zY29wZQorMDZjNCAgQml6bGluayBJbnRlcm5hdGlvbmFsIENvcnAuCiswNmM1ICBIYWdlbnVrLCBHbWJICiswNmM2ICBJbmZvd2F2ZSBTb2Z0d2FyZSwgSW5jLgorMDZjOCAgU0lJRywgSW5jLgorMDZjOSAgVGF4YW4gKEV1cm9wZSksIEx0ZAorCTAwMDUgIE1vbml0b3IgQ29udHJvbAorCTAwMDcgIE1vbml0b3IgQ29udHJvbAorCTAwMDkgIE1vbml0b3IgQ29udHJvbAorMDZjYSAgTmV3ZXIgVGVjaG5vbG9neSwgSW5jLgorMDZjYiAgU3luYXB0aWNzLCBJbmMuCisJMDAwMSAgSElEIERldmljZQorCTAwMDIgIEhJRCBEZXZpY2UKKwkwMDAzICBISUQgRGV2aWNlCisJMDAwNSAgVG91Y2hwYWQvRlBTCisJMDAwNiAgSElEIERldmljZQorCTAwMDcgIEhJRCBEZXZpY2UKKwkwMDA4ICBISUQgRGV2aWNlCisJMDAwOSAgQ29tcG9zaXRlIFRvdWNoUGFkIGFuZCBUcmFja1BvaW50CisJMDAwZSAgSElEIERldmljZQorCTAwMTAgIENvbXBvc2l0ZSBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlCisJMDAxMyAgSHVtYW4gSW50ZXJmYWNlIERldmljZQorMDZjYyAgVGVyYXlvbiBDb21tdW5pY2F0aW9uIFN5c3RlbXMKKwkwMTAxICBDYWJsZSBNb2RlbQorCTAxMDIgIENhYmxlIE1vZGVtCisJMDEwMyAgQ2FibGUgTW9kZW0KKwkwMTA0ICBDYWJsZSBNb2RlbQorCTAzMDQgIENhYmxlIE1vZGVtCiswNmNkICBLZXlzcGFuCisJMDEwMSAgVVNBLTI4IFBEQSBbbm8gZmlybXdhcmVdCisJMDEwMiAgVVNBLTI4WCBQREEgW25vIGZpcm13YXJlXQorCTAxMDMgIFVTQS0xOSBQREEgW25vIGZpcm13YXJlXQorCTAxMDQgIFBEQSBbcHJlcmVudW1dCisJMDEwNSAgVVNBLTE4WCBQREEgW25vIGZpcm13YXJlXQorCTAxMDYgIFVTQS0xOVcgUERBIFtubyBmaXJtd2FyZV0KKwkwMTA3ICBVU0EtMTkgUERBCisJMDEwOCAgVVNBLTE5VyBQREEKKwkwMTA5ICBVU0EtNDlXIHNlcmlhbCBhZGFwdGVyIFtubyBmaXJtd2FyZV0KKwkwMTBhICBVU0EtNDlXIHNlcmlhbCBhZGFwdGVyCisJMDEwYiAgVVNBLTE5UWkgc2VyaWFsIGFkYXB0ZXIgW25vIGZpcm13YXJlXQorCTAxMGMgIFVTQS0xOVFpIHNlcmlhbCBhZGFwdGVyCisJMDEwZCAgVVNBLTE5USBzZXJpYWwgQWRhcHRlciAobm8gZmlybXdhcmUpCisJMDEwZSAgVVNBLTE5USBzZXJpYWwgQWRhcHRlcgorCTAxMGYgIFVTQS0yOCBQREEKKwkwMTEwICBVU0EtMjhYYiBQREEKKwkwMTExICBVU0EtMTggc2VyaWFsIEFkYXB0ZXIKKwkwMTEyICBVU0EtMThYIFBEQQorCTAxMTMgIFVTQS0yOFhiIFBEQSBbbm8gZmlybXdhcmVdCisJMDExNCAgVVNBLTI4WGEgUERBIFtubyBmaXJtd2FyZV0KKwkwMTE1ICBVU0EtMjhYYSBQREEKKwkwMTE2ICBVU0EtMThYQSBzZXJpYWwgQWRhcHRlciAobm8gZmlybXdhcmUpCisJMDExNyAgVVNBLTE4WEEgc2VyaWFsIEFkYXB0ZXIKKwkwMTE4ICBVU0EtMTlRVyBQREEgW25vIGZpcm13YXJlXQorCTAxMTkgIFVTQS0xOVFXIFBEQQorCTAxMWEgIFVTQS00OVdsYyBzZXJpYWwgYWRhcHRlciBbbm8gZmlybXdhcmVdCisJMDExYiAgTVBSIFNlcmlhbCBQcmVsb2FkZXIgKE1QUlFJKQorCTAxMWMgIE1QUiBTZXJpYWwgKE1QUlFJKQorCTAxMWQgIE1QUiBTZXJpYWwgUHJlbG9hZGVyIChNUFJRKQorCTAxMWUgIE1QUiBTZXJpYWwgKE1QUlEpCisJMDEyMSAgVVNBLTE5aHMgc2VyaWFsIGFkYXB0ZXIKKwkwMTJhICBVU0EtNDlXbGMgc2VyaWFsIGFkYXB0ZXIKKwkwMjAxICBEaWdpdGFsIE1lZGlhIFJlbW90ZQorCTAyMDIgIFVJQS0xMSByZW1vdGUgY29udHJvbAorMDZjZiAgU3BoZXJvblZSIEFHCisJMTAxMCAgUGFub0NhbSAxMAorCTEwMTIgIFBhbm9DYW0gMTIvMTJYCiswNmQwICBMYXBMaW5rLCBJbmMuCisJMDYyMiAgTGFwTGluayBHb2xkIFVTQi1VU0IgQnJpZGdlIFtuZXQxMDgwXQorMDZkMSAgRGFld29vIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswNmQzICBNaXRzdWJpc2hpIEVsZWN0cmljIENvcnAuCisJMDM4MCAgQ1A4MDAwRCBQb3J0CisJMDM4MSAgQ1A3NzBEIFBvcnQKKwkwMzg1ICBDUDkwMEQgUG9ydAorCTAzODcgIENQOTgwRCBQb3J0CisJMDM4YiAgQ1AzMDIwRCBQb3J0CisJMDM4YyAgQ1A5MDBEVyhJRCkgUG9ydAorCTAzOTMgIENQOTUwMEQvRFcgUG9ydAorCTAzOTQgIENQOTAwMEQvRFcgUG9ydAorCTAzYTEgIENQOTU1MEQvRFcgUG9ydAorMDZkNCAgQ2lzY28gU3lzdGVtcworMDZkNSAgVG9zaGliYQorCTQwMDAgIEphcGFuZXNlIEtleWJvYXJkCiswNmQ2ICBBYXNoaW1hIFRlY2hub2xvZ3kgQi5WLgorCTAwMmQgIFRydXN0IFBvd2VyQ0BtIDM1MEZUCisJMDAyZSAgVHJ1c3QgUG93ZXJDQG0gMzUwRlMKKwkwMDMwICBUcnVzdCA3MTAgTENEIFBPV0VSQ0BNIFpPT00gLSBNU0QKKwkwMDMxICBUcnVzdCA2MTAvNzEwIExDRCBQT1dFUkNATSBaT09NCisJMDAzYSAgVHJ1c3QgUG93ZXJDQG0gNzcwWiAobWFzcyBzdG9yYWdlIG1vZGUpCisJMDAzYiAgVHJ1c3QgUG93ZXJDQG0gNzcwWiAod2ViY2FtIG1vZGUpCisJMDAzYyAgVHJ1c3QgOTEweiBQb3dlckNAbQorCTAwM2YgIFRydXN0IDczNVMgUE9XRVJDQE0gWk9PTSwgV0RNIERTQyBCdWxrIERyaXZlcgorCTAwNTAgIFRydXN0IDczOEFWIExDRCBQViBEaWdpdGFsIENhbWVyYQorCTAwNjIgIFRSVVNUIDc4MkFWIExDRCBQLiBWLiBWaWRlbyBDYXB0dXJlCisJMDA2NiAgVFJVU1QgRGlnaXRhbCBQQ1RWIGFuZCBNb3ZpZSBFZGl0b3IKKwkwMDY3ICBUcnVzdCAzNTBGUyBQT1dFUkNATSBGTEFTSAorCTAwNmIgIFRSVVNUIEFVRElPIFZJREVPIEVESVRPUgorMDZkNyAgTmV0d29yayBDb21wdXRpbmcgRGV2aWNlcyAoTkNEKQorMDZkOCAgVGVjaG5pY2FsIE1hcmtldGluZyBSZXNlYXJjaCwgSW5jLgorMDZkYSAgUGhvZW5peHRlYyBQb3dlciBDby4sIEx0ZAorCTAwMDIgIFVQUworMDZkYiAgUGFyYWR5bmUKKzA2ZGMgIEZveGxpbmsgSW1hZ2UgVGVjaG5vbG9neSBDby4sIEx0ZAorCTAwMTIgIFNjYW4gMTIwMGMgU2Nhbm5lcgorCTAwMTQgIFByb2xpbmsgV2luc2NhbiBQcm8gMjQ0OFUKKzA2ZGUgIEhlaXNlaSBFbGVjdHJvbmljcyBDby4sIEx0ZAorMDZlMCAgTXVsdGktVGVjaCBTeXN0ZW1zLCBJbmMuCisJZjEwMSAgTVQ1NjM0WkJBLVVTQiBNdWx0aU1vZGVtVVNCIChvbGQgZmlybXdhcmUpCisJZjEwMyAgTVQ1NjM0TVUgTXVsdGlNb2JpbGVVU0IKKwlmMTA0ICBNVDU2MzRaQkEtVVNCIE11bHRpTW9kZW1VU0IgKG5ldyBmaXJtd2FyZSkKKwlmMTA3ICBNVDU2MzRaQkEtVVNCLVY5MiBNdWx0aU1vZGVtVVNCCiswNmUxICBBRFMgVGVjaG5vbG9naWVzLCBJbmMuCisJMDAwOCAgVUJTLTEwQlQgRXRoZXJuZXQgW2tsc2ldCisJMDAwOSAgVUJTLTEwQlQgRXRoZXJuZXQKKwkwODMzICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJYTE2MCAgSW5zdGFudCBWaWRlby1Uby1HbyBSRFgtMTYwIChubyBmaXJtd2FyZSkKKwlhMTYxICBJbnN0YW50IFZpZGVvLVRvLUdvIFJEWC0xNjAKKwlhMTkwICBJbnN0YW5kIFZDRCBDYXB0dXJlCisJYTE5MSAgSW5zdGFudCBWaWRlb1hwcmVzcworCWEzMzcgIE1pbmkgRGlnaXRhbFRWCisJYTcwMSAgRFZEIFhwcmVzcworCWIzMzcgIE1pbmkgRGlnaXRhbFRWCisJYjcwMSAgRFZEIFhwcmVzcyBCCiswNmU0ICBBbGNhdGVsIE1pY3JvZWxlY3Ryb25pY3MKKzA2ZTYgIFRpZ2VyIEpldCBOZXR3b3JrLCBJbmMuCisJMDIwMCAgSW50ZXJuZXQgUGhvbmUKKwkwMjAxICBJbnRlcm5ldCBQaG9uZQorCTAyMDIgIENvbXBvc2l0ZSBEZXZpY2UKKwkwMjAzICBJbnRlcm5ldCBQaG9uZQorCTAyMTAgIENvbXBvc2l0ZSBEZXZpY2UKKwkwMjExICBJbnRlcm5ldCBQaG9uZQorCTAyMTIgIEludGVybmV0IFBob25lCisJMDMxYyAgSW50ZXJuZXQgUGhvbmUKKwkwMzFkICBJbnRlcm5ldCBQaG9uZQorCTAzMWUgIEludGVybmV0IFBob25lCisJMzIwMCAgQ29tcG9zaXRlIERldmljZQorCTMyMDEgIEludGVybmV0IFBob25lCisJMzIwMiAgQ29tcG9zaXRlIERldmljZQorCTMyMDMgIENvbXBvc2l0ZSBEZXZpY2UKKwk3MjAwICBDb21wb3NpdGUgRGV2aWNlCisJNzIxMCAgQ29tcG9zaXRlIERldmljZQorCTcyNTAgIENvbXBvc2l0ZSBEZXZpY2UKKwk4MjVjICBJbnRlcm5ldCBQaG9uZQorCTgzMWMgIEludGVybmV0IFBob25lCisJODMxZCAgQ29tcG9zaXRlIERldmljZQorCTgzMWUgIENvbXBvc2l0ZSBEZXZpY2UKKwliMjAwICBDb21wb3NpdGUgRGV2aWNlCisJYjIwMSAgQ29tcG9zaXRlIERldmljZQorCWIyMDIgIEludGVybmV0IFBob25lCisJYjIxMCAgSW50ZXJuZXQgUGhvbmUKKwliMjExICBDb21wb3NpdGUgRGV2aWNlCisJYjIxMiAgQ29tcG9zaXRlIERldmljZQorCWIyNTAgIENvbXBvc2l0ZSBEZXZpY2UKKwliMjUxICBJbnRlcm5ldCBQaG9uZQorCWIyNTIgIEludGVybmV0IFBob25lCisJYzIwMCAgSW50ZXJuZXQgUGhvbmUKKwljMjAxICBJbnRlcm5ldCBQaG9uZQorCWMyMDIgIENvbXBvc2l0ZSBEZXZpY2UKKwljMjAzICBJbnRlcm5ldCBQaG9uZQorCWMyMTAgIFBlcnNvbmFsIFBob25lR2F0ZXdheQorCWMyMTEgIFBlcnNvbmFsIFBob25lR2F0ZXdheQorCWMyMTIgIFBlcnNvbmFsIFBob25lR2F0ZXdheQorCWMyMTMgIFBQRyBEZXZpY2UKKwljMjVjICBDb21wb3NpdGUgRGV2aWNlCisJYzI5MCAgUFBHIERldmljZQorCWMyOTEgIFBQRyBEZXZpY2UKKwljMjkyICBQUEcgRGV2aWNlCisJYzI5MyAgUGVyc29uYWwgUGhvbmVHYXRld2F5CisJYzMxYyAgQ29tcG9zaXRlIERldmljZQorCWMzOWMgIFBlcnNvbmFsIFBob25lR2F0ZXdheQorCWMzOWQgIFBQRyBEZXZpY2UKKwljMzllICBQUEcgRGV2aWNlCisJYzM5ZiAgUFBHIERldmljZQorCWM3MDAgIEludGVybmV0IFBob25lCisJYzcwMSAgSW50ZXJuZXQgUGhvbmUKKwljNzAyICBDb21wb3NpdGUgRGV2aWNlCisJYzcwMyAgSW50ZXJuZXQgUGhvbmUKKwljNzEwICBWb0lQIENvbWJvIERldmljZQorCWM3MTEgIFZvSVAgQ29tYm8KKwljNzEyICBWb0lQIENvbWJvIERldmljZQorCWM3MTMgIFZvSVAgQ29tYm8gRGV2aWNlCisJY2YwMCAgQ29tcG9zaXRlIERldmljZQorCWNmMDEgIEludGVybmV0IFBob25lCisJY2YwMiAgSW50ZXJuZXQgUGhvbmUKKwljZjAzICBDb21wb3NpdGUgRGV2aWNlCisJZDIxMCAgUGVyc29uYWwgUGhvbmVHYXRld2F5CisJZDIxMSAgUFBHIERldmljZQorCWQyMTIgIFBQRyBEZXZpY2UKKwlkMjEzICBQZXJzb25hbCBQaG9uZUdhdGV3YXkKKwlkNzAwICBDb21wb3NpdGUgRGV2aWNlCisJZDcwMSAgQ29tcG9zaXRlIERldmljZQorCWQ3MDIgIEludGVybmV0IFBob25lCisJZDcwMyAgQ29tcG9zaXRlIERldmljZQorCWQ3MTAgIFZvSVAgQ29tYm8KKwlkNzExICBWb0lQIENvbWJvIERldmljZQorCWQ3MTIgIFZvSVAgQ29tYm8KKwlkNzEzICBWb0lQIENvbWJvCisJZGYwMCAgQ29tcG9zaXRlIERldmljZQorCWRmMDEgIENvbXBvc2l0ZSBEZXZpY2UKKwlkZjAyICBJbnRlcm5ldCBQaG9uZQorCWRmMDMgIEludGVybmV0IFBob25lCisJZjIwMCAgSW50ZXJuZXQgUGhvbmUKKwlmMjAxICBJbnRlcm5ldCBQaG9uZQorCWYyMDIgIENvbXBvc2l0ZSBEZXZpY2UKKwlmMjAzICBDb21wb3NpdGUgRGV2aWNlCisJZjIxMCAgSW50ZXJuZXQgUGhvbmUKKwlmMjUwICBDb21wb3NpdGUgRGV2aWNlCisJZjI1MiAgSW50ZXJuZXQgUGhvbmUKKwlmMzEwICBJbnRlcm5ldCBQaG9uZQorCWYzNTAgIENvbXBvc2l0ZSBEZXZpY2UKKzA2ZWEgIFNpcml1cyBUZWNobm9sb2dpZXMKKwkwMDAxICBOZXRDb20gUm9hZHN0ZXIgSUkgNTZrCisJMDAwMiAgUm9hZHN0ZXIgSUkgNTZrCiswNmViICBQQyBFeHBlcnQgVGVjaC4gQ28uLCBMdGQKKzA2ZWYgIEkuQS5DLiBHZW9tZXRyaXNjaGUgSW5nZW5pZXVycyBCLlYuCiswNmYwICBULk4uQyBJbmR1c3RyaWFsIENvLiwgTHRkCisJZGUwMSAgRHVhbENhbSBWaWRlbyBDYW1lcmEKKwlkZTAyICBEdWFsQ2FtIFN0aWxsIENhbWVyYQorMDZmMSAgT3Bjb2RlIFN5c3RlbXMsIEluYy4KKwlhMDExICBTb25pY1BvcnQKKwlhMDIxICBTb25pY1BvcnQgT3B0aWNhbAorMDZmMiAgRW1pbmUgVGVjaG5vbG9neSBDby4KKwkwMDExICBLVk0gU3dpdGNoIEtleWJvYXJkCiswNmY2ICBXaW50cmVuZCBUZWNobm9sb2d5IENvLiwgTHRkCiswNmY3ICBXYWlsbHkgVGVjaG5vbG9neSBMdGQKKwkwMDAzICBVU0ItPkRpbiA0IEFkYXB0b3IKKzA2ZjggIEd1aWxsZW1vdCBDb3JwLgorCTMwMDQgIEhlcmN1bGVzIENsYXNzaWMgU2lsdmVyCisJMzAwNSAgSGVyY3VsZXMgRHVhbHBpeCBFeGNoYW5nZQorCTMwMDcgIEhlcmN1bGVzIER1YWxwaXggQ2hhdCBhbmQgU2hvdworCWEzMDAgIER1YWwgQW5hbG9nIExlYWRlciBHYW1lUGFkCisJYjAwMCAgSGVyY3VsZXMgREogQ29uc29sZQorCWMwMDAgIEhlcmN1bGVzIE11c2UgUG9ja2V0CisJZDAwMiAgSGVyY3VsZXMgREogQ29uc29sZQorCWUwMDAgIEhXR1VTQjItNTQgV0xBTgorCWUwMTAgIEhXR1VTQjItNTQtTEIKKwllMDIwICBIV0dVU0IyLTU0VjItQVAKKzA2ZmEgIEhTRCBTLnIuTAorMDZmYyAgTW90b3JvbGEgU2VtaWNvbmR1Y3RvciBQcm9kdWN0cyBTZWN0b3IKKzA2ZmQgIEJvc3RvbiBBY291c3RpY3MKKwkwMTAxICBBdWRpbyBEZXZpY2UKKwkwMTAyICBBdWRpbyBEZXZpY2UKKwkwMjAxICAyLXBpZWNlIEF1ZGlvIERldmljZQorMDZmZSAgR2FsbGFudCBDb21wdXRlciwgSW5jLgorMDcwMSAgU3VwZXJjb21hbCBXaXJlICYgQ2FibGUgU0ROLiBCSEQuCiswNzAzICBCdnRlY2ggSW5kdXN0cnksIEluYy4KKzA3MDUgIE5LSyBDb3JwLgorMDcwNiAgQXJpZWwgQ29ycC4KKzA3MDcgIFN0YW5kYXJkIE1pY3Jvc3lzdGVtcyBDb3JwLgorCTAxMDAgIDIyMDIgRXRoZXJuZXQgW2tsc2ldCisJMDIwMCAgMjIwMiBFdGhlcm5ldCBbcGVnYXN1c10KKwkwMjAxICBFWiBDb25uZWN0IFVTQiBFdGhlcm5ldAorCWVlMDQgIFNNQ1dVU0IzMiA4MDIuMTFiIFdpcmVsZXNzIExBTiBDYXJkCisJZWUwNiAgRVotQ29ubmVjdCA4MDIuMTFnIEFkYXB0ZXIKKwllZTEzICBFWi1Db25uZWN0IDgwMi4xMWcgQWRhcHRlcgorMDcwOCAgUHV0ZXJjb20gQ28uLCBMdGQKKwkwNDdlICBVU0ItMTI4NCBCUklER0UKKzA3MDkgIFNpbGljb24gU3lzdGVtcywgTHRkIChTU0wpCiswNzBhICBPa2kgRWxlY3RyaWMgSW5kdXN0cnkgQ28uLCBMdGQKKwk0MDAyICBCbHVldG9vdGggRGV2aWNlCisJNDAwMyAgQmx1ZXRvb3RoIERldmljZQorMDcwZCAgQ29tb3NzIEVsZWN0cm9uaWMgQ28uLCBMdGQKKzA3MGUgIEV4Y2VsIENlbGwgRWxlY3Ryb25pYyBDby4sIEx0ZAorMDcxMCAgQ29ubmVjdCBUZWNoLCBJbmMuCisJMDAwMSAgV2hpdGVIZWF0IChmYWtlIElEKQorCTgwMDEgIFdoaXRlSGVhdAorMDcxMSAgTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnAuCisJMDEwMCAgSHViCisJMDE4MCAgSVJYcHJlc3MgSW5mcmFyZWQgRGV2aWNlCisJMDE4MSAgSVJYcHJlc3MgSW5mcmFyZWQgRGV2aWNlCisJMDIwMCAgQkFZLTNVMVMxUCBTZXJpYWwgUG9ydAorCTAyMTAgIE1DVDFTIFNlcmlhbCBQb3J0CisJMDIzMCAgTUNULTIzMiBTZXJpYWwgUG9ydAorCTAyMzEgIFBTLzIgTW91c2UgUG9ydAorCTAyMzIgIFNlcmlhbCBPbiBQb3J0CisJMDI0MCAgUFMvMiB0byBVU0IgQ29udmVydGVyCisJMDMwMCAgQkFZLTNVMVMxUCBQYXJhbGxlbCBQb3J0CisJMDMwMiAgUGFyYWxsZWwgUG9ydAorCTA5MDAgIFNWR0EgQWRhcHRlcgorMDcxMyAgSW50ZXJ2YWwgUmVzZWFyY2ggQ29ycC4KKzA3MTQgIE5ld01vdGlvbiwgSW5jLgorCTAwMDMgIEFEQiB0byBVU0IgY29udmVydG9yCiswNzE3ICBaTksgQ29ycC4KKzA3MTggIEltYXRpb24gQ29ycC4KKwkwMDAyICBTdXBlckRpc2sgMTIwTUIKKwkwMDAzICBTdXBlckRpc2sgMTIwTUIgKEF1dGhlbnRpY2F0ZWQpCisJMDA2MCAgRmxhc2ggRHJpdmUKKwkwMDYxICBGbGFzaCBEcml2ZQorCTAwNjIgIEZsYXNoIERyaXZlCisJMDA2MyAgU3dpdmVsIEZsYXNoIERyaXZlCisJMDA2NCAgRmxhc2ggRHJpdmUKKwkwMDY1ICBGbGFzaCBEcml2ZQorCTAwNjYgIEZsYXNoIERyaXZlCisJMDA2NyAgRmxhc2ggRHJpdmUKKwkwMDY4ICBGbGFzaCBEcml2ZQorCTAwODQgIEZsYXNoIERyaXZlIE1pbmkKKzA3MTkgIFRyZW1vbiBFbnRlcnByaXNlcyBDby4sIEx0ZAorMDcxYiAgRG9tYWluIFRlY2hub2xvZ2llcywgSW5jLgorCTAwMDIgIERUSS01NjM2Mi1VU0IgRGlnaXRhbCBJbnRlcmZhY2UgVW5pdAorCTAxMDEgIEF1ZGlvNC1VU0IgRFNQIERhdGEgQWNxdWlzaXRpb24gVW5pdAorCTAyMDEgIEF1ZGlvNC01NDEwIERTUCBEYXRhIEFjcXVpc2l0aW9uIFVuaXQKKwkwMzAxICBTQi1VU0IgSlRBRyBFbXVsYXRvcgorMDcxYyAgWGlvbmljcyBEb2N1bWVudCBUZWNobm9sb2dpZXMsIEluYy4KKzA3MWQgIEVpY29uIE5ldHdvcmtzIENvcnAuCisJMTAwMCAgRGl2YSBJU0ROIFRBCisJMTAwMyAgRGl2YQorCTIwMDAgIFRlbGVkYXQgU3VyZgorMDcxZSAgQXJpc3RvbiBUZWNobm9sb2dpZXMKKzA3MjMgIENlbnRpbGxpdW0gQ29tbXVuaWNhdGlvbnMgQ29ycC4KKwkwMDAyICBQYWxsYWRpYSAzMDAvNDAwIEFkc2wgTW9kZW0KKzA3MjYgIFZhbmd1YXJkIEludGVybmF0aW9uYWwgU2VtaWNvbmR1Y3Rvci1BbWVyaWNhCiswNzI5ICBBbWl0bQorCTEwMDAgIFVTQy0xMDAwIFNlcmlhbCBQb3J0CiswNzJlICBTdW5peCBDby4sIEx0ZAorMDcyZiAgQWR2YW5jZWQgQ2FyZCBTeXN0ZW1zLCBMdGQKKwkwMDAxICBBQzEwMzAtYmFzZWQgU21hcnRDYXJkIFJlYWRlcgorCTAwMDggIEFDUiA4MCBTbWFydCBDYXJkIFJlYWRlcgorCTEwMDAgIFBMRFQgRHJpdmUKKwkxMDAxICBQTERUIERyaXZlCisJODAwMiAgQUVUNjMgQmlvVFJVU1RLZXkKKwk4MDAzICBBQ1IxMjAKKwk4MTAzICBBQ1IxMjAKKwk5MDAwICBBQ1IzOCBBQzEwMzgtYmFzZWQgU21hcnQgQ2FyZCBSZWFkZXIKKwk5MGNjICBBQ1IzOCBTbWFydENhcmQgUmVhZGVyCisJOTBjZiAgQUNSMzggU0FNIFNtYXJ0IENhcmQgUmVhZGVyCisJOTBkMCAgUGVydG9TbWFydCBFTVYgLSBDYXJkIFJlYWRlcgorMDczMSAgU3VzdGVlbiwgSW5jLgorCTA1MjggIFNvbnlFcmljc3NvbiBEQ1UtMTEgQ2FibGUKKzA3MzIgIEdvbGRmdWxsIEVsZWN0cm9uaWNzICYgVGVsZWNvbW11bmljYXRpb25zIENvcnAuCiswNzMzICBWaWV3UXVlc3QgVGVjaG5vbG9naWVzLCBJbmMuCisJMDEwMSAgRGlnaXRhbCBWaWRlbyBDYW1lcmEKKwkwMTEwICBWUTExMCBWaWRlbyBDYW1lcmEKKwkwNDAxICBDUzMzMCBXZWJjYW0KKwkwNDAyICBNLTMxOEIgV2ViY2FtCisJMDQzMCAgSW50ZWwgUHJvIFNoYXJlIFdlYmNhbQorCTA2MzAgIFZRNjMwIER1YWwgTW9kZSBEaWdpdGFsIENhbWVyYShCdWxrKQorCTA2MzEgIEhlcmN1bGVzIER1YWxwaXgKKwkwNzgwICBTbWFydCBDYW0gRGVsdXhlKGNvbXBvc2l0ZSkKKwkxMzEwICBFcHNpbG9uIDEuMy9KZW5vcHRpayBKRCBDMS4zL1VNQVggQXN0cmFQaXggNDcwCisJMTMxMSAgRGlnaXRhbCBEcmVhbSBFcHNpbG9uIDEuMworCTEzMTQgIE1lcmN1cnkgMi4xTUVHIERlbHV4ZSBDbGFzc2ljIENhbQorCTIyMTEgIEplbm9wdGlrIGpkYyAyMSBMQ0QgQ2FtZXJhCisJMjIyMSAgTWVyY3VyeSBEaWdpdGFsIFBybyAzLjFwCisJMzI2MSAgQ29uY29yZCAzMDQ1IHNwY2E1MzZhIENhbWVyYQorCTMyODEgIEN5YmVycGl4IFM1NTBWCiswNzM0ICBMYXNhdCBDb21tdW5pY2F0aW9ucyBBL1MKKwkwMDAxICA1NjBWIE1vZGVtCisJMDAwMiAgTGFzYXQgNTYwViBNb2RlbQorCTA0M2EgIERWUyBBdWRpbworCTA0M2IgIDNEZU1vbiBVU0IgQ2FwdHVyZQorMDczNSAgQXN1c2NvbSBOZXR3b3JrCisJMjEwMCAgSVNETiBBZGFwdGVyCisJMjEwMSAgSVNETiBBZGFwdGVyCisJNjY5NCAgSVNETiBBZGFwdGVyCisJYzU0MSAgSVNETiBUQSAyODAKKzA3MzYgIExvcm9tIEluZHVzdHJpYWwgQ28uLCBMdGQKKzA3MzggIE1hZCBDYXR6LCBJbmMuCisJNDUwNyAgWEJveCBEZXZpY2UKKwk0NTE2ICBYQm94IERldmljZQorCTQ1MjAgIFhCb3ggRGV2aWNlCisJNDUyNiAgWEJveCBEZXZpY2UKKwk0NTM2ICBYQm94IERldmljZQorCTQ1NDAgIFhCb3ggRGV2aWNlCisJNDU1NiAgWEJveCBEZXZpY2UKKwk0NTY2ICBYQm94IERldmljZQorCTQ1NzYgIFhCb3ggRGV2aWNlCisJNDU4NiAgWEJveCBEZXZpY2UKKwk0NTg4ICBYQm94IERldmljZQorMDczYSAgQ2hhcGxldCBTeXN0ZW1zLCBJbmMuCiswNzNiICBTdW5jb20gVGVjaG5vbG9naWVzCiswNzNkICBFdXRyb24gUy5wLmEuCisJMDAwNSAgQ3J5cHRvIFRva2VuCisJMDAwNyAgQ3J5cHRvSWRlbnRpdHkgQ0NJRAorCTAwMjUgIFNtYXJ0S2V5IDMKKwkwYzAwICBQb2NrZXQgUmVhZGVyCisJMGQwMCAgU3RhclNpZ24gQmlvIFRva2VuIDMuMCBFVQorMDczYyAgSW5kdXN0cmlhbCBFbGVjdHJvbmljIEVuZ2luZWVycywgSW5jLgorCTAzMDUgIFBvbGUgRGlzcGxheSAoUEMzMDUtMzQxNSAgMiB4IDIwIExpbmUgRGlzcGxheSkKKwkwMzIyICBQb2xlIERpc3BsYXkgKFBDMzIyLTM0MTUgIDIgeCAyMCBMaW5lIERpc3BsYXkpCisJMDMyNCAgUG9sZSBEaXNwbGF5IChMQjMyNC1VU0IgICA0IHggMjAgTGluZSBEaXNwbGF5KQorCTAzMzAgIFBvbGUgRGlzcGxheSAoUDMzMC0zNDE1ICAgMiB4IDIwIExpbmUgRGlzcGxheSkKKwkwNDI0ICBQb2xlIERpc3BsYXkgKFNQMzI0LTQ0MTUgIDQgeCAyMCBMaW5lIERpc3BsYXkpCisJMDQ1MCAgUG9sZSBEaXNwbGF5IChMNDUwLVVTQiAgIEdyYXBoaWMgTGluZSBEaXNwbGF5KQorCTA1MDUgIFBvbGUgRGlzcGxheSAoU1BDNTA1LTM0MTUgMiB4IDIwIExpbmUgRGlzcGxheSkKKwkwNTIyICBQb2xlIERpc3BsYXkgKFNQQzUyMi0zNDE1IDIgeCAyMCBMaW5lIERpc3BsYXkpCisJMDYyNCAgUG9sZSBEaXNwbGF5IChTUDMyNC0zNDE1ICA0IHggMjAgTGluZSBEaXNwbGF5KQorMDczZSAgTkVDLCBJbmMuCisJMDMwMSAgR2FtZSBQYWQKKzA3NDUgIFN5bnRlY2ggSW5mb3JtYXRpb24gQ28uLCBMdGQKKzA3NDYgIE9ua3lvIENvcnAuCisJNTUwMCAgU0UtVTU1IEF1ZGlvIERldmljZQorMDc0NyAgTGFid2F5IENvcnAuCiswNzQ4ICBTdHJvbmcgTWFuIEVudGVycHJpc2UgQ28uLCBMdGQKKzA3NDkgIEVWZXIgRWxlY3Ryb25pY3MgQ29ycC4KKzA3NGEgIE1pbmcgRm9ydHVuZSBJbmR1c3RyeSBDby4sIEx0ZAorMDc0YiAgUG9sZXN0YXIgVGVjaC4gQ29ycC4KKzA3NGMgIEMtQy1DIEdyb3VwIFBMQworMDc0ZCAgTWljcm9uYXMgR21iSAorCTM1NTMgIENvbXBvc2l0ZSBVU0ItRGV2aWNlCisJMzU1NCAgQ29tcG9zaXRlIFVTQi1EZXZpY2UKKwkzNTU2ICBDb21wb3NpdGUgVVNCLURldmljZQorMDc0ZSAgRGlnaXRhbCBTdHJlYW0gQ29ycC4KKwkwMDAxICBQUy8yIEFkYXB0ZXIKKwkwMDAyICBQUy8yIEFkYXB0ZXIKKzA3NTUgIEF1cmVhbCBTZW1pY29uZHVjdG9yCiswNzU3ICBOZXR3b3JrIFRlY2hub2xvZ2llcywgSW5jLgorMDc1YiAgU29waGlzdGljYXRlZCBDaXJjdWl0cywgSW5jLgorCTAwMDEgIEtpY2stb2ZmISBXYXRjaGRvZworMDc2MyAgTWlkaW1hbgorCTAxMTUgIEtleVJpZyAyNQorCTAxMTcgIFRyaWdnZXIgRmluZ2VyCisJMDExOSAgTWlkQWlyCisJMDE1MCAgTS1BdWRpbyBVbm8KKwkwMTYwICBNLUF1ZGlvIDF4MQorCTAxOTIgIE0tQXVkaW8gS2V5c3RhdGlvbiA4OGVzCisJMDE5MyAgUHJvS2V5cyA4OAorCTAxOTQgIFByb0tleXMgODhzeAorCTAxOTUgIE94eWdlbiA4IHYyCisJMDE5NiAgT3h5Z2VuIDQ5CisJMDE5NyAgT3h5Z2VuIDYxCisJMDE5OCAgQXhpb20gMjUKKwkwMTk5ICBBeGlvbSA0OQorCTAxOWEgIEF4aW9tIDYxCisJMDE5YiAgS2V5UmlnIDQ5CisJMDE5YyAgS2V5U3R1ZGlvCisJMTAwMSAgTWlkaVNwb3J0IDJ4MgorCTEwMDIgIE1pZGlTcG9ydCAyeDIKKwkxMDAzICBNaWRpU3BvcnQgMngyCisJMTAxMCAgTWlkaVNwb3J0IDF4MQorCTEwMTEgIE1pZGlTcG9ydCAxeDEKKwkxMDE0ICBNLUF1ZGlvIEtleXN0YXRpb24gTG9hZGVyCisJMTAxNSAgTS1BdWRpbyBLZXlzdGF0aW9uCisJMTAyMCAgTWlkaXNwb3J0IDR4NAorCTEwMjEgIE1pZGlTcG9ydCA0eDQKKwkxMDMwICBNaWRpc3BvcnQgOHg4CisJMTAzMSAgTWlkaVNwb3J0IDh4OC9zIExvYWRlcgorCTEwMzMgIE1pZGlTcG9ydCA4eDgvcworCTEwNDAgIE0tQXVkaW8gTWlkaVNwb3J0IDJ4NCBMb2FkZXIKKwkxMDQxICBNLUF1ZGlvIE1pZGlTcG9ydCAyeDQKKwkxMTEwICBNaWRpU3BvcnQgMXgxCisJMjAwMSAgTSBBdWRpbyBRdWF0dHJvCisJMjAwMiAgTSBBdWRpbyBEdW8KKwkyMDAzICBNIEF1ZGlvIEF1ZGlvUGhpbGUKKwkyMDA0ICBNLUF1ZGlvIE1vYmlsZVByZQorCTIwMDYgIE0tQXVkaW8gVHJhbnNpdAorCTIwMDcgIE0tQXVkaW8gU29uaWNhIFRoZWF0ZXIKKwkyMDA4ICBNLUF1ZGlvIE96b25lCisJMjAwZCAgTS1BdWRpbyBPbW5pU3R1ZGlvCisJMjAwZiAgTS1BdWRpbyBNb2JpbGVQcmUKKwkyMDEwICBNLUF1ZGlvIEZhc3QgVHJhY2sKKwkyMDEzICBNLUF1ZGlvIEphbUxhYgorCTIwMTUgIE0tQXVkaW8gUnVuVGltZSBERlUKKwkyMDE2ICBNLUF1ZGlvIFJ1blRpbWUgREZVCisJMjAxOSAgTS1BdWRpbyBPem9uZSBBY2FkZW1pYworCTIwMWEgIE0tQXVkaW8gTWljcm8KKwkyMDFiICBNLUF1ZGlvIFJ1blRpbWUgREZVCisJMjAxZCAgTS1BdWRpbyBQcm9kdWNlcgorCTIwODAgIE0tQXVkaW8gUnVuVGltZSBERlUKKwkyMDgxICBNLUF1ZGlvIFJ1blRpbWUgREZVCisJMjgwMyAgTS1BdWRpbyBBdWRpb3BoaWxlIERGVQorCTI4MDQgIE0tQXVkaW8gTW9iaWxlUHJlIERGVQorCTI4MDYgIE0tQXVkaW8gVHJhbnNpdCBERlUKKwkyODE1ICBNLUF1ZGlvIERGVQorCTI4MTYgIE0tQXVkaW8gREZVCisJMjgxYiAgTS1BdWRpbyBERlUKKwkyODgwICBNLUF1ZGlvIERGVQorCTI4ODEgIE0tQXVkaW8gREZVCiswNzY0ICBDeWJlciBQb3dlciBTeXN0ZW0sIEluYy4KKwkwMDA1ICBDeWJlciBQb3dlciBVUFMKKwkwNTAxICBDUDE1MDAgQVZSIFVQUworMDc2NSAgWC1SaXRlLCBJbmMuCiswNzY2ICBKZXNzLUxpbmsgUHJvZHVjdHMgQ28uLCBMdGQKKzA3NjcgIFRva2hlaW0gQ29ycC4KKzA3NjggIENhbXRlbCBUZWNobm9sb2d5IENvcnAuCisJMDAwNiAgQ2FtdGVsIFRlY2hub2xvZ3kgVVNCIFRWIEdlbmllIFBybyBGTSBNb2RlbCBUVkIzMzAKKwkwMDIzICBlSG9tZSBJbmZyYXJlZCBSZWNlaXZlcgorMDc2OSAgU3VyZWNvbSBUZWNobm9sb2d5IENvcnAuCisJMTFmMiAgRVAtOTAwMS1nIDgwMi4xMWcgNTRNIFdMQU4gQWRhcHRlcgorCTExZjMgIFJUMjU3MAorCTExZjcgIDgwMi4xMWcgNTRNIFdMQU4gQWRhcHRlcgorCTMxZjMgIFJUMjU3MworMDc2YSAgU21hcnQgVGVjaG5vbG9neSBFbmFibGVycywgSW5jLgorMDc2YiAgT21uaUtleSBBRworCTA1OTYgIENhcmRNYW4gMjAyMAorCTEwMjEgIENhcmRNYW4gMTAyMQorCTEyMjEgIENhcmRNYW4gMTIyMQorCTE3ODQgIENhcmRNYW4gNjAyMAorCTMwMjEgIENhcmRNYW4gMzEyMQorCTM2MTAgIENhcmRNYW4gMzYyMAorCTM2MjEgIENhcmRNYW4gMzYyMQorCTM4MjEgIENhcmRNYW4gMzgyMQorCTQzMjEgIENhcmRNYW4gNDMyMQorCTUxMjEgIENhcmRNYW4gNTEyMQorCTUxMjUgIENhcmRNYW4gNTEyNQorCTY2MjIgIENhcmRNYW4gNjEyMQorCWEwMTEgIENDSUQgU21hcnQgQ2FyZCBSZWFkZXIgS2V5Ym9hcmQKKwlhMDIxICBDQ0lEIFNtYXJ0IENhcmQgUmVhZGVyCisJYTAyMiAgQ2FyZE1hbiBTbWFydEBMaW5rCisJYzAwMCAgQ2FyZE1hbiAzeDIxIENTCisJYzAwMSAgQ2FyZE1hbiA1MTIxIENTCiswNzZjICBQYXJ0bmVyIFRlY2gKKzA3NmQgIERlbnNvIENvcnAuCiswNzZlICBLdWFuIFRlY2ggRW50ZXJwcmlzZSBDby4sIEx0ZAorMDc2ZiAgSmhlbiBWZWkgRWxlY3Ryb25pYyBDby4sIEx0ZAorMDc3MCAgV2VsY2ggQWxseW4sIEluYyAtIE1lZGljYWwgRGl2aXNpb24KKzA3NzQgIEFtVFJBTiBUZWNobm9sb2d5IENvLiwgTHRkCiswNzc1ICBMb25nc2hpbmUgRWxlY3Ryb25pY3MgQ29ycC4KKzA3NzYgIEluYWx3YXlzIENvcnAuCiswNzc3ICBDb21kYSBFbnRlcnByaXNlIENvcnAuCiswNzc4ICBWb2xleCwgSW5jLgorMDc3OSAgRmFpcmNoaWxkIFNlbWljb25kdWN0b3IKKzA3N2EgIFNhbmt5byBTZWlraSBNZmcuIENvLiwgTHRkCiswNzdiICBMaW5rc3lzCisJMDhiZSAgQkVGQ01VMTAgdjQgQ2FibGUgTW9kZW0KKwkyMjE5ICBXVVNCMTEgVjIuNiA4MDIuMTFiIEFkYXB0ZXIKKwkyMjI2ICBVU0IyMDBNIDEwMGJhc2VUWCBBZGFwdGVyCiswNzdjICBGb3J3YXJkIEVsZWN0cm9uaWNzIENvLiwgTHRkCisJMDAwNSAgTkVDIEtleWJvYXJkCiswNzdkICBHcmlmZmluIFRlY2hub2xvZ3kKKwkwMjIzICBJTWljIEF1ZGlvIEluL091dAorCTA0MDUgIGlNYXRlLCBBREIgQWRhcHRlcgorCTA0MTAgIFBvd2VyTWF0ZQorCTA0MWEgIFBvd2VyV2F2ZQorCTA3YWYgIGlNaWMKKwkxMDE2ICBBaXJDbGljaworCTYyN2EgIFJhZGlvIFNIQVJLCiswNzdmICBXZWxsIEV4Y2VsbGVudCAmIE1vc3QgQ29ycC4KKzA3ODAgIFNhZ2VtIE1vbmV0ZWwgR21iSAorCTEyMDIgIE9SR0EgOTAwIFNtYXJ0IENhcmQgVGVybWluYWwgVmlydHVhbCBDb20gUG9ydAorCTEzMDIgIE9SR0EgNjAwMCBTbWFydCBDYXJkIFRlcm1pbmFsIFZpcnR1YWwgQ29tIFBvcnQKKwkxMzAzICBPUkdBIDYwMDAgU21hcnQgQ2FyZCBUZXJtaW5hbCBVU0IgUk5ESVMKKwlkZjU1ICBPUkdBIDkwMC82MDAwIFNtYXJ0IENhcmQgVGVybWluYWwgREZVCiswNzgxICBTYW5EaXNrIENvcnAuCisJMDAwMSAgU0REUi0wNWEgSW1hZ2VNYXRlIENvbXBhY3RGbGFzaCBSZWFkZXIKKwkwMDAyICBTRERSLTMxIEltYWdlTWF0ZSBJSSBDb21wYWN0Rmxhc2ggUmVhZGVyCisJMDAwNSAgU0REUi0wNWIgKENGIElJKSBJbWFnZU1hdGUgQ29tcGFjdEZsYXNoIFJlYWRlcgorCTAxMDAgIEltYWdlTWF0ZSBTRERSLTEyCisJMDIwMCAgU0REUi0wOSAoU1NGREMpIEltYWdlTWF0ZSBTbWFydE1lZGlhIFJlYWRlciBbZXVzYl0KKwkwNDAwICBTZWN1cmVNYXRlIFNEL01NQyBSZWFkZXIKKwkwNjIxICBTRERSLTg2IEltYWdlbWF0ZSA2LWluLTEgUmVhZGVyCisJMDcyMCAgU2Fuc2EgQzIwMCBzZXJpZXMgaW4gcmVjb3ZlcnkgbW9kZQorCTA3MjkgIFNhbnNhIEUyMDAgc2VyaWVzIGluIHJlY292ZXJ5IG1vZGUKKwkwODEwICBTRERSLTc1IEltYWdlTWF0ZSBDRi1TTSBSZWFkZXIKKwkwODMwICBJbWFnZU1hdGUgQ0YvTU1DL1NEIFJlYWRlcgorCTEyMzQgIENydXplciBNaW5pIEZsYXNoIERyaXZlCisJNTE1MCAgU0RDWjIgQ3J1emVyIE1pbmkgRmxhc2ggRHJpdmUgKHRoaW4pCisJNTE1MSAgQ3J1emVyIE1pY3JvIEZsYXNoIERyaXZlCisJNTE1MyAgQ3J1emVyIEZsYXNoIERyaXZlCisJNTQwNiAgQ3J1emVyIE1pY3JvIDEvMi80R0IgRmxhc2ggRHJpdmUKKwk1NDA4ICBDcnV6ZXIgVGl0YW5pdW0gVTMKKwk2MTAwICBVbHRyYSBJSSBTRCBQbHVzIDJHQgorCTcxMDAgIENydXplciBNaW5pCisJNzEwMSAgUGVuIEZsYXNoCisJNzEwMiAgQ3J1emVyIE1pbmkKKwk3MTAzICBDcnV6ZXIgTWluaQorCTcxMDQgIENydXplciBNaWNybyBNaW5pIDI1Nk1CIEZsYXNoIERyaXZlCisJNzEwNSAgQ3J1emVyIE1pbmkKKwk3MTA2ICBDcnV6ZXIgTWluaQorCTcxMTIgIENydXplciBNaWNybyAxMjhNQiBGbGFzaCBEcml2ZQorCTcxMTMgIENydXplciBNaWNybyAyNTZNQiBGbGFzaCBEcml2ZQorCTcxMTQgIENydXplciBNaW5pCisJNzExNSAgQ3J1emVyIE1pbmkKKwk3NDAwICBTYW5zYSBNMjAwIHNlcmllcyAobXNjKQorCTc0MDEgIFNhbnNhIE0yMDAgc2VyaWVzIChtdHApCisJNzQyMCAgU2Fuc2EgRTIwMCBzZXJpZXMgKG10cCkKKwk3NDIxICBTYW5zYSBFMjAwIHNlcmllcworCTc0MjIgIFNhbnNhIEUyMDAgc2VyaWVzIHYyIChtdHApCisJNzQyMyAgU2Fuc2EgRTIwMCBzZXJpZXMgdjIgKG1zYykKKwk3NDMwICBTYW5zYSBNMjAwIHNlcmllcworCTc0MzEgIFNhbnNhIE0yMDB2NCAobXNjKQorCTc0MzIgIFNhbnNhIENsaXAgKG10cCkKKwk3NDMzICBTYW5zYSBDbGlwIChtc2MpCisJNzQ1MCAgU2Fuc2EgQzI1MAorCTc0NTEgIFNhbnNhIEMyNDAKKwk3NDYwICBTYW5zYSBFeHByZXNzCisJNzQ4MCAgU2Fuc2EgQ29ubmVjdAorCTc0ODEgIFNhbnNhIENvbm5lY3QgKGluIHJlY292ZXJ5IG1vZGUpCisJNzRiMSAgU2Fuc2EgVmlldworCTc0YzAgIFNhbnNhIEZ1emUgKG10cCkKKwk3NGMxICBTYW5zYSBGdXplIChtc2MpCisJODE4MSAgUGVuIEZsYXNoCisJODE4MyAgSGktU3BlZWQgTWFzcyBTdG9yYWdlIERldmljZQorCTgxODUgIFNEQ1oyIENydXplciBNaW5pIEZsYXNoIERyaXZlIChvbGRlciwgdGhpY2spCisJODg4OCAgQ2FyZCBSZWFkZXIKKwk4ODg5ICBTRERSLTg4IEltYWdlbWF0ZSA4LWluLTEgUmVhZGVyCisJODkxOSAgQ2FyZCBSZWFkZXIKKwk4OTg5ICBJbWFnZU1hdGUgMTItaW4tMSBSZWFkZXIKKwk5MTkxICBJbWFnZU1hdGUgQ0YKKwk5MjE5ICBDYXJkIFJlYWRlcgorCTkyOTIgIEltYWdlTWF0ZSBDRiBSZWFkZXIvV3JpdGVyCisJOTM5MyAgSW1hZ2VNYXRlIFNELU1NQworCTk1OTUgIEltYWdlTWF0ZSB4RC1TTQorCTk3OTcgIEltYWdlTWF0ZSBNUy1QUk8KKwk5OTE5ICBDYXJkIFJlYWRlcgorCTk5OTkgIFNERFItOTkgNS1pbi0xIFJlYWRlcgorCWE3ZTggIFNERFItMTEzIE1pY3JvTWF0ZSBTREhDIFJlYWRlcgorCWIyYjMgIFNERFItMTAzIE1vYmlsZU1hdGUgU0QrIFJlYWRlcgorMDc4MiAgVHJhY2tlcmJhbGwKKzA3ODMgIEMzUE8KKwkwMDAzICBMVEMzMSBTbWFydENhcmQgUmVhZGVyCiswNzg0ICBWaXZpdGFyLCBJbmMuCisJMDEwMCAgVml2aWNhbSAyNjU1CisJMTMxMCAgVml2aWNhbSAzMzA1CisJMTY4OCAgVml2aWNhbSAzNjY1CisJMTY4OSAgR2F0ZXdheSBEQy1NNDIvTGFidGVjIERDLTUwNS9WaXZpdGFyIFZpdmljYW0gMzcwNQorCTI2MjAgIEFPTCBQaG90b2NhbSBQbHVzCisJMjg4OCAgUG9sYXJvaWQgREM3MDAKKwkzMzMwICBOeXRlYyBORC0zMjAwIENhbWVyYQorCTQzMDAgIFRyYXZlbGVyIEQxCisJNTI2MCAgV2VybGlzYSBTcG9ydCBQWCAxMDAgLyBKVkMgR0MtQTMzIENhbWVyYQorCTUzMDAgIFByZXRlYyBkYzUzMAorMDc4NSAgTlRULU1FCisJMDAwMSAgTU4xMjhtaW5pLVYgSVNETiBUQQorCTAwMDMgIE1OMTI4bWluaS1KIElTRE4gVEEKKzA3ODkgIExvZ2l0ZWMgQ29ycC4KKwkwMDI2ICBMSEQgRGV2aWNlCisJMDAzMyAgRFZEIE11bHRpLXBsdXMgdW5pdCBMRFItSDQ0M1NVMgorCTAwNjMgIExEUiBEZXZpY2UKKwkwMDY0ICBMRFItUiBEZXZpY2UKKwkwMGIzICBEVkQgTXVsdGktcGx1cyB1bml0IExEUi1INDQzVTIKKwkwMTBjICBSZWFsdGVrIFJUTDgxODcgV2lyZWxlc3MgODAyLjExZyA1NE1icHMgTmV0d29yayBBZGFwdGVyCiswNzhiICBIYXBwIENvbnRyb2xzLCBJbmMuCisJMDAxMCAgRHJpdmluZyBVR0NJCisJMDAyMCAgRmx5aW5nIFVHQ0kKKwkwMDMwICBGaWdodGluZyBVR0NJCiswNzhjICBHVENPL0NhbENvbXAKKwkwNDAwICBEaWdpdGl6ZXIgKFdoaXRlYm9hcmQpCiswNzhlICBCcmluY29tLCBJbmMuCiswNzkwICBQcm8tSW1hZ2UgTWFudWZhY3R1cmluZyBDby4sIEx0ZAorMDc5MSAgQ29wYXJ0bmVyIFdpcmUgYW5kIENhYmxlIE1mZy4gQ29ycC4KKzA3OTIgIEF4aXMgQ29tbXVuaWNhdGlvbnMgQUIKKzA3OTMgIFdoYSBZdSBJbmR1c3RyaWFsIENvLiwgTHRkCiswNzk0ICBBQkwgRWxlY3Ryb25pY3MgQ29ycC4KKzA3OTUgIFJlYWxDaGlwLCBJbmMuCiswNzk2ICBDZXJ0aWNvbSBDb3JwLgorMDc5NyAgR3JhbmR0ZWNoIFNlbWljb25kdWN0b3IgQ29ycC4KKwk2ODAxICBGbGF0YmVkIFNjYW5uZXIKKwk2ODAyICBJbmtKZXQgQ29sb3IgUHJpbnRlcgorCTgwMDEgIFNtYXJ0Q2FtCisJODAxYSAgVHlwaG9vbiBTdHlsb0NhbQorCTgwMWMgIE1lYWRlIEJpbm9jdWxhcnMvQ2FtZXJhCisJODkwMSAgU2NhbkhleCBTWC0zNWEKKwk4OTA5ICBTY2FuSGV4IFNYLTM1YgorCTg5MTEgIFNjYW5IZXggU1gtMzVjCiswNzk4ICBPcHRlbGVjCisJMDAwMSAgQnJhaWxsZSBWb3lhZ2VyCiswNzliICBTYWdlbQorCTAwMjcgIFVTQi1TZXJpYWwgQ29udHJvbGxlcgorCTAwMmYgIE1vYmlsZQorIwkJMCAgTW9iaWxlIFBzZXVkbyBDREMgTW9kZW0KKyMJCTEgIE1vYmlsZSBQc2V1ZG8gQ0RDIFRyYWNlCisjCQkyICBNb2JpbGUgUHNldWRvIENEQyBDaGltZXJhCisJMDAzMCAgTW9iaWxlIENvbW11bmljYXRpb24gRGV2aWNlCisJMDA0MiAgTW9iaWxlCisjCQkyICBNb2JpbGUgVmlkZW8gUHNldWRvIENEQyBUcmFjZQorCTAwNGEgIFhHLTc2MEEgODAyLjExYmcKKwkwMDRiICBXaS1GaSAxMWcgYWRhcHRlcgorCTAwNTYgIEFnZmEgQVAxMTAwIFBob3RvIFByaW50ZXIKKwkwMDVkICBNb2JpbGUgTWFzcyBTdG9yYWdlCisjCQkxICBNb2JpbGUgTWFzcyBTdG9yYWdlIFBzZXVkbyBDREMgVHJhY2UKKyMJCTIgIE1vYmlsZSBNYXNzIFN0b3JhZ2UgUHNldWRvIENEQyBDaGltZXJhCisJMDA2MiAgWEctNzZOQSA4MDIuMTFiZworMDc5ZCAgQWxmYWRhdGEgQ29tcHV0ZXIgQ29ycC4KKwkwMjAxICBHYW1lUG9ydCBBZGFwdGVyCiswN2ExICBEaWdpY29tIFMucC5BLgorCWQ5NTIgIFBhbGxhZGlvIFVTQiBWLjkyIE1vZGVtCiswN2EyICBOYXRpb25hbCBUZWNobmljYWwgU3lzdGVtcworMDdhMyAgT25udG8gQ29ycC4KKzA3YTQgIEJlLCBJbmMuCiswN2E2ICBBRE10ZWssIEluYy4KKwkwN2MyICBBTjk4NkEgRXRoZXJuZXQKKwkwOTg2ICBBTjk4NiBQZWdhc3VzIEV0aGVybmV0CisJODI2NiAgSW5maW5lb24gV2lsZENhcmQtVVNCIFdpcmVsZXNzIExBTiBBZGFwdGVyCisJODUxMSAgQURNODUxMSBQZWdhc3VzIElJIEV0aGVybmV0CisJODUxMyAgQU44NTEzIEV0aGVybmV0CisJODUxNSAgQU44NTE1IEV0aGVybmV0CiswN2FhICBDb3JlZ2EgSy5LLgorCTAwMDEgIEV0aGVyIFVTQi1UIEV0aGVybmV0IFtrbHNpXQorCTAwMDQgIEZFdGhlciBVU0ItVFggRXRoZXJuZXQgW3BlZ2FzdXNdCisJMDAwYyAgV2lyZWxlc3NMQU4gVVNCLTExCisJMDAwZCAgRkV0aGVyIFVTQi1UWFMKKwkwMDEyICBTdGljay0xMSA4MDIuMTFiIEFkYXB0ZXIKKwkwMDE3ICBGRXRoZXIgVVNCMi1UWAorCTAwMWEgIFVMVVNCLTExIEtleQorCTAwMmYgIENHLVdMVVNCMkdOTAorCTc2MTMgIFN0aWNrLTExIFYyIDgwMi4xMWIgQWRhcHRlcgorCTk2MDEgIEZFdGhlciBVU0ItVFhDCiswN2FiICBGcmVlY29tIFRlY2hub2xvZ2llcworCWZjMDEgIElERSBicmlkZ2UKKwlmYzAyICBDYWJsZSBJSSBVU0ItMgorCWZjMDMgIFVTQjItSURFIElERSBicmlkZ2UKKwlmY2Y4ICBGcmVlY29tIENsYXNzaWMgU0wgTmV0d29yayBEcml2ZQorMDdhZiAgTWljcm90ZWNoCisJMDAwNCAgU0NTSS1EQjI1IFNDU0kgQnJpZGdlIFtzaHV0dGxlXQorCTAwMDUgIFNDU0ktSEQ1MCBTQ1NJIEJyaWRnZSBbc2h1dHRsZV0KKwkwMDA2ICBDYW1lcmFNYXRlIFNtYXJ0TWVkaWEgYW5kIENvbXBhY3RGbGFzaCBDYXJkIFJlYWRlciBbZXVzYi9zaHV0dGxlXQorCWZjMDEgIEZyZWVjb20gVVNCLUlERQorMDdiMCAgVHJ1c3QgVGVjaG5vbG9naWVzCisJMDAwMSAgSVNETiBUQQorCTAwMDIgIElTRE4gVEExMjggUGx1cworCTAwMDMgIElTRE4gVEExMjggRGVsdXhlCisJMDAwNSAgSVNETiBUQTEyOCBTRQorCTAwMDYgIElTRE4gVEExMjggQ0UKKwkwMDA3ICBJU0ROIFRBCisJMDAwOCAgSVNETiBUQQorMDdiMSAgSU1QLCBJbmMuCiswN2IyICBNb3Rvcm9sYSBCQ1MsIEluYy4KKwkwMTAwICBTVVJGYm9hcmQgVm9pY2Ugb3ZlciBJUCBDYWJsZSBNb2RlbQorCTA5MDAgIFNVUkZib2FyZCBHYXRld2F5CisJMDk1MCAgU1VSRmJvYXJkIFNCRzk1MCBHYXRld2F5CisJMTAwMCAgU1VSRmJvYXJkIFNCRzEwMDAgR2F0ZXdheQorCTQxMDAgIFN1cmZCb2FyZCBTQjQxMDAgQ2FibGUgTW9kZW0KKwk0MjAwICBTdXJmQm9hcmQgU0I0MjAwIENhYmxlIE1vZGVtCisJNDIxMCAgU3VyZkJvYXJkIDQyMTAgQ2FibGUgTW9kZW0KKwk0MjIwICBTVVJGYm9hcmQgU0I0MjIwIENhYmxlIE1vZGVtCisJNDUwMCAgQ0c0NTAwIENvbW11bmljYXRpb25zIEdhdGV3YXkKKwk0NTBiICBDRzQ1MDEgQ29tbXVuaWNhdGlvbnMgR2F0ZXdheQorCTQ1MGUgIENHNDUwMEUgQ29tbXVuaWNhdGlvbnMgR2F0ZXdheQorCTUxMDAgIFN1cmZCb2FyZCBTQjUxMDAgQ2FibGUgTW9kZW0KKwk1MTAxICBTdXJmQm9hcmQgU0I1MTAxIENhYmxlIE1vZGVtCisJNTEyMCAgU3VyZkJvYXJkIFNCNTEyMCBDYWJsZSBNb2RlbSAoUk5ESVMpCisJNzAzMCAgV2lyZWxlc3MgQWRhcHRlciBXVTgzMEcKKzA3YjMgIFBsdXN0ZWssIEluYy4KKwkwMDAxICBPcHRpY1BybyAxMjEyVSBTY2FubmVyCisJMDAwMyAgU2Nhbm5lcgorCTAwMTAgIE9wdGljUHJvIFUxMiBTY2FubmVyCisJMDAxMSAgT3B0aWNQcm8gVTI0IFNjYW5uZXIKKwkwMDEzICBPcHRpY1BybyBVVDEyIFNjYW5uZXIKKwkwMDE0ICBTY2FubmVyCisJMDAxNSAgT3B0aWNQcm8gVTI0IFNjYW5uZXIKKwkwMDE3ICBPcHRpY1BybyBVVDEyLzE2LzI0IFNjYW5uZXIKKwkwMjA0ICBTY2FubmVyCisJMDQwMCAgT3B0aWNQcm8gMTI0OFUgU2Nhbm5lcgorCTA0MDEgIE9wdGljUHJvIDEyNDhVIFNjYW5uZXIgIzIKKwkwNDAzICBPcHRpY1BybyBVMTZCIFNjYW5uZXIKKwkwNDA0ICBTY2FubmVyCisJMDQwNSAgQTggTmFtZWNhcmQtcyBDb250cm9sbGVyCisJMDQwNiAgQTggTmFtZWNhcmQtRCBDb250cm9sbGVyCisJMDQxMCAgU2Nhbm5lcgorCTA0MTIgIFNjYW5uZXIKKwkwODAwICBPcHRpY1BybyBTVDQ4IFNjYW5uZXIKKwkwYzAzICBPcHRpY1BybyBTVDY0KyBTY2FubmVyCiswN2I0ICBPbHltcHVzIE9wdGljYWwgQ28uLCBMdGQKKwkwMTAwICBDYW1lZGlhIEMtMjEwMC9DLTMwMDAgVWx0cmEgWm9vbSBDYW1lcmEKKwkwMTAyICBDYW1lZGlhIEUtMTAvQy0yMjAvQy01MCBDYW1lcmEKKwkwMTA1ICBDYW1lZGlhIEMtMzEwWi9DLTcwMC9DLTc1MFVaL0MtNzU1L0MtNzY1VVovQy0zMDQwL0MtNDAwMC9DLTUwNTBaL0QtNTYwL0MtMzAyMFogWm9vbSBDYW1lcmEKKwkwMTA5ICBDLTM3MFovRC01MzVaL1gtNDUwCisJMDExMiAgTUFVU0ItMTAwIHhEIENhcmQgUmVhZGVyCisJMDExMyAgTWp1IDUwMAorCTAxMTQgIEMtMzUwWiBDYW1lcmEKKwkwMTE4ICBNanUgTWluaSBEaWdpdGFsL01qdSBEaWdpdGFsIDUwMCBDYW1lcmEKKwkwMTg0ICBQLVMxMDAgcG9ydAorCTAyMDMgIERpZ2l0YWwgVm9pY2UgUmVjb3JkZXIgRFctOTAKKwkwMjA2ICBEaWdpdGFsIFZvaWNlIFJlY29yZGVyIERTLTMzMAorCTAyMDcgIERpZ2l0YWwgVm9pY2UgUmVjb3JkZXIgJiBDYW1lcmEgVy0xMAorCTAyMDkgIERpZ2l0YWwgVm9pY2UgUmVjb3JkZXIgRE0tMjAKKwkwMjBkICBEaWdpdGFsIFZvaWNlIFJlY29yZGVyIFZOLTI0MFBDCisJMDI4MCAgbTpyb2JlIDEwMAorMDdiNSAgTWVnYSBXb3JsZCBJbnRlcm5hdGlvbmFsLCBMdGQKKwkwMDE3ICBKb3lzdGljaworCTAyMTMgIFRocnVzdG1hc3RlciBGaXJlc3Rvcm0gRGlnaXRhbCAzIEdhbWVwYWQKKwk5OTAyICBHYW1lUGFkCiswN2I2ICBNYXJ1YnVuIENvcnAuCiswN2I3ICBUSU1FIEludGVyY29ubmVjdCwgTHRkCiswN2I4ICBELUxpbmsgQ29ycC4KKwkxMTBjICBYWDEKKwkxMjAxICBJRUVFIDgwMi4xMWIgQWRhcHRlcgorCTIwMGMgIFhYMgorCTI1NzMgIFdpcmVsZXNzIExBTiBDYXJkCisJNDAwMCAgRFUtRTEwIEV0aGVybmV0IFtrbHNpXQorCTQwMDIgIERVLUUxMDAgRXRoZXJuZXQgW3BlZ2FzdXNdCisJNDAwMyAgMS8xMC8xMDAgRXRoZXJuZXQgQWRhcHRlcgorCTQwMDQgIFhYNAorCTQwMDcgIFhYNQorCTQwMGIgIFhYNgorCTQwMGMgIFhYNworCTQwMWEgIFJUTDgxNTEKKwk0MTAyICBVU0IgMS4xIDEwLzEwME0gRmFzdCBFdGhlcm5ldCBBZGFwdGVyCisJNDEwNCAgWFg5CisJNDIwYSAgVUYyMDAgRXRoZXJuZXQKKwk2MDAxICA4MDIuMTFiZworCTUzMDEgIEdXLVVTNTRaR0wgODAyLjExYmcKKwlhMDAxICBXaXJlbGVzcyBOZXR3b3JrIEFkYXB0ZXIKKwlhYmMxICBEVS1FMTAgRXRoZXJuZXQgW3BlZ2FzdXNdCisJYjAwMCAgQldVNjEzCisJYjAyYSAgQWJvQ29tIEJsdWV0b290aCBEZXZpY2UKKwliMDJiICBCbHVldG9vdGggZG9uZ2xlCisJYjAyYyAgQkNNOTIwNDVERy1GbGFzaCB3aXRoIHRyYWNlIGZpbHRlcgorCWIwMmQgIEJDTTkyMDQ1REctRmxhc2ggd2l0aCB0cmFjZSBmaWx0ZXIKKwliMDJlICBCQ005MjA0NURHLUZsYXNoIHdpdGggdHJhY2UgZmlsdGVyCisJYjAzMCAgQkNNOTIwNDVERy1GbGFzaCB3aXRoIHRyYWNlIGZpbHRlcgorCWIwMzEgIEJDTTkyMDQ1REctRmxhc2ggd2l0aCB0cmFjZSBmaWx0ZXIKKwliMDMyICBCQ005MjA0NURHLUZsYXNoIHdpdGggdHJhY2UgZmlsdGVyCisJYjAzMyAgQkNNOTIwNDVERy1GbGFzaCB3aXRoIHRyYWNlIGZpbHRlcgorCWIyMWEgIDgwMi4xMWcgV2lyZWxlc3MgQWRhcHRlcgorCWIyMWIgIEhXVTU0RE0KKwliMjFjICBSVDI1NzMKKwliMjFkICBSVDI1NzMKKwliMjFlICBSVDI1NzMKKwliMjFmICBXVUcyNzAwCisJZDAxMSAgTVAzIFBsYXllcgorCWUwMDEgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwllMDAyICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJZTAwMyAgTWFzcyBTdG9yYWdlIERldmljZQorCWUwMDQgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwllMDA1ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJZTAwNiAgTWFzcyBTdG9yYWdlIERldmljZQorCWUwMDcgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwllMDA4ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJZTAwOSAgTWFzcyBTdG9yYWdlIERldmljZQorCWUwMGEgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwllNGYwICBDYXJkIFJlYWRlciBEcml2ZXIKKwlmMTAxICBEU0ItNTYwIE1vZGVtIFthdGxhc10KKzA3YmMgIENhbm9uIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KKzA3YmQgIFdlYmdlYXIsIEluYy4KKzA3YmUgIFZlcmlkaWNvbQorMDdjMCAgQ29kZSBNZXJjZW5hcmllcyBIYXJkLSB1bmQgU29mdHdhcmUgR21iSAorCTExMjEgIFRoZSBDbGF3CisJMTUwMCAgSU8tV2FycmlvciA0MAorCTE1MDEgIElPLVdhcnJpb3IgMjQKKwkxNTAyICBJTy1XYXJyaW9yIDQ4CisJMTUwMyAgSU8tV2FycmlvciAyOAorMDdjMSAgS2Vpc29rdWdpa2VuCisJMDA2OCAgSEtTLTAyMDAgVVNCREFRCiswN2M0ICBEYXRhZmFiIFN5c3RlbXMsIEluYy4KKwkwMTAyICBVU0IgdG8gTFMxMjAKKwkwMTAzICBVU0IgdG8gSURFCisJMTIzNCAgVVNCIHRvIEFUQVBJCisJYTAwMCAgQ29tcGFjdEZsYXNoIENhcmQgUmVhZGVyCisJYTAwMSAgQ29tcGFjdEZsYXNoICYgU21hcnRNZWRpYSBDYXJkIFJlYWRlciBbZXVzYl0KKwlhMDAyICBEaXNrIERyaXZlCisJYTAwMyAgRGF0YWZhYi1iYXNlZCBSZWFkZXIKKwlhMDA0ICBVU0IgdG8gTU1DIENsYXNzIERyaXZlCisJYTAwNSAgQ29tcGFjdEZsYXNoICYgU21hcnRNZWRpYSBDYXJkIFJlYWRlcgorCWEwMDYgIFNtYXJ0TWVkaWEgQ2FyZCBSZWFkZXIKKwlhMDA3ICBNZW1vcnkgU3RpY2sgQ2xhc3MgRHJpdmUKKwlhMTAzICBNRFNNLUIgcmVhZGVyCisJYTEwNyAgVVNCIHRvIE1lbW9yeSBTdGljayAoTEMxKSBEcml2ZQorCWExMDkgIExDMSBDb21wYWN0Rmxhc2ggJiBTbWFydE1lZGlhIENhcmQgUmVhZGVyCisJYTEwYiAgVVNCIHRvIENGK01TKExDMSkKKwlhMjAwICBERi1VVC0wNiBIYW1hIE1NQy9TRCBSZWFkZXIKKwlhNDAwICBDb21wYWN0Rmxhc2ggJiBNaWNyb2RyaXZlIFJlYWRlcgorCWE2MDAgIENhcmQgUmVhZGVyCisJYWQwMSAgTWFzcyBTdG9yYWdlIERldmljZQorCWFlMDEgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwlhZjAxICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJYjAwMCAgVVNCIHRvIENGKExDMSkKKwliMDAxICBVU0IgdG8gQ0YrUENNQ0lBCisJYjAwNCAgTU1DL1NEIFJlYWRlcgorCWIwMDYgIFVTQiB0byBQQ01DSUEKKwliMDBhICBVU0IgdG8gQ0YrU0QgRHJpdmUoTEMxKQorCWIwMGIgIFVTQiB0byBNZW1vcnkgU3RpY2soTEMxKQorMDdjNSAgQVBHIENhc2ggRHJhd2VyCiswN2M2ICBTaGFyZVdhdmUsIEluYy4KKzA3YzcgIFBvd2VydGVjaCBJbmR1c3RyaWFsIENvLiwgTHRkCiswN2M4ICBCLlUuRy4sIEluYy4KKwkwMjAyICBNTjEyOC1TT0hPIFBBTAorMDdjOSAgQWxsaWVkIFRlbGVzeW4gSW50ZXJuYXRpb25hbAorCWIxMDAgIEFULVVTQjEwMAorMDdjYSAgQVZlck1lZGlhIFRlY2hub2xvZ2llcywgSW5jLgorCTAwMDIgIEFWZXJUViBQVlIgVVNCL0VaTWFrZXIgUHJvIERldmljZQorCTAwMjYgIEFWZXJUVgorCTEyMjggIE1QRUctMiBDYXB0dXJlIERldmljZSAoTTAzOCkKKwllODgwICBNUEVHLTIgQ2FwdHVyZSBEZXZpY2UgKEU4ODApCisJZTg4MiAgTVBFRy0yIENhcHR1cmUgRGV2aWNlIChFODgyKQorMDdjYiAgS2luZ21heCBUZWNobm9sb2d5LCBJbmMuCiswN2NjICBDYXJyeSBDb21wdXRlciBFbmcuLCBDby4sIEx0ZAorCTAwMDAgIENGIENhcmQgUmVhZGVyCisJMDAwMSAgUmVhZGVyIChVSUNTRSkKKwkwMDAyICBSZWFkZXIgKFVJUykKKwkwMDAzICBTTSBDYXJkIFJlYWRlcgorCTAwMDQgIFNNL0NGL1BDTUNJQSBDYXJkIFJlYWRlcgorCTAwMDUgIFJlYWRlciAoVUlTQTJTRSkKKwkwMDA2ICBTTS9DRi9QQ01DSUEgQ2FyZCBSZWFkZXIKKwkwMDA3ICBSZWFkZXIgKFVJU0E2U0UpCisJMDAwYyAgU00vQ0YgQ2FyZCBSZWFkZXIKKwkwMDBkICBTTS9DRiBDYXJkIFJlYWRlcgorCTAwMGUgIFJlYWRlciAoVUlTREEpCisJMDAwZiAgUmVhZGVyIChVSUNMSUspCisJMDAxMCAgUmVhZGVyIChVSVNNQSkKKwkwMDEyICBSZWFkZXIgKFVJU0M2U0UtRkxBU0gpCisJMDAxNCAgTGl0cm9uaWMgRm9ydGV6emEgUmVhZGVyCisJMDAzMCAgTWFzcyBTdG9yYWdlIChVSVNETUMxMlMpCisJMDA0MCAgTWFzcyBTdG9yYWdlIChVSVNETUMxM1MpCisJMDEwMCAgUmVhZGVyIChVSUQpCisJMDEwMSAgUmVhZGVyIChVSU0pCisJMDEwMiAgUmVhZGVyIChVSVNETUEpCisJMDEwMyAgUmVhZGVyIChVSVNETUMpCisJMDEwNCAgUmVhZGVyIChVSVNETSkKKwkwMjAwICA2LWluLTEgQ2FyZCBSZWFkZXIKKwkwMjAxICBNYXNzIFN0b3JhZ2UgKFVJU0RNQzFTICYgVUlTRE1DM1MpCisJMDIwMiAgTWFzcyBTdG9yYWdlIChVSVNETUM1UykKKwkwMjAzICBNYXNzIFN0b3JhZ2UgKFVJU01DNVMpCisJMDIwNCAgTWFzcyBTdG9yYWdlIChVSU00LzVTICYgVUlNN1MpCisJMDIwNSAgTWFzcyBTdG9yYWdlIChVSVM0LzVTICYgVUlTN1MpCisJMDIwNiAgTWFzcyBTdG9yYWdlIChVSVNETUMxMFMgJiBVSVNETUMxMVMpCisJMDIwNyAgTWFzcyBTdG9yYWdlIChVUElETUEpCisJMDIwOCAgTWFzcyBTdG9yYWdlIChVQ0ZDIElJKQorCTAyMTAgIE1hc3MgU3RvcmFnZSAoVVBJWFhBKQorCTAyMTMgIE1hc3MgU3RvcmFnZSAoVVBJREEpCisJMDIxNCAgTWFzcyBTdG9yYWdlIChVUElNQSkKKwkwMjE1ICBNYXNzIFN0b3JhZ2UgKFVQSVNBKQorCTAyMTcgIE1hc3MgU3RvcmFnZSAoVVBJU0RNQSkKKwkwMjIzICBNYXNzIFN0b3JhZ2UgKFVDSURBKQorCTAyMjQgIE1hc3MgU3RvcmFnZSAoVUNJTUEpCisJMDIyNSAgTWFzcyBTdG9yYWdlIChVSVM3UykKKwkwMjI3ICBNYXNzIFN0b3JhZ2UgKFVDSURNQSkKKwkwMjM0ICBNYXNzIFN0b3JhZ2UgKFVJTTdTKQorCTAyMzUgIE1hc3MgU3RvcmFnZSAoVUlTNFMtUykKKwkwMjM3ICBWZWxwZXIgKFVJU0RNQzRTKQorCTAzMDAgIDYtaW4tMSBDYXJkIFJlYWRlcgorCTAzMDEgIDYtaW4tMSBDYXJkIFJlYWRlcgorCTAzMDMgIE1hc3MgU3RvcmFnZSAoVUlEMTBXKQorCTAzMDQgIE1hc3MgU3RvcmFnZSAoVUlNMTBXKQorCTAzMDUgIE1hc3MgU3RvcmFnZSAoVUlTMTBXKQorCTAzMDggIE1hc3MgU3RvcmFnZSAoVUlDMTBXKQorCTAzMDkgIE1hc3MgU3RvcmFnZSAoVUlTQzNXKQorCTAzMTAgIE1hc3MgU3RvcmFnZSAoVUlTRE1BMlcpCisJMDMxMSAgTWFzcyBTdG9yYWdlIChVSVNETUMxNFcpCisJMDMyMCAgTWFzcyBTdG9yYWdlIChVSVNETUM0VykKKwkwMzIxICBNYXNzIFN0b3JhZ2UgKFVJU0RNQzM3VykKKwkwMzMwICBXSU5URVJSRUFERVIgUmVhZGVyCisJMDM1MCAgOS1pbi0xIENhcmQgUmVhZGVyCisJMDUwMCAgTWFzcyBTdG9yYWdlCisJMDUwMSAgTWFzcyBTdG9yYWdlCiswN2NkICBFbGVrdG9yCisJMDAwMSAgVVNCdWFydCBTZXJpYWwgUG9ydAorMDdjZiAgQ2FzaW8gQ29tcHV0ZXIgQ28uLCBMdGQKKwkxMDAxICBRVi04MDAwU1gvNTcwMC8zMDAwRVggRGlnaWNhbTsgRXhpbGltIEVYLU0yMAorCTEwMDMgIEV4aWxpbSBFWC1TNTAwCisJMTAwNCAgRXhpbGltIEVYLVoxMjAKKwkxMDExICBVU0ItQ0FTSU8gUEMgQ0FNRVJBCisJMjAwMiAgRS0xMjUgQ2Fzc2lvcGVpYSBQb2NrZXQgUEMKKwkzODAxICBXTVAtMSBNUDMtV2F0Y2gKKwk0MDAxICBMYWJlbCBQcmludGVyIEtMLVAxMDAwCisJNDAwNyAgQ1c1MCBEZXZpY2UKKwk0MTA0ICBDdzc1IERldmljZQorCTQxMDcgIENXLUwzMDAgRGV2aWNlCisJNDUwMCAgTFYtMjAgRGlnaXRhbCBDYW1lcmEKKwk2ODAxICBQTC00MFIKKwk2ODAyICBNSURJIEtleWJvYXJkCiswN2QwICBEYXp6bGUKKwkwMDAxICBEaWdpdGFsIFZpZGVvIENyZWF0b3IgSQorCTAwMDIgIEdsb2JhbCBWaWxsYWdlIFZpZGVvRlggR3JhYmJlcgorCTAwMDMgIEZ1c2lvbiBNb2RlbCBEVkMtNTAgUmV2IDEgKE5UU0MpCisJMDAwNCAgRFZDLTgwMCAoUEFMKSBHcmFiYmVyCisJMDAwNSAgRnVzaW9uIFZpZGVvIGFuZCBBdWRpbyBQb3J0cworCTAwMDYgIERWQyAxNTAgTG9hZGVyIERldmljZQorCTAwMDcgIERWQyAxNTAKKwkwMzI3ICBGdXNpb24gRGlnaXRhbCBNZWRpYSBSZWFkZXIKKwkxMDAxICBETS1GTEVYIERGVSBBZGFwdGVyCisJMTAwMiAgRE1IUzIgREZVIEFkYXB0ZXIKKwkxMTAyICBDRiBSZWFkZXIvV3JpdGVyCisJMTEwMyAgU0QgUmVhZGVyL1dyaXRlcgorCTExMDQgIFNNIFJlYWRlci9Xcml0ZXIKKwkxMTA1ICBNUyBSZWFkZXIvV3JpdGVyCisJMTEwNiAgeEQvU00gUmVhZGVyL1dyaXRlcgorCTEyMDIgIE11bHRpU2xvdCBSZWFkZXIvV3JpdGVyCisJMjAwMCAgRlgyIERGVSBBZGFwdGVyCisJMjAwMSAgZVVTQiBDb21wYWN0Rmxhc2ggUmVhZGVyCisJNDEwMCAgS2luZ3N1biBTRi02MjAgSW5mcmFyZWQgQWRhcHRlcgorCTQ5NTkgIEtpbmdzdW4gS1MtOTU5IEluZnJhcmVkIEFkYXB0ZXIKKzA3ZDEgIEQtTGluayBTeXN0ZW0KKwkxM2VjICBWdkJ1cyBmb3IgSGVsaXVtIDJ4eAorCTEzZWQgIFZ2QnVzIGZvciBIZWxpdW0gMnh4CisJMTNmMSAgRFNMLTMwMkcgTW9kZW0KKwkxM2YyICBEU0wtNTAyRyBSb3V0ZXIKKwkzYTA3ICBXVUEtMjM0MCBBZGFwdGVyCisJM2EwOCAgcHJlZGF0b3IgQm9vdGxvYWRlciBEb3dubG9hZAorCTNhMGQgIERXQS0xMjAgV2lyZWxlc3MgMTA4RyBBZGFwdGVyCisJM2IwMSAgQWlyUGx1cyBHIERXTC1HMTIyIFdpcmVsZXNzIEFkYXB0ZXIKKwkzYjEwICBSYW5nZUJvb3N0ZXIgTiBBZGFwdGVyCisJM2IxMSAgV2lyZWxlc3MgTiBBZGFwdGVyIERXQS0xMzAKKwkzYzEwICBEV0EgMTYwQSA4MDIuMTFuCisJM2MwMyAgRFdMLUcxMjIgODAyLjExZyBBZGFwdGVyIFtyYWxpbmsgcnQ3M10KKwkzYzA0ICBXVUEtMTM0MAorCTNjMDUgIEVIMTAzIFdpcmVsZXNzIEcgQWRhcHRlcgorCTNjMDcgIFdpcmVsZXNzIEcgRFdBLTExMCBBZGFwdGVyCisJM2MwOSAgRFdBLTE0MCA4MDIuMTFuIEFkYXB0ZXIgW3JhbGluayBydDI4NzBdCisJNTEwMCAgUmVtb3RlIE5ESVMgRGV2aWNlCisJZjEwMSAgREJULTEyMiBCbHVldG9vdGgKKwlmYzAxICBEQlQtMTIwIEJsdWV0b290aCBBZGFwdGVyCiswN2QyICBBcHRpbyBQcm9kdWN0cywgSW5jLgorMDdkMyAgQ3liZXJkYXRhIENvcnAuCiswN2Q3ICBHQ0MgVGVjaG5vbG9naWVzLCBJbmMuCiswN2RhICBBcmFzYW4gQ2hpcCBTeXN0ZW1zCiswN2RlICBEaWFtb25kIE11bHRpbWVkaWEKKwkyODIwICBWQzUwMCBWaWRlbyBDYXB0dXJlIERvbmdsZQorMDdkZiAgRGF2aWQgRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzA3ZTEgIEFtYmllbnQgVGVjaG5vbG9naWVzLCBJbmMuCisJNTIwMSAgVi45MCBNb2RlbQorMDdlMiAgRWxtZWcgR21iSCAmIENvLiwgTHRkCiswN2UzICBQbGFuZXggQ29tbXVuaWNhdGlvbnMsIEluYy4KKzA3ZTQgIE1vdmFkbyBFbnRlcnByaXNlIENvLiwgTHRkCisJMDk2NyAgU0NhcmQgUi9XIENTUi0xNDUKKwkwOTY4ICBTQ2FyZCBSL1cgQ1NSLTE0NQorMDdlNSAgUVBTLCBJbmMuCisJMDVjMiAgSURFLXRvLVVTQjIuMCBQQ0EKKwk1YzAxICBRdWUhIENEUlcKKzA3ZTYgIEFsbGllZCBDYWJsZSBDb3JwLgorMDdlNyAgTWlydm8gVG95cywgSW5jLgorMDdlOCAgTGFic3lzdGVtcworMDdlYSAgSXdhdHN1IEVsZWN0cmljIENvLiwgTHRkCiswN2ViICBEb3VibGUtSCBUZWNobm9sb2d5IENvLiwgTHRkCiswN2VjICBUYWl5byBFbGVjdHJpYyBXaXJlICYgQ2FibGUgQ28uLCBMdGQKKzA3ZWUgIFRvcmV4IFJldGFpbCAoZm9ybWVybHkgTG9nd2FyZSkKKwkwMDAyICBDYXNoIERyYXdlciBJL0YKKzA3ZWYgIFNUU04KKwkwMDAxICBJbnRlcm5ldCBBY2Nlc3MgRGV2aWNlCiswN2Y2ICBDaXJjdWl0IEFzc2VtYmx5IENvcnAuCiswN2Y3ICBDZW50dXJ5IENvcnAuCisJMDAwNSAgU2NhbkxvZ2ljL0NlbnR1cnkgQ29ycG9yYXRpb24gdUFUQQorCTAxMWUgIENlbnR1cnkgVVNCIERpc2sgRW5jbG9zdXJlCiswN2Y5ICBEb3RvcCBUZWNobm9sb2d5LCBJbmMuCiswN2ZhICBEcmF5dGVrCisJMDc3OCAgbWluaVZpZ29yIDEyOCBJU0ROIFRBCisJMTAxMiAgQmVXQU4gQURTTCBVU0IgU1QgKGdyZXkpCisJMTE5NiAgQldJRkktVVNCNTRBUiA4MDIuMTFiZworCWE5MDQgIEJlV0FOIEFEU0wKKwlhOTA1ICBCZVdBTiBBRFNMIFNUCiswN2ZkICBNYXJrIG9mIHRoZSBVbmljb3JuCisJMDAwMCAgRmFzdExhbmUgTUlESSBJbnRlcmZhY2UKKwkwMDAxICBGYXN0TGFuZSBRdWFkIE1JREkgSW50ZXJmYWNlCisJMDAwMiAgTU9UVSBBdWRpbyBmb3IgNjQgYml0CiswN2ZmICBVbmtub3duCisJMDBmZiAgUG9ydGFibGUgSGFyZCBEcml2ZQorMDgwMSAgTWFnLVRlaworCTAwMDIgIE1pbmkgU3dpcGUgUmVhZGVyCiswODAyICBNYWtvIFRlY2hub2xvZ2llcywgTExDCiswODAzICBab29tIFRlbGVwaG9uaWNzLCBJbmMuCisJMTMwMCAgVjkyIEZheG1vZGVtCisJNDMxMCAgV2lyZWxlc3MtRworCTUyNDEgIENhYmxlIE1vZGVtCisJNTU1MSAgRFNMIE1vZGVtCisJOTcwMCAgMjk4NkwgRmF4TW9kZW0KKwk5ODAwICBDYWJsZSBNb2RlbQorCWEzMTIgIFdpcmVsZXNzLUcKKzA4MDkgIEdlbmljb20gVGVjaG5vbG9neSwgSW5jLgorMDgwYSAgRXZlcm11Y2ggVGVjaG5vbG9neSBDby4sIEx0ZAorMDgwYyAgRGF0YWxvZ2ljIFMucC5BLgorCTAzMDAgIEdyeXBob24gRDEyMCBCYXJjb2RlIFNjYW5uZXIKKwkwNDAwICBHcnlwaG9uIEQxMjAgQmFyY29kZSBTY2FubmVyCisJMDUwMCAgR3J5cGhvbiBEMTIwIEJhcmNvZGUgU2Nhbm5lcgorCTA2MDAgIEdyeXBob24gTTEwMCBCYXJjb2RlIFNjYW5uZXIKKzA4MGQgIFRlY28gSW1hZ2UgU3lzdGVtcyBDby4sIEx0ZAorCTAxMDIgIEhlcmN1bGVzIFNjYW5AaG9tZSA0OAorCTAxMDQgIDMuMlNsaW0KKwkwMTEwICBVTUFYIEFzdHJhU2xpbSAxMjAwIFNjYW5uZXIKKzA4MTAgIFBlcnNvbmFsIENvbW11bmljYXRpb24gU3lzdGVtcywgSW5jLgorMDgxMyAgTWF0dGVsLCBJbmMuCisJMDAwMSAgSW50ZWwgUGxheSBRWDMgTWljcm9zY29wZQorCTAwMDIgIER1YWwgTW9kZSBDYW1lcmEgUGx1cworMDgxYSAgTUcgTG9naWMKKwkxMDAwICBEdW8gUGVuIFRhYmxldAorMDgxYiAgSW5kaWdpdGEgQ29ycC4KKwkwNjAwICBTdG9yYWdlIEFkYXB0ZXIKKwkwNjAxICBTdG9yYWdlIEFkYXB0ZXIKKzA4MWMgIE1pcHN5cworMDgxZSAgQWxwaGFTbWFydCwgSW5jLgorCWRmMDAgIEhhbmRoZWxkCiswODIyICBSZXVkbyBDb3JwLgorCTIwMDEgIElSWHByZXNzIEluZnJhcmVkIERldmljZQorMDgyNSAgR0MgUHJvdHJvbmljcworMDgyNiAgRGF0YSBUcmFuc2l0CiswODI3ICBCcm9hZExvZ2ljLCBJbmMuCiswODI4ICBTYXRvIENvcnAuCiswODI5ICBEaXJlY1RWIEJyb2FkYmFuZCwgSW5jLiAoVGVsb2NpdHkpCiswODJkICBIYW5kc3ByaW5nCisJMDEwMCAgVmlzb3IKKwkwMjAwICBUcmVvCisJMDMwMCAgVHJlbyA2MDAKKwkwNDAwICBIYW5kaGVsZAorCTA1MDAgIEhhbmRoZWxkCisJMDYwMCAgSGFuZGhlbGQKKzA4MzAgIFBhbG0sIEluYy4KKwkwMDAxICBtNTAwCisJMDAwMiAgbTUwNQorCTAwMDMgIG01MTUKKwkwMDA0ICBIYW5kaGVsZAorCTAwMDUgIEhhbmRoZWxkCisJMDAwNiAgSGFuZGhlbGQKKwkwMDEwICBIYW5kaGVsZAorCTAwMTEgIEhhbmRoZWxkCisJMDAxMiAgSGFuZGhlbGQKKwkwMDEzICBIYW5kaGVsZAorCTAwMTQgIEhhbmRoZWxkCisJMDAyMCAgaTcwNQorCTAwMjEgIEhhbmRoZWxkCisJMDAyMiAgSGFuZGhlbGQKKwkwMDIzICBIYW5kaGVsZAorCTAwMjQgIEhhbmRoZWxkCisJMDAzMCAgSGFuZGhlbGQKKwkwMDMxICBUdW5nc3RlbiBXCisJMDAzMiAgSGFuZGhlbGQKKwkwMDMzICBIYW5kaGVsZAorCTAwMzQgIEhhbmRoZWxkCisJMDA0MCAgbTEyNQorCTAwNDEgIEhhbmRoZWxkCisJMDA0MiAgSGFuZGhlbGQKKwkwMDQzICBIYW5kaGVsZAorCTAwNDQgIEhhbmRoZWxkCisJMDA1MCAgbTEzMAorCTAwNTEgIEhhbmRoZWxkCisJMDA1MiAgSGFuZGhlbGQKKwkwMDUzICBIYW5kaGVsZAorCTAwNTQgIEhhbmRoZWxkCisJMDA2MCAgVHVuZ3N0ZW4gQy9FL1QvVDIvVDMgLyBaaXJlIDcxCisJMDA2MSAgTGlmZWRyaXZlIC8gVHJlbyA2NTAvNjgwIC8gVHVuc3RlbiBFMi9UNS9UWCAvIFppcmUgMjEvMzEvNzIgLyBaMjIKKwkwMDYyICBIYW5kaGVsZAorCTAwNjMgIEhhbmRoZWxkCisJMDA2NCAgSGFuZGhlbGQKKwkwMDcwICBaaXJlCisJMDA3MSAgSGFuZGhlbGQKKwkwMDcyICBIYW5kaGVsZAorCTAwODAgIFNlcmlhbCBBZGFwdGVyIFtmb3IgUGFsbSBJSUldCisJMDA4MSAgSGFuZGhlbGQKKwkwMDgyICBIYW5kaGVsZAorMDgzMiAgS291d2VsbCBFbGVjdHJvbmljcyBDb3JwLgorCTU4NTAgIENhYmxlCiswODMzICBTb3VyY2VuZXh0IENvcnAuCisJMDEyZSAgS2Vpa2FpRGVud2EgOCB3aXRoIGNoYXJnZXIKKwkwMzlmICBLZWlrYWlEZW53YSA4CiswODM1ICBBY3Rpb24gU3RhciBFbnRlcnByaXNlIENvLiwgTHRkCiswODM5ICBTYW1zdW5nIFRlY2h3aW4gQ28uLCBMdGQKKwkwMDA1ICBEaWdpbWF4IENhbWVyYQorCTAwMDggIERpZ2ltYXggMjMwIENhbWVyYQorCTAwMDkgIERpZ2ltYXggMzQwCisJMDAwYSAgRGlnaW1heCA0MTAKKwkwMDBlICBEaWdpbWF4IDM2MAorCTAwMTAgIERpZ2ltYXggMzAwCisJMTAwMyAgRGlnaW1heCAyMTBTRQorCTEwMDUgIERpZ2ltYXggMjIwCisJMTAwOSAgRGlnaW1heCBWNAorCTEwMTIgIDY1MDAgRG9jdW1lbnQgQ2FtZXJhCisJMTA1OCAgUzczMCBDYW1lcmEKKwkxNTQyICBEaWdpbWF4IDUwIER1bworCTMwMDAgIERpZ2ltYXggMzUgTVAzCiswODNhICBBY2N0b24gVGVjaG5vbG9neSBDb3JwLgorCTEwNDYgIDEwLzEwMCBFdGhlcm5ldCBbcGVnYXN1c10KKwkxMDYwICBIb21lTGluZSBBZGFwdGVyCisJMWY0ZCAgU01DODAxM1dHIEJyb2FkYmFuZCBSZW1vdGUgTkRJUyBEZXZpY2UKKwkzMDQ2ICAxMC8xMDAgU2VyaWVzIEFkYXB0ZXIKKwkzMDYwICAxLzEwLzEwMCBBZGFwdGVyCisJMzUwMSAgMjY2NFcKKwkzNTAyICBXTjM1MDFEIFdpcmVsZXNzIEFkYXB0ZXIKKwkzNTAzICBULVNpbnVzIDExMSBXaXJlbGVzcyBBZGFwdGVyCisJNDUwMSAgVC1TaW51cyAxNTRkYXRhCisJNDUwNSAgU01DV1VTQi1HIDgwMi4xMWJnCisJNTA0NiAgU3BlZWRTdHJlYW0gMTAvMTAwIEV0aGVybmV0IFtwZWdhc3VzXQorCTU1MDEgIFdpcmVsZXNzIEFkYXB0ZXIgMTFnCisJNjUwMCAgQ2FibGUgTW9kZW0KKwk2NjE4ICA4MDIuMTFuIFdpcmVsZXNzIEFkYXB0ZXIKKwk3NTIyICA4MDIuMTFOIFdpcmVsZXNzIEFkYXB0ZXIKKwlhNjE4ICBTTUMgRVogQ29ubmVjdCBOIERyYWZ0IDExbiBXaXJlbGVzcyBBZGFwdGVyCisJYjAwNCAgQ1BXVUUwMDEgVVNCL0V0aGVybmV0IEFkYXB0ZXIKKwliNTIyICBFWiBDb25uZWN0IE4gRHJhZnQgMTFuIFdpcmVsZXNzIFVTQjIuMCBBZGFwdGVyCisJYmIwMSAgQmx1ZUV4cGVydCBCbHVldG9vdGggRGV2aWNlCisJYzAwMyAgODAyLjExYiBXaXJlbGVzcyBBZGFwdGVyCisJYzUwMSAgWm9vbSBXaXJlbGVzcy1HCisJYzU2MSAgODAyLjExYS9nIFdpcmVsZXNzIEFkYXB0ZXIKKwllNTAxICBaRDEyMTFCCisJZTUwNiAgV1VTLTIwMSA4MDIuMTFiZworCWY1MDEgIDgwMi4xMWcgV2lyZWxlc3MgQWRhcHRlcgorCWY1MDIgIDgwMi4xMWcgV2lyZWxlc3MgQWRhcHRlcgorCWY1MjIgIEFyY2FkeWFuIFdONzUxMiA4MDIuMTFuCiswODNmICBHbG9iYWwgVmlsbGFnZQorCWIxMDAgIFRlbGVQb3J0IFYuOTAgRmF4L01vZGVtCiswODQwICBBcmdvc3kgUmVzZWFyY2gsIEluYy4KKwkwMDYwICBTdG9yYWdlIEFkYXB0ZXIgQnJpZGdlIE1vZHVsZQorMDg0MSAgUmlvcG9ydC5jb20sIEluYy4KKwkwMDAxICBSaW8gNTAwCiswODQ0ICBXZWxsYW5kIEluZHVzdHJpYWwgQ28uLCBMdGQKKzA4NDYgIE5ldEdlYXIsIEluYy4KKwkxMDAxICBFQTEwMSAxMCBNYnBzIDEwQkFTRS1UIEV0aGVybmV0IFtLYXdhc2FraSBMU0kgS0w1S0xVU0IxMDFCXQorCTEwMDIgIEV0aGVybmV0CisJMTAyMCAgRkExMDEgRmFzdCBFdGhlcm5ldCBVU0IgMS4xCisJMTA0MCAgRkExMjAgRmFzdCBFdGhlcm5ldCBVU0IgMi4wIFtBc2l4IEFYODgxNzIgLyBBWDg4MTd4XQorCTQxMTAgIE1BMTExKHYxKSA4MDIuMTFiIFdpcmVsZXNzIFtJbnRlcnNpbCBQcmlzbSAzLjBdCisJNDIwMCAgV0cxMjEodjEpIDU0IE1icHMgV2lyZWxlc3MgW0ludGVyc2lsIFByaXNtIEdUXQorCTQyMTAgIFdHMTIxKHYyKSA1NCBNYnBzIFdpcmVsZXNzIFtJbnRlcnNpbCBQcmlzbSBHVF0KKwk0MjIwICBXRzExMSh2MSkgNTQgTWJwcyBXaXJlbGVzcyBbSW50ZXJzaWwgUHJpc201NCBJbnRlcnNpbCAzODg2XQorCTQyMzAgIE1BMTExKHYyKSA4MDIuMTFiIFdpcmVsZXNzIFtTSVMgU0lTIDE2Ml0KKwk0MjQwICBXRzExMXYyIDU0IE1icHMgV2lyZWxlc3MgW1JlYWxUZWsgUlRMODE4N0xdCisJNDI2MCAgV0cxMTF2MyA1NCBNYnBzIFdpcmVsZXNzIFtyZWFsdGVrIFJUTDgxODdCXQorCTQzMDAgIFdHMTExVSBEb3VibGUgMTA4IE1icHMgV2lyZWxlc3MgW0F0aGVyb3MgQVI1MDA0WCAvIEFSNTAwNVVYXQorCTQzMDEgIFdHMTExVSAobm8gZmlybXdhcmUpIERvdWJsZSAxMDggTWJwcyBXaXJlbGVzcyBbQXRoZXJvcyBBUjUwMDRYIC8gQVI1MDA1VVhdCisJNmEwMCAgV0cxMTF2MiA1NCBNYnBzIFdpcmVsZXNzIFtSZWFsVGVrIFJUTDgxODdMXQorCTcxMDAgIFdOMTIxVCBSYW5nZU1heCBOZXh0IFdpcmVsZXNzLU4gW01hcnZlbGwgVG9wRG9nXQorCTkwMDAgIFdOMTExKHYxKSBSYW5nZU1heCBOZXh0IFdpcmVsZXNzIFtNYXJ2ZWxsIFRvcERvZ10KKwk5MDAxICBXTjExMSB2MiA4MDIuMTFuCisJOTAxMCAgV05EQTMxMDAgODAyLjExbgorCWEwMDEgIFBBMTAxIDEwIE1icHMgSFBOQSBIb21lIFBob25lbGluZSBSSi0xCiswODRkICBNaW50b24gT3B0aWMgSW5kdXN0cnkgQ28uLCBJbmMuCisJMDAwMSAgSmVub3B0aWsgSkQ4MDBpCisJMDAwMyAgUy1DYW0gRjUvRC1MaW5rIERTQy0zNTAgRGlnaXRhbCBDYW1lcmEKKwkwMDExICBBcmd1cyBEQzM1MDAgRGlnaXRhbCBDYW1lcmEKKwkwMDE0ICBQcmFrdGljYSBEQyAzMgorCTAwMTkgIFByYWt0aWNhIERQaXgzMDAwCisJMDAyNSAgUHJha3RpY2EgREMgNjAKKwkxMDAxICBTY2FuSGV4IFNYLTM1ZAorMDg0ZSAgS0IgR2VhcgorCTAwMDEgIEtCR2VhciBKYW1DYW0KKwkxMDAyICBQYWJsbyBUYWJsZXQKKzA4NGYgIEVtcGVnCisJMDAwMSAgRW1wZWctQ2FyIE1hcmsgSS9JSSBQbGF5ZXIKKzA4NTAgIEZhc3QgUG9pbnQgVGVjaG5vbG9naWVzLCBJbmMuCiswODUxICBNYWNyb25peCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCisJMTU0MiAgU2lQaXggQmxpbmsKKwkxNTQzICBNYXhlbGwgV1MzMCBTbGltIERpZ2l0YWwgQ2FtZXJhCisJYTE2OCAgTVhJQworMDg1MiAgQ1NFTQorMDg1MyAgVG9wcmUgQ29ycG9yYXRpb24KKwkwMTAwICBISEtCIFByb2Zlc3Npb25hbAorMDg1NCAgQWN0aXZlV2lyZSwgSW5jLgorCTAxMDAgIEkvTyBCb2FyZAorCTAxMDEgIEkvTyBCb2FyZCwgcmV2MQorMDg1NiAgQiZCIEVsZWN0cm9uaWNzCisJYWMwMSAgdUxpbmtzIFVTT1RMNCBSUzQyMi80ODUgQWRhcHRlcgorMDg1OCAgSGl0YWNoaSBNYXhlbGwsIEx0ZAorCTMxMDIgIEJsdWV0b290aCBEZXZpY2UKKwlmZmZmICBNYXhlbGwgbW9kdWxlIHdpdGggQmx1ZUNvcmUgaW4gREZVIG1vZGUKKzA4NTkgIE1pbm9sdGEgU3lzdGVtcyBMYWJvcmF0b3J5LCBJbmMuCiswODVhICBYaXJjb20KKwkwMDAxICBQb3J0c3RhdGlvbiBEdWFsIFNlcmlhbCBQb3J0CisJMDAwMyAgUG9ydHN0YXRpb24gUGFyYWxsZXIgUG9ydAorCTAwMDggIEV0aGVybmV0CisJMDAwOSAgRXRoZXJuZXQKKwkwMDBiICBQb3J0c3RhdGlvbiBEdWFsIFBTLzIgUG9ydAorCTAwMjEgIDEgcG9ydCB0byBTZXJpYWwgQ29udmVydGVyCisJMDAyMiAgUGFyYWxsZWwgUG9ydAorCTAwMjMgIDIgcG9ydCB0byBTZXJpYWwgQ29udmVydGVyCisJMDAyNCAgUGFyYWxsZWwgUG9ydAorCTAwMjcgIDEgcG9ydCB0byBTZXJpYWwgQ29udmVydGVyCisJMDAyOCAgUG9ydEdlYXIgdG8gU0NTSSBDb252ZXJ0ZXIKKwkwMDMyICBQb3J0U3RhdGlvbiBTQ1NJIE1vZHVsZQorCTAwM2MgIEJsdWV0b290aCBBZGFwdGVyCisJMDI5OSAgQ29sb3J2aXNpb24sIEluYy4gTW9uaXRvciBTcHlkZXIKKwk4MDIxICAxIHBvcnQgdG8gU2VyaWFsCisJODAyMyAgMiBwb3J0IHRvIFNlcmlhbAorCTgwMjcgIFBHU0RCOSBTZXJpYWwgUG9ydAorMDg1YyAgQ29sb3JWaXNpb24sIEluYy4KKwkwMjAwICBNb25pdG9yIFNweWRlcgorMDg2MiAgVGVsZXRyb2wgU3lzdGVtcywgSW5jLgorMDg2MyAgRmlsYW5ldCBDb3JwLgorMDg2NCAgTmV0R2VhciwgSW5jLgorCTQxMDAgIE1BMTAxIDgwMi4xMWIgQWRhcHRlcgorCTQxMDIgIE1BMTAxIDgwMi4xMWIgQWRhcHRlcgorMDg2NyAgRGF0YSBUcmFuc2xhdGlvbiwgSW5jLgorCTk4MTIgIEVDT04gRGF0YSBhY3F1aXNpdGlvbiB1bml0CisJOTgxNiAgRFQ5ODE2IEVDT04gZGF0YSBhY3F1aXNpdGlvbiBtb2R1bGUKKwk5ODM2ICBEVDk4MzYgZGF0YSBhY3F1aXNpdGlvbiBjYXJkCiswODZhICBFbWFnaWMgU29mdC0gdW5kIEhhcmR3YXJlIEdtYkgKKwkwMDAxICBVbml0b3I4CisJMDAwMiAgQU1UOAorCTAwMDMgIE1UNAorMDg2YyAgRGVUZVdlIC0gRGV1dHNjaGUgVGVsZXBob253ZXJrZSBBRyAmIENvLgorCTEwMDEgIEV1bWV4IDUwNFBDIElTRE4gVEEKKwkxMDAyICBFdW1leCA1MDRQQyAoRmxhc2hMb2FkKQorCTEwMDMgIFRBMzMgSVNETiBUQQorCTEwMDQgIFRBMzMgKEZsYXNoTG9hZCkKKwkxMDA1ICBFdW1leCA2MDRQQyBIb21lTmV0CisJMTAwNiAgRXVtZXggNjA0UEMgSG9tZU5ldCAoRmxhc2hMb2FkKQorCTEwMDcgIEV1bWV4IDcwNFBDIERTTAorCTEwMDggIEV1bWV4IDcwNFBDIERTTCAoRmxhc2hMb2FkKQorCTEwMDkgIEV1bWV4IDcyNFBDIERTTAorCTEwMGEgIEV1bWV4IDcyNFBDIERTTCAoRmxhc2hMb2FkKQorCTEwMGIgIE9wZW5Db20gMzAKKwkxMDBjICBPcGVuQ29tIDMwIChGbGFzaExvYWQpCisJMTAwZCAgQmVlVGVsIEhvbWUgMTAwCisJMTAwZSAgQmVlVGVsIEhvbWUgMTAwIChGbGFzaExvYWQpCisJMTAxMSAgVVNCMkRFQ1QKKwkxMDEyICBVU0IyREVDVCAoRmxhc2hMb2FkKQorCTEwMTMgIEV1bWV4IDcwNFBDIExBTgorCTEwMTQgIEV1bWV4IDcwNFBDIExBTiAoRmxhc2hMb2FkKQorCTEwMjEgIE9wZW5Db20gNDAKKwkxMDIyICBPcGVuQ29tIDQwIChGbGFzaExvYWQpCisJMTAyMyAgT3BlbkNvbSA0NQorCTEwMjQgIE9wZW5Db20gNDUgKEZsYXNoTG9hZCkKKwkxMDI1ICBTaW51cyA2MSBkYXRhCisJMTAyOSAgZGVjdCBCT1gKKwkxMDJjICBFdW1leCA2MDRQQyBIb21lTmV0IFtGbGFzaExvYWRdCisJMTAzMCAgRXVtZXggNzA0UEMgRFNMIFtGbGFzaExvYWRdCisJMTAzMiAgT3BlbkNvbSA0MCBbRmxhc2hMb2FkXQorCTEwMzMgIE9wZW5Db20gMzAgcGx1cworCTEwMzQgIE9wZW5Db20gMzAgcGx1cyAoRmxhc2hMb2FkKQorCTEwNTUgIEV1bWV4IDIyMCBJU0ROIFRBCisJMjAwMCAgT3BlbkNvbSAxMDAwCiswODZlICBTeXN0ZW0gVEFMS1MsIEluYy4KKwkxOTIwICBTR0MtWDJVTAorMDg2ZiAgTUVDIElNRVgsIEluYy4KKzA4NzAgIE1ldHJpY29tCisJMDAwMSAgUmljb2NoZXQgR1MKKzA4NzEgIFNhbkRpc2ssIEluYy4KKwkwMDAxICBTRERSLTAxIENvbXBhY3QgRmxhc2ggUmVhZGVyCisJMDAwMiAgU0REUi0zMSBDb21wYWN0IEZsYXNoIFJlYWRlcgorCTAwMDUgIFNERFItMDUgQ29tcGFjdCBGbGFzaCBSZWFkZXIKKzA4NzMgIFhwZWVkLCBJbmMuCiswODc0ICBBLVRlYyBTdWJzeXN0ZW0sIEluYy4KKzA4NzkgIENvbXRyb2wgQ29ycC4KKzA4N2MgIEFkZXNzby9LYnRlayBBbWVyaWNhLCBJbmMuCiswODdkICBKYXRvbiBDb3JwLgorCTU3MDQgIEV0aGVybmV0CiswODdlICBGdWppdHN1IENvbXB1dGVyIFByb2R1Y3RzIG9mIEFtZXJpY2EKKzA4N2YgIFZpcnR1YWwgSVAgR3JvdXAsIEluYy4KKzA4ODAgIEFQVCBUZWNobm9sb2dpZXMsIEluYy4KKzA4ODMgIFJlY29yZGluZyBJbmR1c3RyeSBBc3NvY2lhdGlvbiBvZiBBbWVyaWNhIChSSUFBKQorMDg4NSAgQm9jYSBSZXNlYXJjaCwgSW5jLgorMDg4NiAgWEFDIEF1dG9tYXRpb24gQ29ycC4KKwkwNjMwICBJbnRlbCBQQyBDYW1lcmEgQ1M2MzAKKzA4ODcgIEhhbm5zdGFyIEVsZWN0cm9uaWNzIENvcnAuCiswODhiICBNYXNzV29ya3MsIEluYy4KKwk0OTQ0ICBNYXNzV29ya3MgSUQtNzUgVG91Y2hTY3JlZW4KKzA4OTIgIERpb0dyYXBoeSwgSW5jLgorCTAxMDEgIFNtYXJ0ZGlvIFJlYWRlci9Xcml0ZXIKKzA4OWMgIFVuaXRlZCBUZWNobm9sb2dpZXMgUmVzZWFyY2ggQ250ci4KKzA4OWQgIEljcm9uIFRlY2hub2xvZ2llcyBDb3JwLgorMDg5ZSAgTlNUIENvLiwgTHRkCiswODlmICBQcmltZXggQWVyb3NwYWNlIENvLgorMDhhNSAgZTksIEluYy4KKzA4YTggIEFuZHJlYSBFbGVjdHJvbmljcworMDhhZSAgTWFjYWxseSAoTWFjZSBHcm91cCwgSW5jLikKKzA4YjQgIFNvcmVuc29uIFZpc2lvbiwgSW5jLgorMDhiOCAgSi4gR29yZG9uIEVsZWN0cm9uaWMgRGVzaWduLCBJbmMuCisJMDFmNCAgVVNCU0lNTTEKKzA4YjkgIFJhZGlvU2hhY2sgQ29ycC4gKFRhbmR5KQorMDhiYiAgVGV4YXMgSW5zdHJ1bWVudHMgSmFwYW4KKwkyNzAyICBTcGVha2VycworCTI5MDAgIFBDTTI5MDAgQXVkaW8gQ29kZWMKKwkyOTA0ICBQQ00yOTA0IEF1ZGlvIENvZGVjCiswOGJkICBDaXRpemVuIFdhdGNoIENvLiwgTHRkCisJMTEwMCAgWDEtVVNCIEZsb3BweQorMDhjMyAgUHJlY2lzZSBCaW9tZXRyaWNzCisJMDAwMSAgMTAwIFNDCisJMDAwMiAgMTAwIEEKKwkwMDAzICAxMDAgU0MgQmlvS2V5Ym9hcmQKKwkwMDA2ICAxMDAgQSBCaW9LZXlib2FyZAorCTAxMDAgIDEwMCBNQyBJU1AKKwkwMTAxICAxMDAgTUMgRmluZ2VyUHJpbnQgYW5kIFNtYXJ0Q2FyZCBSZWFkZXIKKwkwMzAwICAxMDAgQVgKKwkwNDAwICAxMDAgU0MKKwkwNDAxICAxNTAgTUMKKwkwNDAyICAyMDAgTUMgRmluZ2VyUHJpbnQgYW5kIFNtYXJ0Q2FyZCBSZWFkZXIKKwkwNDA0ICAxMDAgU0MgVXBncmFkZQorCTA0MDUgIDE1MCBNQyBVcGdyYWRlCisJMDQwNiAgMTAwIE1DIFVwZ3JhZGUKKzA4YzQgIFByb3hpbSwgSW5jLgorCTAyZjIgIEZhcmFsbG9uIEhvbWUgUGhvbmVsaW5lIEFkYXB0ZXIKKzA4YzcgIEtleSBOaWNlIEVudGVycHJpc2UgQ28uLCBMdGQKKzA4YzggIDJXaXJlLCBJbmMuCiswOGM5ICBOaXBwb24gVGVsZWdyYXBoIGFuZCBUZWxlcGhvbmUgQ29ycC4KKzA4Y2EgIEFpcHRlayBJbnRlcm5hdGlvbmFsLCBJbmMuCisJMDAxMCAgVGFibGV0CisJMDAyMCAgQVBULTYwMDBVIFRhYmxldAorCTAwMjEgIEFQVC0yIFRhYmxldAorCTAwMjIgIFRhYmxldAorCTAwMjMgIFRhYmxldAorCTAwMjQgIFRhYmxldAorCTAxMDAgIFBlbiBEcml2ZQorCTAxMDIgIER1YWxDYW0KKwkwMTAzICBQb2NrZXQgRFYgRGlnaXRhbCBDYW1lcmEKKwkwMTA0ICBQb2NrZXQgRFZJSQorCTAxMDUgIE1lZ2EgRFYoRGlzaykKKwkwMTA2ICBQb2NrZXQgRFYzMTAwKworCTAxMDcgIFBvY2tldCBEVjMxMDAKKwkwMTA5ICBOaXNpcyBEVjQgRGlnaXRhbCBDYW1lcmEKKwkwMTBhICBUcnVzdCA3MzhBViBMQ0QgUFYgTWFzcyBTdG9yYWdlCisJMDExMSAgUGVuQ2FtIFZHQSBQbHVzCisJMjAwOCAgTWluaSBQZW5DYW0gMgorCTIwMTAgIFBvY2tldCBDQU0gMyBNZWdhICh3ZWJjYW0pCisJMjAxMSAgUG9ja2V0IENBTSAzIE1lZ2EgKHN0b3JhZ2UpCisJMjAxNiAgUG9ja2V0Q2FtIDIgTWVnYQorCTIwMTggIFBlbmNhbSBTRCAyTQorCTIwMjAgIFNsaW0gMzAwMEYKKwkyMDIyICBTbGltIDMyMDAKKwkyMDI0ICBQb2NrZXQgRFYzNTAwCisJMjAyOCAgUG9ja2V0IENhbTRNCisJMjA0MCAgUG9ja2V0IERWNDEwME0KKwkyMDQyICBQb2NrZXQgRFY1MTAwTSBDb21wb3NpdGUgRGV2aWNlCisJMjA0MyAgUG9ja2V0IERWNTEwME0gKERpc2spCisJMjA2MCAgUG9ja2V0IERWNTMwMAorMDhjZCAgSnVlIEhzdW4gSW5kLiBDb3JwLgorMDhjZSAgTG9uZyBXZWxsIEVsZWN0cm9uaWNzIENvcnAuCiswOGNmICBQcm9kdWN0aXZpdHkgRW5oYW5jZW1lbnQgUHJvZHVjdHMKKzA4ZDEgIHNtYXJ0QnJpZGdlcywgSW5jLgorCTAwMDEgIHNtYXJ0TklDIEV0aGVybmV0IFtjYXRjXQorCTAwMDMgIHNtYXJ0TklDIDIgUG5QIEV0aGVybmV0CiswOGQzICBWaXJ0dWFsIEluaworMDhkNCAgRnVqaXRzdSBTaWVtZW5zIENvbXB1dGVycworCTAwMDkgIFNDUiBTbWFydENhcmQgUmVhZGVyCiswOGQ5ICBJbmNyZW1lbnQgUCBDb3JwLgorMDhkZCAgQmlsbGlvbnRvbiBTeXN0ZW1zLCBJbmMuCisJMDExMiAgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwkwMTEzICBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTA5ODYgIFVTQi0xMDBOIEV0aGVybmV0IFtwZWdhc3VzXQorCTA5ODcgIFVTQkxQLTEwMCBIb21lUE5BIEV0aGVybmV0IFtwZWdhc3VzXQorCTA5ODggIFVTQkVMLTEwMCBFdGhlcm5ldCBbcGVnYXN1c10KKwkxOTg2ICAxMC8xMDAgTEFOIEFkYXB0ZXIKKwkyMTAzICBEVkItVCBUVi1UdW5lciBDYXJkLVIKKwk4NTExICBVU0JFLTEwMCBFdGhlcm5ldCBbcGVnYXN1czJdCisJOTBmZiAgVVNCMkFSIEV0aGVybmV0CiswOGRlICA/Pz8KKwk3YTAxICA4MDIuMTFiIEFkYXB0ZXIKKzA4ZGYgIFNweXJ1cywgSW5jLgorCTAwMDEgIFJvc2V0dGEgVG9rZW4gVjEKKwkwMDAyICBSb3NldHRhIFRva2VuIFYyCisJMDAwMyAgUm9zZXR0YSBUb2tlbiBWMworCTBhMDAgIEx5bmtzIEludGVyZmFjZQorMDhlMyAgT2xpdGVjLCBJbmMuCisJMDAwMiAgVVNCLVJTMjMyIEJyaWRnZQorCTAxMDAgIEludGVyZmFjZSBBRFNMCisJMDEwMSAgSW50ZXJmYWNlIEFEU0wKKwkwMTAyICBBRFNMCisJMDMwMSAgUk5JUworMDhlNCAgUGlvbmVlciBDb3JwLgorMDhlNSAgTGl0cm9uaWMKKzA4ZTYgIEdlbXBsdXMKKwkwMDAxICBHZW1QQy1Ub3VjaCA0MzAKKwkwNDMwICBHZW1QQzQzMCBTbWFydENhcmQgUmVhZGVyCisJMDQzMiAgR2VtUEM0MzIgU21hcnRDYXJkIFJlYWRlcgorCTA0MzUgIEdlbVBDNDM1IFNtYXJ0Q2FyZCBSZWFkZXIKKwkwNDM3ICBHZW1QQzQzMyBTTCBTbWFydENhcmQgUmVhZGVyCisJMTM1OSAgVUEgU0VDVVJFIFNUT1JBR0UgVE9LRU4KKwkyMjAyICBHZW0gZS1TZWFsIFBybyBUb2tlbgorCTM0MzcgIEdlbVBDIFR3aW4gU21hcnRDYXJkIFJlYWRlcgorCTM0MzggIEdlbVBDIEtleSBTbWFydENhcmQgUmVhZGVyCisJMzQ3OCAgUGluUGFkIFNtYXJ0IENhcmQgUmVhZGVyCisJNDQzMyAgR2VtUEM0MzMtU3dhcAorCTU1MDEgIEdlbVByb3gtUFUgQ29udGFjdGxlc3MgU21hcnQgQ2FyZCBSZWFkZXIKKwlhY2UwICBVQSBIWUJSSUQgVE9LRU4KKzA4ZTcgIFBhbi1JbnRlcm5hdGlvbmFsIFdpcmUgJiBDYWJsZQorMDhlOCAgSW50ZWdyYXRlZCBNZW1vcnkgTG9naWMKKzA4ZTkgIEV4dGVuZGVkIFN5c3RlbXMsIEluYy4KKwkwMTAwICBYVE5EQWNjZXNzIElyREEgRG9uZ2xlCiswOGVhICBFcmljc3NvbiwgSW5jLiwgQmx1ZSBSaWRnZSBMYWJzCisJMDBjOSAgQURTTCBNb2RlbSBITTEyMGRwIExvYWRlcgorCTAwY2EgIEFEU0wgV0FOIE1vZGVtIEhNMTIwZHAKKwkwMGNlICBITTIzMGQgVmlydHVhbCBCdXMgZm9yIEhlbGl1bQorCWFiYmEgIFVTQiBEcml2ZXIgZm9yIEJsdWV0b290aCBXaXJlbGVzcyBUZWNobm9sb2d5CisJYWJiYiAgQmx1ZXRvb3RoIERldmljZSBpbiBERlUgU3RhdGUKKzA4ZWMgIE0tU3lzdGVtcyBGbGFzaCBEaXNrIFBpb25lZXJzCisJMDAwMSAgVHJhdmVsRHJpdmUgMkMKKwkwMDAyICBUcmF2ZWxEcml2ZSAyQworCTAwMDUgIFRyYXZlbERyaXZlIDJDCisJMDAwOCAgVHJhdmVsRHJpdmUgMkMKKwkwMDEwICBEaXNrT25LZXkKKwkwMDExICBEaXNrT25LZXkKKwkwMDEyICBUcmF2ZWxEcml2ZSAyQworCTAwMTQgIFRyYXZlbERyaXZlIDJDCisJMDAxNSAgS2luZ3N0b24gRGF0YVRyYXZlbGVyIEVMSVRFCisJMDAxNiAgS2luZ3N0b24gRGF0YVRyYXZlbGVyIFUzCisJMDAyMCAgVHJhdmVsRHJpdmUKKwkwMDIxICBUcmF2ZWxEcml2ZQorCTAwMjIgIFRyYXZlbERyaXZlCisJMDAyMyAgVHJhdmVsRHJpdmUKKwkwMDI0ICBUcmF2ZWxEcml2ZQorCTAwMjUgIFRyYXZlbERyaXZlCisJMDAyNiAgVHJhdmVsRHJpdmUKKwkwMDI3ICBUcmF2ZWxEcml2ZQorCTAwMjggIFRyYXZlbERyaXZlCisJMDAyOSAgVHJhdmVsRHJpdmUKKwkwMDMwICBUcmF2ZWxEcml2ZQorCTA4MjIgIFRyYXZlbERyaXZlIDJDCisJMDgzMiAgSGktU3BlZWQgTWFzcyBTdG9yYWdlIERldmljZQorCTA5OTggIEtpbmdzdG9uIERhdGEgVHJhdmVsZXIyLjAgRGlzayBEcml2ZXIKKwkwOTk5ICBLaW5nc3RvbiBEYXRhIFRyYXZlbGVyMi4wIERpc2sgRHJpdmVyCisJMTAwMCAgVHJhdmVsRHJpdmUgMkMKKwkyMDAwICBUcmF2ZWxEcml2ZSAyQworCTIwMzggIFRyYXZlbERyaXZlCisJMjAzOSAgVHJhdmVsRHJpdmUKKwkyMDRhICBUcmF2ZWxEcml2ZQorCTIwNGIgIFRyYXZlbERyaXZlCiswOGVkICBNZWRpYVRlayBJbmMuCisJMDAwMiAgQ0VDVCBNODAwIG1lbW9yeSBjYXJkCiswOGVlICBDQ1NJL0hlc3NvCiswOGYwICBDb3JleCBUZWNobm9sb2dpZXMKKzA4ZjEgIENUSSBFbGVjdHJvbmljcyBDb3JwLgorMDhmNSAgU3lzVGVjIENvLiwgTHRkCiswOGY2ICBMb2dpYyAzIEludGVybmF0aW9uYWwsIEx0ZAorMDhmNyAgVmVybmllcgorCTAwMDEgIExhYlBybworCTAwMDIgIEVhc3lUZW1wCiswOGY4ICBLZWVuIFRvcCBJbnRlcm5hdGlvbmFsIEVudGVycHJpc2UgQ28uLCBMdGQKKzA4ZjkgIFdpcHJvIFRlY2hub2xvZ2llcworMDhmYSAgQ2FlcmUKKzA4ZmIgIFNvY2tldCBDb21tdW5pY2F0aW9ucworMDhmYyAgU2ljb24gQ2FibGUgVGVjaG5vbG9neSBDby4sIEx0ZAorMDhmZCAgRGlnaWFuc3dlciBBL1MKKwkwMDAxICBCbHVldG9vdGggRGV2aWNlCiswOGZmICBBdXRoZW5UZWMsIEluYy4KKwkxNjAwICBBRVMxNjAwCisJMTYxMCAgQUVTMTYwMAorCTI1MDAgIEFFUzI1MDEKKwkyNTAxICBBRVMyNTAxCisJMjUwMiAgQUVTMjUwMQorCTI1MDMgIEFFUzI1MDEKKwkyNTA0ICBBRVMyNTAxCisJMjUwNSAgQUVTMjUwMQorCTI1MDYgIEFFUzI1MDEKKwkyNTA3ICBBRVMyNTAxCisJMjUwOCAgQUVTMjUwMQorCTI1MDkgIEFFUzI1MDEKKwkyNTBhICBBRVMyNTAxCisJMjUwYiAgQUVTMjUwMQorCTI1MGMgIEFFUzI1MDEKKwkyNTBkICBBRVMyNTAxCisJMjUwZSAgQUVTMjUwMQorCTI1MGYgIEFFUzI1MDEKKwkyNTEwICBBRVMyNTEwCisJMjU4MCAgQUVTMjUwMSBGaW5nZXJwcmludCBTZW5zb3IKKwkyNTg4ICBBRVMyNTAxCisJMjU4OSAgQUVTMjUwMQorCTI1OGEgIEFFUzI1MDEKKwkyNThiICBBRVMyNTAxCisJMjU4YyAgQUVTMjUwMQorCTI1OGQgIEFFUzI1MDEKKwkyNThlICBBRVMyNTAxCisJMjU4ZiAgQUVTMjUwMQorCTM0MDAgIEFFUzM0MDAgVHJ1ZVByaW50IFNlbnNvcgorCTM0MDEgIEFFUzM0MDAgU2Vuc29yCisJMzQwMiAgQUVTMzQwMCBTZW5zb3IKKwkzNDAzICBBRVMzNDAwIFNlbnNvcgorCTM0MDQgIEFFUzM0MDAgVHJ1ZVByaW50IFNlbnNvcgorCTM0MDUgIEFFUzM0MDAgVHJ1ZVByaW50IFNlbnNvcgorCTM0MDYgIEFFUzM0MDAgVHJ1ZVByaW50IFNlbnNvcgorCTM0MDcgIEFFUzM0MDAgVHJ1ZVByaW50IFNlbnNvcgorCTQ5MDIgIEJpb01WIHdpdGggVHJ1ZVByaW50IEFFUzM1MDAKKwk0OTAzICBCaW9NViB3aXRoIFRydWVQcmludCBBRVMzNDAwCisJNTUwMCAgQUVTNDAwMAorCTU1MDEgIEFFUzQwMDAgVHJ1ZVByaW50IFNlbnNvcgorCTU1MDMgIEFFUzQwMDAgVHJ1ZVByaW50IFNlbnNvcgorCTU1MDUgIEFFUzQwMDAgVHJ1ZVByaW50IFNlbnNvcgorCTU1MDcgIEFFUzQwMDAgVHJ1ZVByaW50IFNlbnNvcgorCTU1ZmYgIEFFUzQwMDAgVHJ1ZVByaW50IFNlbnNvci4KKwk1NzAwICBBRVMzNTAwIEZpbmdlcnByaW50IFJlYWRlcgorCTU3MDEgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MDIgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MDMgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MDQgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MDUgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MDYgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MDcgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MTAgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MTEgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MTIgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MTMgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MTQgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MTUgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MTYgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MTcgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MzAgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MzEgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MzIgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MzMgIEFFUzM1MDAgVHJ1ZVByaW50IFNlbnNvcgorCTU3MzQgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MzUgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MzYgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCTU3MzcgIEFFUzM1MDAtQlogVHJ1ZVByaW50IFNlbnNvcgorCWFmZTMgIEZpbmdlckxvYyBTZW5zb3IgTW9kdWxlIChBbmNob3IpCisJYWZlNCAgRmluZ2VyTG9jIFNlbnNvciBNb2R1bGUgKEFuY2hvcikKKwlhZmU1ICBGaW5nZXJMb2MgU2Vuc29yIE1vZHVsZSAoQW5jaG9yKQorCWFmZTYgIEZpbmdlckxvYyBTZW5zb3IgTW9kdWxlIChBbmNob3IpCisJZmZmZCAgQUVTMjUxMCBTZW5zb3IgKFVTQiBFbXVsYXRvcikKKwlmZmZmICBTZW5zb3IgKEVtdWxhdG9yKQorMDkwMCAgUGlubmFjbGUgU3lzdGVtcywgSW5jLgorMDkwMSAgVlNUIFRlY2hub2xvZ2llcworCTAwMDEgIEhhcmQgRHJpdmUgQWRhcHRlciAoVFBQKQorCTAwMDIgIFNpZ21hRHJpdmUgQWRhcHRlciAoVFBQKQorMDkwNiAgRmFyYWRheSBUZWNobm9sb2d5IENvcnAuCiswOTA5ICBBdWRpby1UZWNobmljYSBDb3JwLgorMDkwYSAgVHJ1bXBpb24gTWljcm9lbGVjdHJvbmljcywgSW5jLgorCTEwMDEgIFQzMzUyMCBGbGFzaCBDYXJkIENvbnRyb2xsZXIKKwkxMTAwICBDb21vdHJvbiBDMzMxMCBNUDMgcGxheWVyCisJMTIwMCAgTVAzIHBsYXllcgorCTE1NDAgIERpZ2l0ZXggQ29udGFpbmVyIEZsYXNoIERpc2sKKzA5MGIgIE5ldXJvc21pdGgKKzA5MGMgIEZlaXlhIFRlY2hub2xvZ3kgQ29ycC4KKwkxMDAwICBGbGFzaCBEcml2ZQorCTExMzIgIDUtaW4tMSBDYXJkIFJlYWRlcgorCWIzNzEgIFNpbGljb24gTW90aW9uIFNNMzcxIENhbWVyYQorMDkwZCAgTXVsdGlwb3J0IENvbXB1dGVyIFZlcnRyaWVicyBHbWJICiswOTBlICBTaGluaW5nIFRlY2hub2xvZ3ksIEluYy4KKzA5MGYgIEZ1aml0c3UgRGV2aWNlcywgSW5jLgorMDkxMCAgQWxhdGlvbiBTeXN0ZW1zLCBJbmMuCiswOTExICBQaGlsaXBzIFNwZWVjaCBQcm9jZXNzaW5nCisJMjUxMiAgU3BlZWNoTWlrZSBQcm8KKzA5MTIgIFZvcXVldHRlLCBJbmMuCiswOTE1ICBHbG9iZVNwYW4sIEluYy4KKwkwMDAxICBEU0wgTW9kZW0KKwkwMDAyICBBRFNMIEFUTSBNb2RlbQorCTAwMDUgIExBTiBNb2RlbQorCTIwMDAgIDgwMi4xMSBBZGFwdGVyCisJMjAwMiAgODAyLjExIEFkYXB0ZXIKKwk4MDAwICBBRFNMIExBTiBNb2RlbQorCTgwMDUgIERTTC0zMDJHIE1vZGVtCisJODEwMSAgQURTTCBXQU4gTW9kZW0KKwk4MTAyICBEU0wtMjAwIEFEU0wgTW9kZW0KKwk4MTAzICBEU0wtMjAwIEFEU0wgTW9kZW0KKwk4MTA0ICBEU0wtMjAwIE1vZGVtCisJODQwMCAgRFNMIE1vZGVtCisJODQwMSAgRFNMIE1vZGVtCisJODQwMiAgRFNMIE1vZGVtCisJODUwMCAgRFNMIE1vZGVtCisJODUwMSAgRFNMIE1vZGVtCiswOTE3ICBTbWFydERpc2sgQ29ycC4KKwkwMDAxICBlRmlsbSBSZWFkZXItMTEgU00vQ0YKKwkwMDAyICBlRmlsbSBSZWFkZXItMTEgU00KKwkwMDAzICBlRmlsbSBSZWFkZXItMTEgQ0YKKwkwMjAwICBGaXJlRmx5CisJMDIwMSAgRmlyZUxpdGUKKwkwMjAyICBTVE9SQUdFIEFEQVBURVIgKEZpcmVQb3dlcikKKwkwMjA0ICBGbGFzaFRyYXggU3RvcmFnZQorCTAyMDUgIFNUT1JBR0UgQURBUFRFUiAoQ3Jvc3NGaXJlKQorCTAyMDYgIEZpcmVGbHkgMjBHIEhERAorCTAyMDcgIEZpcmVMaXRlCisJMDIwZiAgU1RPUkFHRSBBREFQVEVSIChGaXJlTGl0ZSkKKwlkYTAxICBlRmlsbSBSZWFkZXItMTEgVGVzdAorCWZmZmYgIGVGaWxtIFJlYWRlci0xMSAoQ2xhc3MvUERSKQorMDkxOSAgVGlnZXIgRWxlY3Ryb25pY3MKKwkwMTAwICBGYXN0IEZsaWNrcyBEaWdpdGFsIENhbWVyYQorMDkxZSAgR2FybWluIEludGVybmF0aW9uYWwKKwkwMDAzICBHUFNtYXAgKHZhcmlvdXMgbW9kZWxzKQorCTAwMDQgIGlRdWUgMzYwMAorCTAyMDAgIERhdGEgQ2FyZCBQcm9ncmFtbWVyIChpbnN0YWxsKQorCTEyMDAgIERhdGEgQ2FyZCBQcm9ncmFtbWVyCisJMjI5NSAgQ29sb3JhZG8gMzAwCiswOTIwICBFY2hlbG9uIENvLgorCTc1MDAgIE5ldHdvcmsgSW50ZXJmYWNlCiswOTIxICBHb0h1YnMsIEluYy4KKwkxMDAxICBHb0NPTTIzMiBTZXJpYWwKKzA5MjIgIER5bW8tQ29TdGFyIENvcnAuCisJMDAwNyAgTGFiZWxXcml0ZXIgMzMwCisJMDAwOSAgTGFiZWxXcml0ZXIgMzEwCiswOTIzICBJQyBNZWRpYSBDb3JwLgorCTAxMGYgIFNJSUcgTW9iaWxlQ2FtCiswOTI0ICBYZXJveAorCTIzZGQgIERvY3VQcmludCBNNzYwIChYNzYwX1VTQikKKwkzY2U4ICBQaGFzZXIgMzQyOCBQcmludGVyCisJM2Q1YiAgUGhhc2VyIDYxMTVNRlAgVFdBSU4gU2Nhbm5lcgorCTQyMGYgIFdvcmtDZW50cmUgUEUyMjAgU2VyaWVzCisJNDIxZiAgTTIwIFNjYW5uZXIKKwk0MjNiICBQcmludGluZyBTdXBwb3J0CisJZmZlZiAgV29ya0NlbnRlciBNMTUKKwlmZmZiICBEb2N1UHJpbnQgTTc1MCAoWDc1MF9VU0IpCiswOTI1ICBMYWtldmlldyBSZXNlYXJjaAorCTAwMDUgIEdhbXRlYy4sTHRkIFNtYXJ0Sm95IFBMVVMgQWRhcHRlcgorCTgxMDEgIFBoaWRnZXRzLCBJbmMuLCAxLU1vdG9yIFBoaWRnZXRTZXJ2byB2Mi4wCisJODEwNCAgUGhpZGdldHMsIEluYy4sIDQtTW90b3IgUGhpZGdldFNlcnZvIHYyLjAKKwk4ODAwICBXaXNlR3JvdXAgTHRkLCBNUC04ODAwIFF1YWQgSm95cGFkCisJODg2NiAgV2lzZUdyb3VwIEx0ZCwgTVAtODg2NiBEdWFsIEpveXBhZAorMDkyNyAgU3VtbXVzLCBMdGQKKzA5MjggIE94Zm9yZCBTZW1pY29uZHVjdG9yLCBMdGQKKzA5MjkgIEFtZXJpY2FuIEJpb21ldHJpYyBDby4KKzA5MmEgIFRvc2hpYmEgSW5mb3JtYXRpb24gJiBJbmR1c3RyaWFsIFN5cy4gQW5kIFNlcnZpY2VzCiswOTJiICBTZW5hIFRlY2hub2xvZ2llcywgSW5jLgorMDkyZiAgTm9ydGhlcm4gRW1iZWRkZWQgU2NpZW5jZS9DQVZORVgKKwkwMDA0ICBKVEFHLTQKKwkwMDA1ICBKVEFHLTUKKzA5MzAgIFRvc2hpYmEgQ29ycC4KKwkwMDA5ICBHaWdhYmVhdCBGL1ggKEhERCBhdWRpbyBwbGF5ZXIpCisJMDAwYyAgR2lnYWJlYXQgRiAobXRwKQorCTAwMTAgIEdpZ2FiZWF0IFMgKG10cCkKKwkwMzAxICBQQ1gxMTAwVSBDYWJsZSBNb2RlbSAoV0RNKQorCTAzMDIgIFBDWDIwMDAgQ2FibGUgTW9kZW0gKFdETSkKKwkwMzA1ICBDYWJsZSBNb2RlbSBQQ1gzMDAwCisJMDMwNyAgQ2FibGUgTW9kZW0gUENYMjUwMAorCTAzMDggIFBDWDIyMDAgQ2FibGUgTW9kZW0gKFdETSkKKwkwMzA5ICBQQ1g1MDAwIENhYmxlIE1vZGVtIChXRE0pCisJMDMwYiAgQ2FibGUgTW9kZW0gUENYMjYwMAorCTA1MDEgIEJsdWV0b290aCBDb250cm9sbGVyCisJMDUwMiAgSW50ZWdyYXRlZCBCbHVldG9vdGgKKwkwNTAzICBCbHVldG9vdGggQ29udHJvbGxlcgorCTA1MDUgIEludGVncmF0ZWQgQmx1ZXRvb3RoCisJMDUwNiAgSW50ZWdyYXRlZCBCbHVldG9vdGgKKwkwNTA3ICBCbHVldG9vdGggQWRhcHRlcgorCTA1MDggIEludGVncmF0ZWQgQmx1ZXRvb3RoIEhDSQorCTA1MDkgIEJUIEVEUiBEb25nbGUKKwkwNzA2ICBQb2NrZXRQQyBlNzQwCisJMDcwNyAgUG9ja2V0IFBDIGUzMzAgU2VyaWVzCisJMDcwOCAgUG9ja2V0IFBDIGUzNTDCoFNlcmllcworCTA3MDkgIFBvY2tldCBQQyBlNzUwIFNlcmllcworCTA3MGEgIFBvY2tldCBQQyBlNDAwIFNlcmllcworCTA3MGIgIFBvY2tldCBQQyBlODAwIFNlcmllcworCTBiMDUgIFBYMTIyMEUtMUcyNSBFeHRlcm5hbCBoYXJkIGRyaXZlCisJMTMwMCAgV2lyZWxlc3MgQnJvYWRiYW5kIChDRE1BIEVWLURPKSBTTS1CdXMgTWluaWNhcmQgU3RhdHVzIFBvcnQKKwkxMzAxICBXaXJlbGVzcyBCcm9hZGJhbmQgKENETUEgRVYtRE8pIE1pbmljYXJkIFN0YXR1cyBQb3J0CisJMTMwMiAgV2lyZWxlc3MgQnJvYWRiYW5kICgzRyBIU0RQQSkgU00tQnVzIE1pbmljYXJkIFN0YXR1cyBQb3J0CisJMTMwMyAgV2lyZWxlc3MgQnJvYWRiYW5kICgzRyBIU0RQQSkgTWluaWNhcmQgU3RhdHVzIFBvcnQKKwkxMzA4ICBCcm9hZGJhbmQgKDNHIEhTRFBBKSBTTS1CdXMgTWluaWNhcmQgRGlhZ25vc3RpY3MgUG9ydAorCTY0MmYgIFRyYXZlbERyaXZlCisJNjUwNiAgVHJhdmVsRHJpdmUgMkMKKwk2NTA3ICBUcmF2ZWxEcml2ZSAyQworCTY1MDggIFRyYXZlbERyaXZlIDJDCisJNjUwOSAgVHJhdmVsRHJpdmUgMkMKKwk2NTEwICBUcmF2ZWxEcml2ZSAyQworCTY1MTcgIFRyYXZlbERyaXZlIDJDCisJNjUxOCAgVHJhdmVsRHJpdmUgMkMKKwk2NTE5ICBLaW5nc3RvbiBEYXRhVHJhdmVsZXIgMi4wIFVTQiBTdGljaworCTY1MWEgIFRyYXZlbERyaXZlIDJDCisJNjUxYiAgVHJhdmVsRHJpdmUgMkMKKwk2NTFjICBUcmF2ZWxEcml2ZSAyQworCTY1MWQgIFRyYXZlbERyaXZlIDJDCisJNjUxZSAgVHJhdmVsRHJpdmUgMkMKKwk2NTFmICBUcmF2ZWxEcml2ZSAyQworCTY1MjAgIFRyYXZlbERyaXZlIDJDCisJNjUyMSAgVHJhdmVsRHJpdmUgMkMKKwk2NTIyICBUcmF2ZWxEcml2ZSAyQworCTY1MjMgIFRyYXZlbERyaXZlCisJNjUyNCAgVHJhdmVsRHJpdmUKKwk2NTI1ICBUcmF2ZWxEcml2ZQorCTY1MjYgIFRyYXZlbERyaXZlCisJNjUyNyAgVHJhdmVsRHJpdmUKKwk2NTI4ICBUcmF2ZWxEcml2ZQorCTY1MjkgIFRyYXZlbERyaXZlCisJNjUyYSAgVHJhdmVsRHJpdmUKKwk2NTJiICBUcmF2ZWxEcml2ZQorCTY1MmMgIFRyYXZlbERyaXZlCisJNjUyZCAgVHJhdmVsRHJpdmUKKwk2NTJmICBUcmF2ZWxEcml2ZQorCTY1MzAgIFRyYXZlbERyaXZlCisJNjUzMSAgVHJhdmVsRHJpdmUKKwk2NTMyICAyNTZNIFN0aWNrCisJNjUzMyAgNTEyTSBTdGljaworCTY1MzQgIFRyYXZlbERyaXZlCisJNjUzYyAgS2luZ3N0b24gRGF0YVRyYXZlbGVyIDIuMCBTdGljayAoNTEyTSkKKwk2NTNkICBLaW5nc3RvbiBEYXRhVHJhdmVsZXIgMi4wIFN0aWNrICgxR0IpCisJNjUzZSAgRmxhc2ggTWVtb3J5CisJNjU0MCAgVHJhbnNNZW1vcnkgRmxhc2ggTWVtb3J5CisJNjU0NCAgS2luZ3N0b24gRGF0YVRyYXZlbGVyIDIuMCBTdGljayAoMkdCKQorCTY1NDUgIEtpbmdzdG9uIERhdGFUcmF2ZWxlciAyLjAgU3RpY2sgKDRHQikgLyBQTlkgQXR0YWNoZSA0R0IgU3RpY2sKKzA5MzEgIEhhcm1vbmljIERhdGEgU3lzdGVtcywgTHRkCiswOTMyICBDcmVzY2VudGVjIENvcnAuCisJMDMwMCAgVmlkZW9BZHZhbnRhZ2UKKwkwMzAyICBTeW50ZWsgREMtMTEyWAorCTAzMjAgIFZpZGVvQWR2YW50YWdlCisJMTEwMCAgVmlkZW8gRW5oYW1jZW1lbnQgRGV2aWNlCisJMTExMiAgVmVvIFdlYiBDYW1lcmEKKwlhMzExICBWaWRlbyBFbmhhbmNlbWVudCBEZXZpY2UKKzA5MzMgIFF1YW50dW0gQ29ycC4KKzA5MzQgIE5ldGNvbSBTeXN0ZW1zCiswOTM5ICBMdW1iZXJnLCBJbmMuCiswOTNhICBQaXhhcnQgSW1hZ2luZywgSW5jLgorCTAwMDcgIENNT1MgMTAwSy1SIFJldi4gMS45MAorCTAxMGUgIERpZ2l0YWwgY2FtZXJhLCBDRDMwMk4vRWx0YSBNZWRpQCBkaWdpLWNhbS9IRS01MDFBCisJMDEwZiAgQXJndXMgREMtMTYxMC9EQy0xNjIwL0VtcHJleCBQQ0QzNjAwL1BoaWxpcHMgUDQ0NDE3QiBrZXljaGFpbiBjYW1lcmEvUHJlY2lzaW9uIE1pbmksTW9kZWwgSEE1MTNBL1Zpdml0YXIgVml2aWNhbSA1NQorCTAyMGYgIEJ1bGxldCBMaW5lIFBob3RvIFZpZXdlcgorCTA1MGYgIE1hcnMtU2VtaSBQYy1DYW1lcmEKKwkyNDYwICBRLVRFQyBXRUJDQU0gMTAwCisJMjQ2OCAgQ2FtbWFlc3RybyAyLjVEVS9YLUVZRS9Pcml0ZSBTQy0xMjAvSUNHZWFyIFRyYXZlbENhbS9FYXN5IFNuYXAgU25ha2UgRXllIFdlYmNhbQorCTI0NzAgIFNvQyBQQy1DYW1lcmEKKwkyNDcxICBTb0MgUEMtQ2FtZXJhCisJMjUwMCAgVVNCIE9wdGljYWwgTW91c2UKKwkyNTEwICBIYW1hIE9wdGljYWwgTW91c2UKKwkyNjAwICBUeXBob29uIEVhc3ljYW0gVVNCIDMzMEsgKG5ld2VyKS9UeXBob29uIEVhc3ljYW0gVVNCIDIuMCBWR0EgMS4zTS9TYW5zdW4gU04tNTA4CisJMjYwMSAgU1BDIDYxME5DIExhcHRvcCBDYW1lcmEKKwkyNjAzICBQQUM3MzEyIENhbWVyYQorCTI2MDggIFBBQzczMTEgVHJ1c3QgV0ItMzMwMHAKKwkyNjBlICBQQUM3MzExIEdpZ2F3YXJlIFZHQSBQQyBDYW1lcmE6VHJ1c3QgV0ItMzM1MHA6U0lHTUEgY2FtIDIzNTAKKwkyNjBmICBQQUM3MzExIFNuYWtlQ2FtCisJMjYyNCAgV2ViY2FtCiswOTNiICBQbGV4dG9yIENvcnAuCisJMDAxMCAgU3RvcmFnZSBBZGFwdGVyCisJMDAxMSAgUGxleFdyaXRlciA0MC8xMi80MFUKKwkwMDQyICBQWC03MTJVRiBEVkQgUlcKKwlhMDAyICBDb252ZXJ0WCBNNDAyVSBYTE9BREVSCisJYTAwMyAgQ29udmVydFggQVYxMDBVIEEvViBDYXB0dXJlIEF1ZGlvCisJYTAwNCAgQ29udmVydFggVFY0MDJVIFhMT0FERVIKKwlhMDA1ICBLV29ybGQgRU1QIEF1ZGlvIERldmljZQorCWExMDIgIENvbnZlcnRYIE00MDJVIEEvViBDYXB0dXJlCisJYTEwNCAgQ29udmVydFggUFgtVFY0MDJVL05BCiswOTNjICBJbnRyZXBpZCBDb250cm9sIFN5c3RlbXMsIEluYy4KKwkwNjAxICBWYWx1ZUNBTgorCTA3MDEgIE5lb1ZJIEJsdWUgdmVoaWNsZSBidXMgaW50ZXJmYWNlCiswOTNkICBJbm5vU3luYywgSW5jLgorMDkzZSAgSi5TLlQuIE1mZy4gQ28uLCBMdGQKKzA5M2YgIE9seW1waWEgVGVsZWNvbSBWZXJ0cmllYnMgR21iSAorMDk0MCAgSmFwYW4gU3RvcmFnZSBCYXR0ZXJ5IENvLiwgTHRkCiswOTQxICBQaG90b2JpdCBDb3JwLgorMDk0MiAgaTJHby5jb20sIExMQworMDk0MyAgSENMIFRlY2hub2xvZ2llcyBJbmRpYSBQcml2YXRlLCBMdGQKKzA5NDQgIEtPUkcsIEluYy4KKzA5NDUgIFBhc2NvIFNjaWVudGlmaWMKKzA5NDggIEtyb25hdWVyIG11c2ljIGluIGRpZ2l0YWwKKwkwMzAxICBVU0IgUHJvICgyNC80OCkKKwkwMzAyICBVU0IgUHJvICgyNC85NiBwbGF5YmFjaykKKwkwMzAzICBVU0IgUHJvICgyNC85NiByZWNvcmQpCisJMDMwNCAgVVNCIFBybyAoMTYvNDgpCisJMTEwNSAgVVNCIE9uZQorMDk0YiAgTGlua3VwIFN5c3RlbXMgQ29ycC4KKzA5NGQgIENhYmxlIFRlbGV2aXNpb24gTGFib3JhdG9yaWVzCiswOTRmICBZYW5vCisJMDEwMSAgVTY0ME1PLTAzCisJMDVmYyAgTUVUQUxXRUFSLUhERAorMDk1MSAgS2luZ3N0b24gVGVjaG5vbG9neQorCTAwMDggIEV0aGVybmV0CisJMDAwYSAgS05VMTAxVFggMTAwYmFzZVRYIEV0aGVybmV0CisJMTYwMCAgRGF0YVRyYXZlbGVyIElJIFBlbiBEcml2ZQorCTE2MDEgIERhdGFUcmF2ZWxlciBJSSsgUGVuIERyaXZlCisJMTYwMiAgRGF0YVRyYXZlbGVyIE1pbmkKKwkxNjAzICBEYXRhVHJhdmVsZXIgMUdCLzJHQiBQZW4gRHJpdmUKKwkxNjA3ICBEYXRhVHJhdmVsZXIgMTAwCisJMTYxMyAgRGF0YVRyYXZlbGVyIDhHQiBQZW4gRHJpdmUKKzA5NTQgIFJQTSBTeXN0ZW1zIENvcnAuCiswOTU1ICBOVmlkaWEgQ29ycC4KKzA5NTYgIEJTcXVhcmUgQ29ycC4KKzA5NTcgIEFnaWxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCisJMDIwMCAgRS1WaWRlbyBEQy0zNTAgQ2FtZXJhCisJMDIwMiAgRS1WaWRlbyBEQy0zNTAgQ2FtZXJhCiswOTU4ICBDb21wdUxpbmsgUmVzZWFyY2gsIEluYy4KKzA5NTkgIENvbG9nbmUgQ2hpcCBBRworCTJiZDAgIEludGVsbGlnZW50IElTRE4gKFZlci4gMy42MC4wNCkKKzA5NWEgIFBvcnRzbWl0aAorCTMwMDMgIEV4cHJlc3MgRXRoZXJuZXQKKzA5NWIgIE1lZGlhbG9naWMgQ29ycC4KKzA5NWMgIEstVGVjIEVsZWN0cm9uaWNzCiswOTVkICBQb2x5Y29tLCBJbmMuCisJMDAwMSAgUG9seWNvbSBWaWFWaWRlbworMDk2NyAgQWNlciAoPz8pCisJMDIwNCAgV2FycExpbmsgODAyLjExYiBBZGFwdGVyCiswOTY4ICBDYXRhbHlzdCBFbnRlcnByaXNlcywgSW5jLgorMDk2ZSAgRmVpdGlhbiBUZWNobm9sb2dpZXMsIEluYy4KKwkwODAyICBlUGFzczIwMDAgKEcmRCBTVEFSQ09TIFNQSyAyLjQpCiswOTcxICBHcmV0YWctTWFjYmV0aCBBRworMDk3MyAgU2NobHVtYmVyZ2VyCisJMDAwMSAgZS1nYXRlIFNtYXJ0IENhcmQKKzA5NzQgIERhdGFncmFwaGl4LCBhIGJ1c2luZXNzIHVuaXQgb2YgQW5hY29tcAorMDk3NSAgT0wnRSBDb21tdW5pY2F0aW9ucywgSW5jLgorMDk3NiAgQWRpcm9uZGFjayBXaXJlICYgQ2FibGUKKzA5NzcgIExpZ2h0c3VyZiBUZWNobm9sb2dpZXMKKzA5NzggIEJlY2tob2ZmIEdtYkgKKzA5NzkgIEplaWxpbiBUZWNobm9sb2d5IENvcnAuLCBMdGQKKwkwMjI0ICBKTDIwMDVBIFRveSBDYW1lcmEKKwkwMjI2ICBKTDIwMDVBIFRveSBDYW1lcmEKKzA5N2EgIE1pbmRzIEF0IFdvcmsgTExDCisJMDAwMSAgRGlnaXRhbCBXYWxsZXQKKzA5N2IgIEtudWRzZW4gRW5naW5lZXJpbmcsIEx0ZAorMDk3YyAgTWFydW5peCBDby4sIEx0ZAorMDk3ZCAgUm9zdW4gVGVjaG5vbG9naWVzLCBJbmMuCiswOTdmICBCYXJ1biBFbGVjdHJvbmljcyBDby4sIEx0ZAorMDk4MSAgT2FrIFRlY2hub2xvZ3ksIEx0ZAorMDk4NCAgQXByaWNvcm4KKwkwMjAwICBIYXJkIERyaXZlIFN0b3JhZ2UgKFRQUCkKKzA5ODUgIGNhYiBQcm9kdWt0dGVjaG5payBHbWJIICYgQ28gS0cKKwkwMGEzICBBMy8yMDAgb3IgQTMvMzAwIExhYmVsIFByaW50ZXIKKzA5ODYgIE1hdHN1c2hpdGEgRWxlY3RyaWMgV29ya3MsIEx0ZC4KKzA5OGMgIFZpdGFuYSBDb3JwLgorMDk4ZCAgSU5EZXNpZ24KKzA5OGUgIEludGVncmF0ZWQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LCBJbmMuCiswOThmICBLZW53b29kIFRNSSBDb3JwLgorMDk5MyAgR2Vtc3RhciBlQm9vayBHcm91cCwgTHRkCisJMDAwMSAgUkVCMTEwMCBlQm9vayBSZWFkZXIKKwkwMDAyICBlQm9vaworMDk5NiAgSW50ZWdyYXRlZCBUZWxlY29tIEV4cHJlc3MsIEluYy4KKzA5OWEgIFppcHB5IFRlY2hub2xvZ3kgQ29ycC4KKwk2MTBjICBFTC02MTAgU3VwZXIgTWluaSBFbGVjdHJvbiBsdW1pbmVzY2VudCBLZXlib2FyZAorMDlhMyAgUGFpckdhaW4gVGVjaG5vbG9naWVzCiswOWE0ICBDb250ZWNoIFJlc2VhcmNoLCBJbmMuCiswOWE1ICBWQ09OIFRlbGVjb21tdW5pY2F0aW9ucworMDlhNiAgUG9pbmNoaXBzCisJODAwMSAgTWFzcyBTdG9yYWdlIERldmljZQorMDlhNyAgRGF0YSBUcmFuc21pc3Npb24gTmV0d29yayBDb3JwLgorMDlhOCAgTGluIFNoaXVuZyBFbnRlcnByaXNlIENvLiwgTHRkCiswOWE5ICBTbWFydCBDYXJkIFRlY2hub2xvZ2llcyBDby4sIEx0ZAorMDlhYSAgSW50ZXJzaWwgQ29ycC4KKwkxMDAwICBQcmlzbSBHVCA4MDIuMTFiL2cgQWRhcHRlcgorCTM2NDIgIFByaXNtIDIueCA4MDIuMTFiIEFkYXB0ZXIKKzA5YWIgIEphcGFuIENhc2ggTWFjaGluZSBDby4sIEx0ZC4KKzA5YWUgIFRyaXBwIExpdGUKKzA5YjIgIEZyYW5rbGluIEVsZWN0cm9uaWMgUHVibGlzaGVycywgSW5jLgorCTAwMDEgIGVCb29rbWFuIFBhbG0gQ29tcHV0ZXIKKzA5YjMgIEFsdGl1cyBTb2x1dGlvbnMsIEluYy4KKzA5YjQgIE1EUyBUZWxlcGhvbmUgU3lzdGVtcworMDliNSAgQ2VsbHRyaXggVGVjaG5vbG9neSBDby4sIEx0ZAorMDliYyAgR3J1bmRpZworCTAwMDIgIE1QYXh4IE1QMTUwIE1QMyBQbGF5ZXIKKzA5YmUgIE15U21hcnQuQ29tCisJMDAwMSAgTXlTbWFydFBhZAorMDliZiAgQXVlcnN3YWxkIEdtYkggJiBDby4gS0cKKwkwMGMwICBDT01wYWN0IDIxMDQgSVNETiBQQlgKKwkwMGRiICBDT01wYWN0IDQ0MTAvMjIwNiBJU0ROIElTRE4KKwkwMGYxICBDT01mb3J0IFN5c3RlbSBUZWxlcGhvbmVzCiswOWMxICBBcnJpcyBJbnRlcmFjdGl2ZSBMTEMKKwkxMzM3ICBUT1VDSFNUT05FIERFVklDRQorMDljMiAgTmlzY2EgQ29ycC4KKzA5YzMgIEFjdGl2Q2FyZCwgSW5jLgorCTAwMDcgIFJlYWRlciBWMgorCTAwMDggIFNtYXJ0Q2FyZCBSZWFkZXIKKzA5YzQgIEFDVGlTWVMgQ29ycC4KKwkwMDExICBBQ1QtSVIyMDAwVSBJckRBIERvbmdsZQorMDljNSAgTWVtb3J5IENvcnAuCiswOWNjICBXb3JrYml0IENvcnAuCisJMDQwNCAgQkFGTyBVU0ItQVRBL0FUQVBJIEJyaWRnZSBDb250cm9sbGVyCiswOWNkICBQc2lvbiBEYWNvbSBIb21lIE5ldHdvcmtzLCBMdGQKKzA5Y2UgIENpdHkgRWxlY3Ryb25pY3MsIEx0ZAorMDljZiAgRWxlY3Ryb25pY3MgVGVzdGluZyBDZW50ZXIsIFRhaXdhbgorMDlkMSAgTmVvTWFnaWMsIEluYy4KKzA5ZDIgIFZyZWVsaW4gRW5naW5lZXJpbmcsIEluYy4KKzA5ZDMgIENvbSBPbmUKKwkwMDAxICBJU0ROIFRBCiswOWQ3ICBOb3ZhdGVsIFdpcmVsZXNzCisJMDEwMCAgTm92QXRlbCBGbGV4UGFjayBHUFMgcmVjZWl2ZXIKKzA5ZDkgIEtSRiBUZWNoLCBMdGQKKzA5ZGEgIEE0IFRlY2ggQ28uLCBMdGQKKwkwMDA2ICBPcHRpY2FsIE1vdXNlIFdPUC0zNSAvIFRydXN0IDQ1MEwgT3B0aWNhbCBNb3VzZQorCTAwMGEgIFBvcnQgTW91c2UKKwkwMDE4ICBUcnVzdCBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlCisJMDAxYSAgV2lyZWxlc3MgTW91c2UgJiBSWE0tMTUgUmVjZWl2ZXIKKwkwMDJhICBXaXJlbGVzcyBPcHRpY2FsIE1vdXNlIE5CLTMwCiswOWRiICBNZWFzdXJlbWVudCBDb21wdXRpbmcgQ29ycC4KKwkwMDc1ICBNaW5pTGFiIDEwMDgKKwkwMDc2ICBQTUQtMTAyNAorCTAwN2EgIFBNRC0xMjA4TFMKKwkwMDgxICBVU0ItMTYxNkZTCisJMDA4MiAgVVNCLTEyMDhGUworCTAwODggIFVTQi0xNjE2RlMgaW50ZXJuYWwgaHViCiswOWRjICBBaW1leCBDb3JwLgorMDlkZCAgRmVsbG93ZXMsIEluYy4KKzA5ZGYgIEFkZG9uaWNzIFRlY2hub2xvZ2llcyBDb3JwLgorMDllMSAgSW50ZWxsb24gQ29ycC4KKwk1MTIxICBNaWNyb0xpbmsgZExBTgorMDllNSAgSm8tRGFuIEludGVybmF0aW9uYWwsIEluYy4KKzA5ZTYgIFNpbHV0aWEsIEluYy4KKzA5ZTcgIFJlYWwgM0QsIEluYy4KKzA5ZTggIEFLQUkgIFByb2Zlc3Npb25hbCBNLkkuIENvcnAuCiswOWU5ICBDaGVuLVNvdXJjZSwgSW5jLgorMDllYiAgSU0gTmV0d29ya3MsIEluYy4KKwk0MzMxICBpUmh5dGhtIFR1bmVyIFJlbW90ZQorMDllZiAgWGl0ZWwKKwkwMTAxICBNRC1Qb3J0IERHMiBNaW5pRGlzYyBJbnRlcmZhY2UKKzA5ZjUgIEFyZXNDb20KKwkwMTY4ICBOZXR3b3JrIEFkYXB0ZXIKKwkwMTg4ICBMQU4gQWRhcHRlcgorCTA4NTAgIEFkYXB0ZXIKKzA5ZjYgIFJvY2tldENoaXBzLCBJbmMuCiswOWY3ICBFZHUtU2NpZW5jZSAoSC5LLiksIEx0ZAorMDlmOCAgU29mdENvbm5leCBUZWNobm9sb2dpZXMsIEluYy4KKzA5ZjkgIEJheSBBc3NvY2lhdGVzCiswOWZhICBNdGVrIFZpc2lvbgorMDlmYiAgQWx0ZXJhCiswOWZmICBHYWluIFRlY2hub2xvZ3kgQ29ycC4KKzBhMDAgIExpcXVpZCBBdWRpbworMGEwMSAgVmlBLCBJbmMuCiswYTA3ICBPbnRyYWsgQ29udHJvbCBTeXN0ZW1zIEluYy4KKwkwMDY0ICBBRFUxMDAgRGF0YSBBY3F1aXNpdGlvbiBJbnRlcmZhY2UKKwkwMGM4ICBBRFUyMDAgUmVsYXkgSS9PIEludGVyZmFjZQorCTAwZDAgIEFEVTIwOCBEYXRhIEFjcXVpc2l0aW9uIEludGVyZmFjZQorMGEwYiAgQ3liZXggQ29tcHV0ZXIgUHJvZHVjdHMgQ28uCiswYTExICBYZW50ZWMsIEluYy4KKzBhMTIgIENhbWJyaWRnZSBTaWxpY29uIFJhZGlvLCBMdGQKKwkwMDAxICBCbHVldG9vdGggRG9uZ2xlIChIQ0kgbW9kZSkKKwkwMDAyICBGcm9udGxpbmUgVGVzdCBFcXVpcG1lbnQgQmx1ZXRvb3RoIERldmljZQorCTAwMDMgIE5hbm9zaXJhCisJMDAwNCAgTmFub3NpcmEgV0hRTCBSZWZlcmVuY2UgUmFkaW8KKwkwMDA1ICBOYW5vc2lyYS1NdWx0aW1lZGlhCisJMDAwNiAgTmFub3NpcmEtTXVsdGltZWRpYSBXSFFMIFJlZmVyZW5jZSBSYWRpbworCTAwMDcgIE5hbm9zaXJhMy1ST00KKwkwMDA4ICBOYW5vc2lyYTMtUk9NCisJMDAwOSAgTmFub3NpcmE0LUVEUiBXSFFMIFJlZmVyZW5jZSBSYWRpbworCTAwMGEgIE5hbm9zaXJhNC1FRFItUk9NCisJMDAwYiAgTmFub3NpcmE1LVJPTQorCTAwNDMgIEJsdWV0b290aCBEZXZpY2UKKwkwMTAwICBDYXNpcmEgd2l0aCBCbHVlQ29yZTItRXh0ZXJuYWwgTW9kdWxlCisJMDEwMSAgQ2FzaXJhIHdpdGggQmx1ZUNvcmUyLUZsYXNoIE1vZHVsZQorCTAxMDIgIENhc2lyYSB3aXRoIEJsdWVDb3JlMy1NdWx0aW1lZGlhIE1vZHVsZQorCTAxMDMgIENhc2lyYSB3aXRoIEJsdWVDb3JlMy1GbGFzaCBNb2R1bGUKKwkwMTA0ICBDYXNpcmEgd2l0aCBCbHVlQ29yZTQtRXh0ZXJuYWwgTW9kdWxlCisJMDEwNSAgQ2FzaXJhIHdpdGggQmx1ZUNvcmU0LU11bHRpbWVkaWEgTW9kdWxlCisJMTAwMCAgQmx1ZXRvb3RoIERvbmdsZSAoSElEIHByb3h5IG1vZGUpCisJMTAxMCAgQmx1ZXRvb3RoIERldmljZQorCTEwMTEgIEJsdWV0b290aCBEZXZpY2UKKwkxMDEyICBCbHVldG9vdGggRGV2aWNlCisJZmZmZiAgVVNCIEJsdWV0b290aCBEZXZpY2UgaW4gREZVIFN0YXRlCiswYTEzICBUZWxlYnl0ZSwgSW5jLgorMGExNCAgU3BhY2VsYWJzIE1lZGljYWwsIEluYy4KKzBhMTUgIFNjYWxhciBDb3JwLgorMGExNiAgVHJlayBUZWNobm9sb2d5IChTKSBQVEUsIEx0ZAorCTExMTEgIFRodW1iRHJpdmUKKwk4ODg4ICBJQk0gVVNCIE1lbW9yeSBLZXkKKwk5OTg4ICBUcmVrMjAwMCBURC1HMgorMGExNyAgUGVudGF4IENvcnAuCisJMDAwNCAgT3B0aW8gMzMwCisJMDAwNiAgT3B0aW8gUworCTAwMDcgIE9wdGlvIDU1MAorCTAwMDkgIE9wdGlvIDMzV1IKKwkwMDBhICBPcHRpbyA1NTUKKwkwMDBjICBPcHRpbyA0M1dSIChtYXNzIHN0b3JhZ2UgbW9kZSkKKwkwMDBkICBPcHRpbyA0M1dSCisJMDAxNSAgT3B0aW8gUzQwL1M1aQorCTAwM2IgIE9wdGlvIDUwIChtYXNzIHN0b3JhZ2UgbW9kZSkKKwkwMDNkICBPcHRpbyBTNTUKKwkwMDQzICAqaXN0IERMCisJMDA0NyAgT3B0aW8gUzYwCisJMDA1MiAgT3B0aW8gNjAgRGlnaXRhbCBDYW1lcmEKKwkwMDZlICBLMTBECisJMDA3MCAgSzEwMEQKKwkwMGE3ICBPcHRpbyBFNTAKKwkxMDAxICBFSTIwMDAgQ2FtZXJhIHBvd2VyZWQgYnkgRGlnaXRhIQorMGExOCAgSGVpZGVsYmVyZ2VyIERydWNrbWFzY2hpbmVuIEFHCiswYTE5ICBIdWEgR2VuZyBUZWNobm9sb2dpZXMsIEluYy4KKzBhMjEgIE1lZHRyb25pYyBQaHlzaW8gQ29udHJvbCBDb3JwLgorMGEyMiAgQ2VudHVyeSBTZW1pY29uZHVjdG9yIFVTQSwgSW5jLgorMGEyYyAgQUstTW9kdWwtQnVzIENvbXB1dGVyIEdtYkgKKwkwMDA4ICBHUElPIFBvcnRzCiswYTM0ICBURzMgRWxlY3Ryb25pY3MsIEluYy4KKwkwMTEwICBEZWNrIDgyLWtleSBiYWNrbGl0IGtleWJvYXJkCiswYTM5ICBHaWxhdCBTYXRlbGxpdGUgTmV0d29ya3MsIEx0ZAorMGEzYSAgUGVudGFNZWRpYSBDby4sIEx0ZAorCTAxNjMgIEtOLVc1MTBVIDEuMCBXaXJlbGVzcyBMQU4gQWRhcHRlcgorMGEzYyAgTlRUIERvQ29NbywgSW5jLgorMGEzZCAgVmFybyBWaXNpb24KKzBhM2YgIFN3aXNzb25pYyBBRworMGE0MyAgQm9jYSBTeXN0ZW1zLCBJbmMuCiswYTQ2ICBEYXZpY29tIFNlbWljb25kdWN0b3IsIEluYy4KKwkwMjY4ICBTVDI2OAorCTY2ODggIFpUNjY4OCBGYXN0IEV0aGVybmV0IEFkYXB0ZXIKKwk5NjAxICBETTk2MDEgRmFzdCBFdGhlcm5ldCBBZGFwdGVyCiswYTQ3ICBIaXJvc2UgRWxlY3RyaWMKKzBhNDggIEkvTyBJbnRlcmNvbm5lY3QKKwkzMjMzICBNdWx0aW1lZGlhIENhcmQgUmVhZGVyCisJMzIzOSAgTXVsdGltZWRpYSBDYXJkIFJlYWRlcgorCTMyNTggIERhbmUgRWxlYyB6TWF0ZSBTRCBSZWFkZXIKKwkzMjU5ICBEYW5lIEVsZWMgek1hdGUgQ0YgUmVhZGVyCisJNTAwMCAgTWVkaWFHZWFyIHhELVNNCisJNTAwYSAgTWFzcyBTdG9yYWdlIERldmljZQorCTUwMGYgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk1MDEwICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNTAxMSAgTWFzcyBTdG9yYWdlIERldmljZQorCTUwMTQgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk1MDIwICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNTAyMSAgTWFzcyBTdG9yYWdlIERldmljZQorCTUwMjIgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwk1MDIzICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNTAyNCAgTWFzcyBTdG9yYWdlIERldmljZQorCTUwMjUgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKzBhNGIgIEZ1aml0c3UgTWVkaWEgRGV2aWNlcywgTHRkCiswYTRjICBDb21wdXRleCBDby4sIEx0ZAorMGE0ZCAgRXZvbHV0aW9uIEVsZWN0cm9uaWNzLCBMdGQKKwkwMDY0ICBNSy0yMjUgRHJpdmVyCisJMDA2NSAgTUstMjI1QyBEcml2ZXIKKwkwMDY2ICBNSy0yMjVDIERyaXZlcgorCTAwNjcgIE1LLTQyNUMgRHJpdmVyCisJMDA3OCAgTUstMzcgRHJpdmVyCisJMDA3OSAgTUstMzdDIERyaXZlcgorCTAwN2EgIE1LLTM3QyBEcml2ZXIKKwkwMDhjICBUZXJyYVRlYyBNSURJIE1BU1RFUgorCTAwOGQgIE1LLTI0OUMgRHJpdmVyCisJMDA4ZSAgTUstMjQ5QyBNSURJIEtleWJvYXJkCisJMDA4ZiAgTUstNDQ5QyBEcml2ZXIKKwkwMDkwICBLZXlzdGF0aW9uIDQ5ZSBEcml2ZXIKKwkwMDkxICBLZXlzdGF0aW9uIDYxZXMgRHJpdmVyCisJMDBhMCAgTUstMzYxIERyaXZlcgorCTAwYTEgIE1LLTM2MUMgRHJpdmVyCisJMDBhMiAgTUstMzYxQyBEcml2ZXIKKwkwMGEzICBNSy00NjFDIE1JREkgS2V5Ym9hcmQKKwkwMGI1ICBLZXlzdGF0aW9uIFBybyA4OCBEcml2ZXIKKwkwMGQyICBFLUtleXMgRHJpdmVyCisJMDBmMCAgVUMtMTYgRHJpdmVyCisJMDBmMSAgWC1TZXNzaW9uIERyaXZlcgorCTAwZjUgIFVDLTMzZSBNSURJIENvbnRyb2xsZXIKKzBhNGUgIFN0ZWluYmVyZyBTb2Z0LXVuZCBIYXJkd2FyZSBHbWJICiswYTRmICBMaXR0b24gU3lzdGVtcywgSW5jLgorMGE1MCAgTWltYWtpIEVuZ2luZWVyaW5nIENvLiwgTHRkCiswYTUxICBTb255IEVsZWN0cm9uaWNzLCBJbmMuCiswYTUyICBKZWJzZWUgRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzBhNTMgIFBvcnRhYmxlIFBlcmlwaGVyYWwgQ28uLCBMdGQKKwkxMDAwICBTY2FubmVyCisJMjAwMCAgUS1TY2FuIEE2IFNjYW5uZXIKKwkyMDAxICBRLVNjYW4gQTYgU2Nhbm5lcgorCTIwMTMgIE1lZGlhIERyaXZlIEE2IFNjYW5uZXIKKwkyMDE0ICBNZWRpYSBEcml2ZSBBNiBTY2FubmVyCisJMjAxNSAgQml6Q2FyZFJlYWRlciA2MDBDCisJMjAxNiAgQml6Q2FyZFJlYWRlciA2MDBDCisJMjAyYSAgU2NhbnNoZWxsLUNTU04KKwkzMDAwICBRLVNjYW4gQTggU2Nhbm5lcgorCTMwMDIgIFEtU2NhbiBBOCBSZWFkZXIKKwkzMDE1ICBCaXpDYXJkUmVhZGVyIDMwMEcKKwk1MDAxICBCaXpDYXJkUmVhZGVyIDkwMEMKKzBhNWEgIEVsZWN0cm9uaWNzIEZvciBJbWFnaW5nLCBJbmMuCiswYTViICBFQXNpY3MgTlYKKzBhNWMgIEJyb2FkY29tIENvcnAuCisJMDIwMSAgaUxpbmUxMCh0bSkgTmV0d29yayBBZGFwdGVyCisJMjAwMCAgQmx1ZXRvb3RoIERldmljZQorCTIwMDEgIEJsdWV0b290aCBEZXZpY2UKKwkyMDA5ICBCbHVldG9vdGggQ29udHJvbGxlcgorCTIwMGEgIEJsdWV0b290aCBkb25nbGUKKwkyMDBmICBCbHVldG9vdGggQ29udHJvbGxlcgorCTIwMWQgIEJsdWV0b290aCBEZXZpY2UKKwkyMDFlICBJQk0gSW50ZWdyYXRlZCBCbHVldG9vdGggSVYKKwkyMDIwICBCbHVldG9vdGggZG9uZ2xlCisJMjAzMyAgQkNNMjAzMyBCbHVldG9vdGgKKwkyMDM1ICBCQ00yMDM1IEJsdWV0b290aAorCTIwMzggIEJsdXRvbml1bSBEZXZpY2UKKwkyMDM5ICBCbHVldG9vdGggRGV2aWNlCisJMjA0NSAgQmx1ZXRvb3RoIENvbnRyb2xsZXIKKwkyMDQ2ICBCbHVldG9vdGggRGV2aWNlCisJMjA0NyAgQmx1ZXRvb3RoIERldmljZQorCTIwNWUgIEJsdWV0b290aCBEZXZpY2UKKwkyMTAwICBCbHVldG9vdGggMi4wK2VEUiBkb25nbGUKKwkyMTAxICBBLUxpbmsgQmx1ZVVzYkEyIEJsdWV0b290aAorCTIxMDIgIEFOWUNPTSBCbHVlIFVTQi0yMDAvMjUwCisJMjExMCAgQmx1ZXRvb3RoIENvbnRyb2xsZXIKKwkyMTExICBBTllDT00gQmx1ZSBVU0ItVUhFIDIwMC8yNTAKKwkyMTIwICAyMDQ1IEJsdWV0b290aCAyLjAgVVNCLVVIRSBEZXZpY2Ugd2l0aCB0cmFjZSBmaWx0ZXIKKwkyMTIxICBCQ00yMjEwIEJsdWV0b290aAorCTIxMjIgIEJsdWV0b290aCAyLjArRURSIGRvbmdsZQorCTIxMjMgIEJsdWV0b290aCBkb25nbGUKKwkyMTMwICAyMDQ1IEJsdWV0b290aCAyLjAgVVNCLVVIRSBEZXZpY2Ugd2l0aCB0cmFjZSBmaWx0ZXIKKwkyMTMxICAyMDQ1IEJsdWV0b290aCAyLjAgRGV2aWNlIHdpdGggdHJhY2UgZmlsdGVyCisJNDUwMCAgQkNNMjA0NkIxIFVTQiAyLjAgSHViIChwYXJ0IG9mIEJDTTIwNDYgQmx1ZXRvb3RoKQorCTU4MDAgIEJDTTU4ODAgU2VjdXJlIEFwcGxpY2F0aW9ucyBQcm9jZXNzb3IKKwk2MzAwICBQaXJlbGxpIFJlbW90ZSBORElTIERldmljZQorMGE1ZCAgRGlhdHJlbmQgQ29ycC4KKzBhNWYgIFplYnJhCisJMDAwOSAgTFAyODQ0IFByaW50ZXIKKwk5MzBhICBQcmludGVyCiswYTYyICBNUE1hbgorCTAwMTAgIE1QTWFuIE1QLUY0MCBNUDMgUGxheWVyCiswYTY2ICBDbGVhckN1YmUgVGVjaG5vbG9neQorMGE2NyAgTWVkZWxpIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswYTY4ICBDb21haWRlIENvcnAuCiswYTY5ICBDaHJvbWEgYXRlLCBJbmMuCiswYTZiICBHcmVlbiBIb3VzZSBDby4sIEx0ZAorCTAwMDEgIENvbXBhY3QgRmxhc2ggUi9XIHdpdGggTVAzIHBsYXllcgorMGE2YyAgSW50ZWdyYXRlZCBDaXJjdWl0IFN5c3RlbXMsIEluYy4KKzBhNmQgIFVQUyBNYW51ZmFjdHVyaW5nCiswYTZlICBCZW53aW4KKzBhNmYgIENvcmUgVGVjaG5vbG9neSwgSW5jLgorCTA0MDAgIFhhbmJvbworMGE3MCAgSW50ZXJuYXRpb25hbCBHYW1lIFRlY2hub2xvZ3kKKzBhNzIgIFNhbndhIERlbnNoaQorMGE3ZCAgTlNUTCwgSW5jLgorMGE3ZSAgT2N0YWdvbiBTeXN0ZW1zIENvcnAuCiswYTgwICBSZXhvbiBUZWNobm9sb2d5IENvcnAuLCBMdGQKKzBhODEgIENoZXNlbiBFbGVjdHJvbmljcyBDb3JwLgorCTAxMDEgIEtleWJvYXJkCisJMDEwMyAgS2V5Ym9hcmQKKwkwMjAzICBNb3VzZQorCTAyMDUgIFBTLzIgS2V5Ym9hcmQrTW91c2UgQWRhcHRlcgorCTA3MDEgIFVTQiBNaXNzaWxlIExhdW5jaGVyCiswYTgyICBTeXNjYW4KKwk0NjAwICBUcmF2ZWxTY2FuIDQ2MC80NjQKKzBhODMgIE5leHRDb21tLCBJbmMuCiswYTg0ICBNYXVpIElubm92YXRpdmUgUGVyaXBoZXJhbHMKKzBhODUgIElkZXh4IExhYnMKKzBhODYgIE5JVEdlbiBDby4sIEx0ZAorMGE4ZCAgUGljdHVyZXRlbAorMGE4ZSAgSmFwYW4gQXZpYXRpb24gRWxlY3Ryb25pY3MgSW5kdXN0cnksIEx0ZAorCTIwMTEgIEZpbHRlciBEcml2ZXIgRm9yIEpBRSBYTUMgUi9XCiswYTkwICBDYW5keSBUZWNobm9sb2d5IENvLiwgTHRkCiswYTkxICBHbG9ibGluayBUZWNobm9sb2d5LCBJbmMuCisJMzgwMSAgVGFyZ3VzIFBBS1AwMDMgTW91c2UKKzBhOTIgIEVHTyBTWVN0ZW1zLCBJbmMuCisJMDAxMSAgU1lTIFdhdmVUZXJtaW5hbCBVMkEKKwkwMDIxICBHSUdBUG9ydAorCTAwMzEgIEdJR0FQb3J0QUcKKwkwMDUzICBBdWRpb1RyYWsgT3B0b3BsYXkKKwkwMDYxICBXYXZldGVybWluYWwgVTI0CisJMDA3MSAgTUFZQSBFWDcKKwkwMDkxICBNYXlhIDQ0CisJMDBiMSAgTUFZQSBFWDUKKwkxMDAwICBNSURJIE1hdGUKKwkxMDEwICBSb01JL08KKwkxMDIwICBNNFUKKwkxMDMwICBNOFUKKwkxMDkwICBLZXlDb250cm9sNDkKKwkxMGEwICBLZXlDb250cm9sMjUKKzBhOTMgIEMgVGVjaG5vbG9naWVzIEFCCisJMDAwMiAgQy1QZW4gMTAKKwkwMDA1ICBNeVBlbiBMaWdodAorCTAwMGQgIElucHV0IFBlbgorCTAwMTAgIEMtUGVuIDIwCiswYTk0ICBJbnRlcnNlbnNlCiswYWEzICBMYXZhIENvbXB1dGVyIE1mZy4sIEluYy4KKzBhYTQgIERldmVsY28gRWxla3Ryb25paworMGFhNSAgRmlyc3QgSW50ZXJuYXRpb25hbCBEaWdpdGFsCisJMDAwMiAgaXJvY2shIDUwMCBTZXJpZXMKKwkwODAxICBNUDMgUGxheWVyCiswYWE2ICBQZXJjZXB0aW9uIERpZ2l0YWwsIEx0ZAorCTAxMDEgIEhlcmN1bGVzIEp1a2Vib3gKKwkxNTAxICBTdG9yZSAnbicgR28gSEQgRHJpdmUKKzBhYTcgIFdpbmNvciBOaXhkb3JmIEludGVybmF0aW9uYWwgR21iSAorCTAxMDAgIFBPUyBLZXlib2FyZCwgVEE1OFAtVVNCCisJMDEwMSAgUE9TIEtleWJvYXJkLCBUQTg1UC1VU0IKKwkwMTAyICBQT1MgS2V5Ym9hcmQsIFRBNTktVVNCCisJMDEwMyAgUE9TIEtleWJvYXJkLCBUQTYwLVVTQgorCTAxMDQgIFNOSWtleSBLZXlib2FyZCwgU05JS2V5LUtCLVVTQgorCTAyMDAgIE9wZXJhdG9yIERpc3BsYXksIEJBNjMtVVNCCisJMDIwMSAgT3BlcmF0b3IgRGlzcGxheSwgQkE2Ni1VU0IKKwkwMjAyICBPcGVyYXRvciBEaXNwbGF5ICYgU2Nhbm5lciwgWGlDaGVjay1CQTYzCisJMDIwMyAgT3BlcmF0b3IgRGlzcGxheSAmIFNjYW5uZXIsIFhpQ2hlY2stQkE2NgorCTAyMDQgIEdyYXBoaWNzIE9wZXJhdG9yIERpc3BsYXksIEJBNjNHVgorCTAzMDAgIFBPUyBQcmludGVyIChwcmludGVyIGNsYXNzIG1vZGUpLCBUSDIxMAorCTAzMDEgIFBPUyBQcmludGVyIChuYXRpdmUgbW9kZSksIFRIMjEwCisJMDMwMiAgUE9TIFByaW50ZXIgKHByaW50ZXIgY2xhc3MgbW9kZSksIFRIMjIwCisJMDMwMyAgUE9TIFByaW50ZXIgKG5hdGl2ZSBtb2RlKSwgVEgyMjAKKwkwMzA0ICBQT1MgUHJpbnRlciwgVEgyMzAKKwkwMzA1ICBMb3R0ZXJ5IFByaW50ZXIsIFhpUHJpbnRQbHVzCisJMDMwNiAgUE9TIFByaW50ZXIgKHByaW50ZXIgY2xhc3MgbW9kZSksIFRIMzIwCisJMDMwNyAgUE9TIFByaW50ZXIgKG5hdGl2ZSBtb2RlKSwgVEgzMjAKKwkwMzA4ICBQT1MgUHJpbnRlciAocHJpbnRlciBjbGFzcyBtb2RlKSwgVEg0MjAKKwkwMzA5ICBQT1MgUHJpbnRlciAobmF0aXZlIG1vZGUpLCBUSDQyMAorCTAzMGEgIFBPUyBQcmludGVyLCBUSDIwMEIKKwkwNDAwICBMb3R0ZXJ5IFNjYW5uZXIsIFhpc2NhbiBTCisJMDQwMSAgTG90dGVyeSBTY2FubmVyLCBYaXNjYW4gMworCTA0MDIgIFByb2dyYW1tYWJsZSBNYWduZXRpYyBTd2lwZSBDYXJkIFJlYWRlciwgTVNSUC1VU0IKKwkwNTAwICBJREUgQWRhcHRlcgorCTA1MDEgIEh1YiBQcmludGVyIEludGVyZmFjZQorCTA1MDIgIEh1YiBTTklLZXkgS2V5Ym9hcmQKKwk0MzA0ICBCYW5raW5nIFByaW50ZXIgVFAwNworMGFhOCAgVHJpR2VtIENvbXB1dGVyLCBJbmMuCisJMDA2MCAgVEcgMTFNYnBzIFdMQU4gTWluaSBBZGFwdGVyCisJMTAwMSAgRHJlYW1Db21ib000MTAwCisJMzAwMiAgSW5rSmV0IENvbG9yIFByaW50ZXIKKwk4MDAxICBUR19pTU9OCisJODAwMiAgVEdfS0xPU1MKKwlhMDAxICBUR19YMgorCWEwMDIgIFRHVkZEX0tMT1NTCisJZmZkYSAgaU1PTl9WRkQKKzBhYTkgIEJhcm9tdGVjIENvLgorCWYwMWIgIE1lZGlvbiBNRCA2MjQyIE1QMyBQbGF5ZXIKKzBhYWEgIEphcGFuIENCTSBDb3JwLgorMGFhYiAgVmlzaW9uIFNoYXBlIEV1cm9wZSBTQQorMGFhYyAgaUNvbXByZXNzaW9uLCBJbmMuCiswYWFkICBSb2hkZSAmIFNjaHdhcnogR21iSCAmIENvLiBLRworMGFhZSAgTkVDIGluZnJvbnRpYSBDb3JwLiAoTml0c3VrbykKKzBhYWYgIERpZ2l0YWx3YXkgQ28uLCBMdGQKKzBhYjAgIEFycm93IFN0cm9uZyBFbGVjdHJvbmljcyBDby4sIEx0ZAorMGFiYSAgRWxsaXN5cworCTgwMDEgIFRyYWNrZXIgMTEwIFByb3RvY29sIEFuYWx5emVyCisJODAwMiAgRXhwbG9yZXIgMjAwIFByb3RvY29sIEFuYWx5emVyCiswYWJlICBTdGVyZW8tTGluaworCTAxMDEgIFNMMTIwMCBEQUMKKzBhYzMgIFNhbnlvIFNlbWljb25kdWN0b3IgQ29tcGFueSBNaWNybworMGFjNCAgTGVjbyBDb3JwLgorMGFjNSAgSSAmIEMgQ29ycC4KKzBhYzYgIFNpbmdpbmcgRWxlY3Ryb25zLCBJbmMuCiswYWM3ICBQYW53ZXN0IENvcnAuCiswYWM4ICBaLVN0YXIgTWljcm9lbGVjdHJvbmljcyBDb3JwLgorCTAzMDEgIFdlYiBDYW1lcmEKKwkwMzAyICBaQzAzMDIgV2ViY2FtCisJMDMyMSAgVmltaWNybyBnZW5lcmljIHZjMDMyMSBDYW1lcmEKKwkwMzIzICBMdXh5YSBXQy0xMjAwIFVTQiAyLjAgV2ViY2FtCisJMDMyOCAgQTRUZWNoIFBLLTEzME1HCisJMDMzNiAgRWxlY29tIFVDQU0tRExRMzAKKwkzMDFiICBaQzAzMDEgV2ViY2FtCisJMzAzYiAgWkMwMzAzIFdlYmNhbQorCTMwNWIgIFpDMDMwNSBXZWJjYW0KKwkzMDdiICBVU0IgMS4xIFdlYmNhbQorCTMzMmQgIFZlZ2EgVVNCIDIuMCBDYW1lcmEKKwkzMzQzICBTaXJpdXMgVVNCIDIuMCBDYW1lcmEKKwljMDAxICBTb255IGVtYmVkZGVkIHZpbWljcm8gQ2FtZXJhCisJYzAwMiAgVmlzdWFsIENvbW11bmljYXRpb24gQ2FtZXJhIFZHUC1WQ0MxCisJYzMwMiAgVmVnYSBVU0IgMi4wIENhbWVyYQorCWMzMDMgIFNhdHVybiBVU0IgMi4wIENhbWVyYQorMGFjOSAgTWljcm8gU29sdXRpb25zLCBJbmMuCisJMDAwMCAgQmFja3BhY2sgQ0QtUmVXcml0ZXIKKwkwMDAxICBCQUNLUEFDSyAgMiBDYWJsZQorCTAwMTAgIEJBQ0tQQUNLCisJMDAxMSAgQmFja3BhY2sgNDBHQiBIYXJkIERyaXZlCisJMDExMCAgQkFDS1BBQ0sKKwkwMTExICBCYWNrUGFjaworCTEyMzQgIEJBQ0tQQUNLCiswYWNhICBPUEVOIE5ldHdvcmtzIEx0ZAorCTEwNjAgIE9QRU4gTlQxIFBsdXMgSUkKKzBhY2MgIEtvZ2EgRWxlY3Ryb25pY3MgQ28uCiswYWNkICBJRCBUZWNoCisJMDQwMSAgSUQgVEVDSCBTcGVjdHJ1bSBJSUkgSHlicmlkIFNtYXJ0Y2FyZCBSZWFkZXIKKzBhY2UgIFp5REFTCisJMTIwMSAgODAyLjExYgorCTEyMTEgIDgwMi4xMWJnCisJMTIxNSAgV0xBLTU0TCA4MDIuMTFiZworCTEyMjEgIFpEMTIyMSA4MDIuMTFuCisJMTYwMiAgWnlYRUwgT21uaSBGYXhNb2RlbSA1NksKKwkxNjA4ICBaeVhFTCBPbW5pIEZheE1vZGVtIDU2SyBVTk8KKwkxNjExICBaeVhFTCBPbW5pIEZheE1vZGVtIDU2SyBQbHVzCisJMjAxMSAgVmlydHVhbCBtZWRpYSBmb3IgODAyLjExYmcKKwkyMGZmICBWaXJ0dWFsIG1lZGlhIGZvciA4MDIuMTFiZworCWIyMTUgIDgwMi4xMWJnCiswYWNmICBJbnRvdG8sIEluYy4KKzBhZDAgIEludGVsbGl4IENvcnAuCiswYWQxICBSZW1vdGVjIFRlY2hub2xvZ3ksIEx0ZAorMGFkMiAgU2VydmljZSAmIFF1YWxpdHkgVGVjaG5vbG9neSBDby4sIEx0ZAorMGFlMyAgQWxsaW9uIENvbXB1dGVyLCBJbmMuCiswYWU0ICBUYWl0byBDb3JwLgorMGFlNyAgTmVvZHltIFN5c3RlbXMsIEluYy4KKzBhZTggIFN5c3RlbSBTdXBwb3J0IENvLiwgTHRkCiswYWU5ICBOb3J0aCBTaG9yZSBDaXJjdWl0IERlc2lnbiBMLkwuUC4KKzBhZWEgIFNjaUVzc2VuY2UsIExMQworMGFlYiAgVFRQIENvbW11bmljYXRpb25zLCBMdGQKKzBhZWMgIE5lb2RpbyBUZWNobm9sb2dpZXMgQ29ycC4KKwkyMTAxICBTbWFydE1lZGlhIENhcmQgUmVhZGVyCisJMjEwMiAgQ29tcGFjdEZsYXNoIENhcmQgUmVhZGVyCisJMjEwMyAgTU1DL1NEIENhcmQgUmVhZGVyCisJMjEwNCAgTWVtb3J5U3RpY2sgQ2FyZCBSZWFkZXIKKwkyMjAxICBTbWFydE1lZGlhK0NvbXBhY3RGbGFzaCBDYXJkIFJlYWRlcgorCTIyMDIgIFNtYXJ0TWVkaWErTU1DL1NEIENhcmQgUmVhZGVyCisJMjIwMyAgU21hcnRNZWRpYStNZW1vcnlTdGljayBDYXJkIFJlYWRlcgorCTIyMDQgIENvbXBhY3RGbGFzaCtNTUMvU0QgQ2FyZCBSZWFkZXIKKwkyMjA1ICBDb21wYWN0Rmxhc2grTWVtb3J5U3RpY2sgQ2FyZCBSZWFkZXIKKwkyMjA2ICBNTUMvU0QrTWVtb3J5U3RpY2sgQ2FyZCBSZWFkZXIKKwkyMzAxICBTbWFydE1lZGlhK0NvbXBhY3RGbGFzaCtNTUMvU0QgQ2FyZCBSZWFkZXIKKwkyMzAyICBTbWFydE1lZGlhK0NvbXBhY3RGbGFzaCtNZW1vcnlTdGljayBDYXJkIFJlYWRlcgorCTIzMDMgIFNtYXJ0TWVkaWErTU1DL1NEK01lbW9yeVN0aWNrIENhcmQgUmVhZGVyCisJMjMwNCAgQ29tcGFjdEZsYXNoK01NQy9TRCtNZW1vcnlTdGljayBDYXJkIFJlYWRlcgorCTMwMTYgIE1NQy9TRCtNZW1vcnkgU3RpY2sgQ2FyZCBSZWFkZXIKKwkzMDUwICBORDMwNTAgOC1pbi0xIENhcmQgUmVhZGVyCisJMzA2MCAgMS4xIEZTIENhcmQgUmVhZGVyCisJMzEwMSAgTU1DL1NEIENhcmQgUmVhZGVyCisJMzEwMiAgTWVtb3J5U3RpY2sgQ2FyZCBSZWFkZXIKKwkzMjAxICBNTUMvU0QrTWVtb3J5U3RpY2sgQ2FyZCBSZWFkZXIKKwkzMjE2ICBIUyBDYXJkIFJlYWRlcgorCTMyNjAgIDctaW4tMSBDYXJkIFJlYWRlcgorCTUwMTAgIE5ENTAxMCBDYXJkIFJlYWRlcgorMGFmMCAgT3B0aW9uCisJNTAwMCAgVU1UUyBDYXJkCisJNjAwMCAgR2xvYmVUcm90dGVyIDNHIGRhdGFjYXJkCisJNjMwMCAgR1QgM0cgUXVhZCBVTVRTL0dQUlMgQ2FyZAorCTY2MDAgIEdsb2JlVHJvdHRlciAzRysgZGF0YWNhcmQKKzBhZjYgIFNpbHZlciBJIENvLiwgTHRkCiswYWY3ICBCMkMyLCBJbmMuCisJMDEwMSAgRGlnaXRhbCBUViBVU0IgUmVjZWl2ZXIgKERWQi1TL1QvQyAvIEFUU0MpCiswYWY5ICBIYW1hLCBJbmMuCisJMDAxMCAgVVNCIFNpZ2h0Q2FtIDEwMAorCTAwMTEgIE1pY3JvIElubm92YXRpb25zIElDNTBDIFdlYmNhbQorMGFmYyAgWmFwdHJvbml4IEx0ZAorMGFmZCAgVGF0ZW5vIERlbm5vdSwgSW5jLgorMGFmZSAgQ3VtbWlucyBFbmdpbmUgQ28uCiswYWZmICBKdW1wIFpvbmUgTmV0d29yayBQcm9kdWN0cywgSW5jLgorMGIwMCAgSU5HRU5JQ08KKzBiMDUgIEFTVVNUZWsgQ29tcHV0ZXIsIEluYy4KKwkxMTAxICBNYXNzIFN0b3JhZ2UgKFVJU0RNQzRTKQorCTE3MDYgIFdMLTE2N0cgODAyLjExZyBBZGFwdGVyIFtyYWxpbmtdCisJMTcwNyAgV0wtMTY3ZyBXaXJlbGVzcyBBZGFwdGVyCisJMTcwOCAgTWFzcyBTdG9yYWdlIERldmljZQorCTE3MGIgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkxNzBjICBXTC0xNTlnIDgwMi4xMWJnCisJMTcwZCAgODAyLjExYi9nIFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlcgorCTE3MTIgIEJULTE4MyBCbHVldG9vdGggMi4wK0VEUiBhZGFwdGVyCisJMTcxNSAgMjA0NSBCbHVldG9vdGggMi4wIERldmljZSB3aXRoIHRyYWNlIGZpbHRlcgorCTE3MTYgIEJsdWV0b290aCBEZXZpY2UKKwkxNzFiICBBOVQgd2lyZWxlc3MgODAyLjExYmcKKwkxNzFjICA4MDIuMTFiL2cgV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyCisJMTcyMyAgV0wtMTY3RyB2MiA4MDIuMTFnIEFkYXB0ZXIgW3JhbGlua10KKwkxNzI0ICBSVDI1NzMKKwkxNzI2ICBMYXB0b3AgT0xFRCBEaXNwbGF5CisJMTcyYSAgQVNVUyA4MDIuMTFuIE5ldHdvcmsgQWRhcHRlcgorCTE3MmIgIDgwMi4xMW4gTmV0d29yayBBZGFwdGVyCisJMTczMSAgQVNVUyA4MDIuMTFuIE5ldHdvcmsgQWRhcHRlcgorCTE3MzIgIDgwMi4xMW4gTmV0d29yayBBZGFwdGVyCisJMTczNCAgQVNVUyBBRi0yMDAKKwkxNzNjICBCVC0xODMgQmx1ZXRvb3RoIDIuMAorCTE3NDIgIDgwMi4xMW4gTmV0d29yayBBZGFwdGVyCisJNjEwMSAgQ2FibGUgTW9kZW0KKwk2MjBhICBSZW1vdGUgTkRJUyBEZXZpY2UKKwliNzAwICBCcm9hZGNvbSBCbHVldG9vdGggMi4xCiswYjBjICBUb2RvcyBEYXRhIFN5c3RlbSBBQgorCTAwMDkgIFRvZG9zIEFyZ29zIE1pbmkgSUkgU21hcnQgQ2FyZCBSZWFkZXIKKzBiMGUgIEdOIE5ldGNvbQorMGIwZiAgQVZJRCBUZWNobm9sb2d5CiswYjEwICBQY2FsbHkKKzBiMTEgIEkgVGVjaCBTb2x1dGlvbnMgQ28uLCBMdGQKKzBiMWUgIEVsZWN0cm9uaWMgV2FyZmFyZSBBc3NvYy4sIEluYy4gKEVXQSkKKzBiMWYgIEluc3lkZSBTb2Z0d2FyZSBDb3JwLgorMGIyMCAgVHJhbnNEaW1lbnNpb24sIEluYy4KKzBiMjEgIFlva29nYXdhIEVsZWN0cmljIENvcnAuCiswYjIyICBKYXBhbiBTeXN0ZW0gRGV2ZWxvcG1lbnQgQ28uLCBMdGQKKzBiMjMgIFBhbi1Bc2lhIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswYjI0ICBMaW5rIEV2b2x1dGlvbiBDb3JwLgorMGIyNyAgUml0ZWsgQ29ycC4KKzBiMjggIEtlbndvb2QgQ29ycC4KKzBiMmMgIFZpbGxhZ2UgQ2VudGVyLCBJbmMuCiswYjMwICBQTlkgVGVjaG5vbG9naWVzLCBJbmMuCisJMDAwNiAgU00gTWVkaWEtU2h1dHRsZSBDYXJkIFJlYWRlcgorMGIzMyAgQ29udG91ciBEZXNpZ24sIEluYy4KKwkwMDIwICBTaHV0dGxlWHByZXNzCiswYjM3ICBIaXRhY2hpIFVMU0kgU3lzdGVtcyBDby4sIEx0ZAorMGIzOSAgT21uaWRpcmVjdGlvbmFsIENvbnRyb2wgVGVjaG5vbG9neSwgSW5jLgorCTAxMDkgIFVTQiBUTyBFdGhlcm5ldAorCTA0MjEgIFNlcmlhbAorCTA4MDEgIFVTQi1QYXJhbGxlbCBCcmlkZ2UKKwkwOTAxICBPQ1QgVG8gRmFzdCBFdGhlcm5ldCBDb252ZXJ0ZXIKKwkwYzAzICBMQU4gRE9DSyBTZXJpYWwgQ29udmVydGVyCiswYjNhICBJUGF4ZXNzCiswYjNiICBUZWtyYW0gVGVjaG5vbG9neSBDby4sIEx0ZAorCTAxNjMgIFRMLVdOMzIwRyAxLjAgV0xBTiBBZGFwdGVyCisJMTYwMSAgQWxsbmV0IDAxOTMgODAyLjExYiBBZGFwdGVyCisJMTYwMiAgWnlYRUwgWnlBSVIgQjIwMCA4MDIuMTFiIEFkYXB0ZXIKKwkxNjEyICBBSVIuTWF0ZSAyQG5ldCA4MDIuMTFiIEFkYXB0ZXIKKwkxNjEzICA4MDIuMTFiIFdpcmVsZXNzIExBTiBBZGFwdGVyCisJMTYyMCAgQWxsbmV0IFVTQiAyLjAgV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyCisJMTYzMCAgUXVpY2tXTEFOIDgwMi4xMWJnCisJNTYzMCAgODAyLjExYmcKKwk2NjMwICBaRDEyMTEKKzBiM2MgIE9saXZldHRpIFRlY2hjZW50ZXIKKwlhMDEwICBTaW1wbGVfV2F5IFByaW50ZXIvU2Nhbm5lci9Db3BpZXIKKzBiM2UgIEtpa3VzdWkgRWxlY3Ryb25pY3MgQ29ycC4KKzBiNDEgIEhhbCBDb3JwLgorCTAwMTEgIENyb3NzYW0yK1VTQiBJUiBjb21tYW5kZXIKKzBiNDMgIFBsYXkuY29tLCBJbmMuCisJMDAwMyAgUFMyIENvbnRyb2xsZXIgQ29udmVydGVyCiswYjQ3ICBTcG9ydGJ1Zy5jb20sIEluYy4KKzBiNDggIFRlY2hub1RyZW5kIEFHCisJMTAwMyAgVGVjaG5vdHJlbmQvSGF1cHBhdWdlIFVTQi1Ob3ZhCisJMTAwNCAgVFQtUENsaW5lCisJMTAwNSAgVGVjaG5vdHJlbmQvSGF1cHBhdWdlIFVTQi1Ob3ZhCisJMTAwNiAgVGVjaG5vdHJlbmQvSGF1cHBhdWdlIERFQzMwMDAtcworCTEwMDcgIFRULW1pY3JvIHBsdXMgRGV2aWNlCisJMTAwOCAgVGVjaG5vdHJlbmQvSGF1cHBhdWdlIERFQzIwMDAtdAorCTEwMDkgIFRlY2hub3RyZW5kL0hhdXBwYXVnZSBERUMyNTQwLXQKKwkzMDBkICBUVC1jb25uZWN0IENULTM2NTAgQ0kKKzBiNDkgIEFTQ0lJIENvcnAuCisJMDY0ZiAgVHJhbmNlIFZpYnJhdG9yCiswYjRiICBQaW5lIENvcnAuIEx0ZC4KKwkwMTAwICBEJ211c2ljIE1QMyBQbGF5ZXIKKzBiNGQgIEdyYXBodGVjIEFtZXJpY2EsIEluYy4KKwkxMTBhICBHcmFwaHRlYyBDQzIwMC0yMAorMGI0ZSAgTXVzaWNhbCBFbGVjdHJvbmljcywgTHRkCisJNjUwMCAgTVAzIFBsYXllcgorCTgwMjggIE1QMyBQbGF5ZXIKKwk4OTIwICBNUDMgUGxheWVyCiswYjUwICBEdW1wcmllcyBDby4sIEx0ZAorMGI1MSAgQ29tZm9ydCBLZXlib2FyZCBDby4KKwkwMDIwICBDb21mb3J0IEtleWJvYXJkCiswYjUyICBDb2xvcmFkbyBNaWNyb0Rpc3BsYXksIEluYy4KKzBiNTQgIFNpbmJvbiBFbGVjdHJvbmljcyBDby4sIEx0ZAorMGI1NiAgVFlJIFN5c3RlbXMsIEx0ZAorMGI1NyAgQmVpamluZyBIYW53YW5nVGVjaG5vbG9neSBDby4sIEx0ZAorMGI1OSAgTGFrZSBDb21tdW5pY2F0aW9ucywgTHRkCiswYjVhICBDb3JlbCBDb3JwLgorMGI1ZiAgR3JlZW4gRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzBiNjAgIE5zaW5lLCBMdGQKKzBiNjEgIE5FQyBWaWV3dGVjaG5vbG9neSwgTHRkCiswYjYyICBPcmFuZ2UgTWljcm8sIEluYy4KKwkwMDBiICBCbHVldG9vdGggRGV2aWNlCisJMDA1OSAgaUJPVDIgV2ViY2FtCiswYjYzICBBRExpbmsgVGVjaG5vbG9neSwgSW5jLgorMGI2NCAgV29uZGVyZnVsIFdpcmUgQ2FibGUgQ28uLCBMdGQKKzBiNjUgIEV4cGVydCBNYWduZXRpY3MgQ29ycC4KKzBiNjkgIENhY2hlVmlzaW9uCiswYjZhICBNYXhpbSBJbnRlZ3JhdGVkIFByb2R1Y3RzCiswYjZmICBOYWdhbm8gSmFwYW4gUmFkaW8gQ28uLCBMdGQKKzBiNzAgIFBvcnRhbFBsYXllciwgSW5jLgorCTAwYmEgIGlSaXZlciBIMTAgMjBHQgorMGI3MSAgU0hJTi1FSSBTYW5neW8gQ28uLCBMdGQKKzBiNzIgIEVtYmVkZGVkIFdpcmVsZXNzIFRlY2hub2xvZ3kgQ28uLCBMdGQKKzBiNzMgIENvbXB1dG9uZSBDb3JwLgorMGI3NSAgUm9sYW5kIERHIENvcnAuCiswYjc5ICBTdW5yaXNlIFRlbGVjb20sIEluYy4KKzBiN2EgIFplZXZvLCBJbmMuCisJMDdkMCAgQmx1ZXRvb3RoIERvbmdsZQorMGI3YiAgVGFpa28gRGVua2kgQ28uLCBMdGQKKzBiN2MgIElUUkFOIENvbW11bmljYXRpb25zLCBMdGQKKzBiN2QgIEFzdHJvZGVzaWduLCBJbmMuCiswYjg0ICBSZXh0cm9uIFRlY2hub2xvZ3ksIEluYy4KKzBiODUgIEVsa2F0IEVsZWN0cm9uaWNzLCBTZG4uLCBCaGQuCiswYjg2ICBFeHB1dGVyIFN5c3RlbXMsIEluYy4KKwk1MTAwICBYTUM1MTAwIFppcHB5IERyaXZlCisJNTExMCAgWE1DNTExMCBGbGFzaCBEcml2ZQorCTUyMDAgIFhNQzUyMDAgWmlwcHkgRHJpdmUKKwk1MjAxICBYTUM1MjAwIFppcHB5IERyaXZlCisJNTIwMiAgWE1DNTIwMCBaaXBweSBEcml2ZQorCTUyODAgIFhNQzUyODAgU3RvcmFnZSBEcml2ZQorCWZmZjAgIElTUDUyMDAgRGVidWdnZXIKKzBiODcgIFBsdXMtT25lIEkgJiBULCBJbmMuCiswYjg4ICBTaWdtYSBLb2tpIENvLiwgTHRkLCBUZWNobm9sb2d5IENlbnRlcgorMGI4OSAgQWR2YW5jZWQgRGlnaXRhbCBCcm9hZGNhc3QsIEx0ZAorMGI4YyAgU01BUlQgVGVjaG5vbG9naWVzIEluYy4KKwkwMGMzICBTeW1wb2RpdW0gSUQzNTAKKzBiOTUgIEFTSVggRWxlY3Ryb25pY3MgQ29ycC4KKwkxNzIwICAxMC8xMDAgRXRoZXJuZXQKKwkxNzgwICBBWDg4MTc4CisJNzcyMCAgQVg4ODc3MgorMGI5NiAgU2V3b24gVGVsZWNvbQorMGI5NyAgTzIgTWljcm8sIEluYy4KKwk3NzMyICBTbWFydCBDYXJkIFJlYWRlcgorCTc3NjEgIE96Nzc2IDEuMSBIdWIKKwk3NzYyICBPejc3NiBTbWFydENhcmQgUmVhZGVyCisJNzc3MiAgT1o3NzYgQ0NJRCBTbWFydGNhcmQgUmVhZGVyCiswYjk4ICBQbGF5bWF0ZXMgVG95cywgSW5jLgorMGI5OSAgQXVkaW8gSW50ZXJuYXRpb25hbCwgSW5jLgorMGI5YiAgRGlwbC4tSW5nLiBTdGVmYW4gS3VuZGUKKwk0MDEyICBSZWZsZXggUkMtY29udHJvbGxlciBJbnRlcmZhY2UKKzBiOWQgIFNvZnRwcm90ZWMgQ28uCiswYjlmICBDaGlwcG8gVGVjaG5vbG9naWVzCiswYmFmICBVLlMuIFJvYm90aWNzCisJMDBlNSAgVVNSNjAwMAorCTAwZWIgIFVTUjExMjAgODAyLjExYiBBZGFwdGVyCisJMDBlYyAgNTZLIEZheG1vZGVtCisJMDBmMSAgU3VyZUNvbm5lY3QgQURTTCBBVE0gQWRhcHRlcgorCTAwZjIgIFN1cmVDb25uZWN0IEFEU0wgTG9hZGVyCisJMDBmNSAgU3VyZUNvbm5lY3QgQURTTCBBVE0gQWRhcHRlcgorCTAwZjYgIFN1cmVDb25uZWN0IEFEU0wgTG9hZGVyCisJMDBmNyAgU3VyZUNvbm5lY3QgQURTTCBBVE0gQWRhcHRlcgorCTAwZjggIFN1cmVDb25uZWN0IEFEU0wgTG9hZGVyCisJMDBmOSAgU3VyZUNvbm5lY3QgQURTTCBBVE0gQWRhcHRlcgorCTAwZmEgIFN1cmVDb25uZWN0IEFEU0wgTG9hZGVyCisJMDBmYiAgU3VyZUNvbm5lY3QgQURTTCBFdGhlcm5ldC9VU0IgUm91dGVyCisJMDExOCAgVTUgODAyLjExZyBBZGFwdGVyCisJMDExYiAgV2lyZWxlc3MgTUFYZyBBZGFwdGVyCisJMDEyMSAgVVNSNTQyMyA4MDIuMTFiZworCTYxMTIgIEZheE1vZGVtIE1vZGVsIDU2MzMKKzBiYjAgIENvbmNvcmQgQ2FtZXJhIENvcnAuCisJMDEwMCAgU291bmQgVmlzaW9uIFN0cmVhbQorCTUwMDcgIDMzNDB6L1JvbGxlaSBEQzMxMDAKKzBiYjEgIEluZmluaWxpbmsgQ29ycC4KKzBiYjIgIEFtYml0IE1pY3Jvc3lzdGVtcyBDb3JwLgorCTAzMDIgIFdMQU4KKwk2MDk4ICBVU0IgQ2FibGUgTW9kZW0KKzBiYjMgIE9mdWppIFRlY2hub2xvZ3kKKzBiYjQgIEhpZ2ggVGVjaCBDb21wdXRlciBDb3JwLgorCTAwY2UgIG1tTzIgWERBIEdTTS9HUFJTIFBvY2tldCBQQworCTAwY2YgIFNQViBDNTAwIFNtYXJ0IFBob25lCisJMGEwMSAgUG9ja2V0UEMgU3luYworCTBhMDIgIEhpbWFsYXlhIEdTTS9HUFJTIFBvY2tldCBQQworCTBhMDMgIFBvY2tldFBDIFN5bmMKKwkwYTA0ICBQb2NrZXRQQyBTeW5jCisJMGEwNSAgUG9ja2V0UEMgU3luYworCTBhMDYgIFBvY2tldFBDIFN5bmMKKwkwYTA3ICBNYWdpY2lhbiBQb2NrZXRQQyBTbWFydFBob25lIC8gTzIgWERBCisJMGEwOCAgUG9ja2V0UEMgU3luYworCTBhMDkgIFBvY2tldFBDIFN5bmMKKwkwYTBhICBQb2NrZXRQQyBTeW5jCisJMGEwYiAgUG9ja2V0UEMgU3luYworCTBhMGMgIFBvY2tldFBDIFN5bmMKKwkwYTBkICBQb2NrZXRQQyBTeW5jCisJMGEwZSAgUG9ja2V0UEMgU3luYworCTBhMGYgIFBvY2tldFBDIFN5bmMKKwkwYTEwICBQb2NrZXRQQyBTeW5jCisJMGExMSAgUG9ja2V0UEMgU3luYworCTBhMTIgIFBvY2tldFBDIFN5bmMKKwkwYTEzICBQb2NrZXRQQyBTeW5jCisJMGExNCAgUG9ja2V0UEMgU3luYworCTBhMTUgIFBvY2tldFBDIFN5bmMKKwkwYTE2ICBQb2NrZXRQQyBTeW5jCisJMGExNyAgUG9ja2V0UEMgU3luYworCTBhMTggIFBvY2tldFBDIFN5bmMKKwkwYTE5ICBQb2NrZXRQQyBTeW5jCisJMGExYSAgUG9ja2V0UEMgU3luYworCTBhMWIgIFBvY2tldFBDIFN5bmMKKwkwYTFjICBQb2NrZXRQQyBTeW5jCisJMGExZCAgUG9ja2V0UEMgU3luYworCTBhMWUgIFBvY2tldFBDIFN5bmMKKwkwYTFmICBQb2NrZXRQQyBTeW5jCisJMGEyMCAgUG9ja2V0UEMgU3luYworCTBhMjEgIFBvY2tldFBDIFN5bmMKKwkwYTIyICBQb2NrZXRQQyBTeW5jCisJMGEyMyAgUG9ja2V0UEMgU3luYworCTBhMjQgIFBvY2tldFBDIFN5bmMKKwkwYTI1ICBQb2NrZXRQQyBTeW5jCisJMGEyNiAgUG9ja2V0UEMgU3luYworCTBhMjcgIFBvY2tldFBDIFN5bmMKKwkwYTI4ICBQb2NrZXRQQyBTeW5jCisJMGEyOSAgUG9ja2V0UEMgU3luYworCTBhMmEgIFBvY2tldFBDIFN5bmMKKwkwYTJiICBQb2NrZXRQQyBTeW5jCisJMGEyYyAgUG9ja2V0UEMgU3luYworCTBhMmQgIFBvY2tldFBDIFN5bmMKKwkwYTJlICBQb2NrZXRQQyBTeW5jCisJMGEyZiAgUG9ja2V0UEMgU3luYworCTBhMzAgIFBvY2tldFBDIFN5bmMKKwkwYTMxICBQb2NrZXRQQyBTeW5jCisJMGEzMiAgUG9ja2V0UEMgU3luYworCTBhMzMgIFBvY2tldFBDIFN5bmMKKwkwYTM0ICBQb2NrZXRQQyBTeW5jCisJMGEzNSAgUG9ja2V0UEMgU3luYworCTBhMzYgIFBvY2tldFBDIFN5bmMKKwkwYTM3ICBQb2NrZXRQQyBTeW5jCisJMGEzOCAgUG9ja2V0UEMgU3luYworCTBhMzkgIFBvY2tldFBDIFN5bmMKKwkwYTNhICBQb2NrZXRQQyBTeW5jCisJMGEzYiAgUG9ja2V0UEMgU3luYworCTBhM2MgIFBvY2tldFBDIFN5bmMKKwkwYTNkICBQb2NrZXRQQyBTeW5jCisJMGEzZSAgUG9ja2V0UEMgU3luYworCTBhM2YgIFBvY2tldFBDIFN5bmMKKwkwYTQwICBQb2NrZXRQQyBTeW5jCisJMGE0MSAgUG9ja2V0UEMgU3luYworCTBhNDIgIFBvY2tldFBDIFN5bmMKKwkwYTQzICBQb2NrZXRQQyBTeW5jCisJMGE0NCAgUG9ja2V0UEMgU3luYworCTBhNDUgIFBvY2tldFBDIFN5bmMKKwkwYTQ2ICBQb2NrZXRQQyBTeW5jCisJMGE0NyAgUG9ja2V0UEMgU3luYworCTBhNDggIFBvY2tldFBDIFN5bmMKKwkwYTQ5ICBQb2NrZXRQQyBTeW5jCisJMGE0YSAgUG9ja2V0UEMgU3luYworCTBhNGIgIFBvY2tldFBDIFN5bmMKKwkwYTRjICBQb2NrZXRQQyBTeW5jCisJMGE0ZCAgUG9ja2V0UEMgU3luYworCTBhNGUgIFBvY2tldFBDIFN5bmMKKwkwYTRmICBQb2NrZXRQQyBTeW5jCisJMGE1MCAgSFRDIFNtYXJ0UGhvbmUgU3luYworCTBhNTEgIFNQViBDNDAwIC8gVC1Nb2JpbGUgU0RBIEdTTS9HUFJTIFBvY2tldCBQQworCTBhNTIgIFNtYXJ0UGhvbmUgU3luYworCTBhNTMgIFNtYXJ0UGhvbmUgU3luYworCTBhNTQgIFNtYXJ0UGhvbmUgU3luYworCTBhNTUgIFNtYXJ0UGhvbmUgU3luYworCTBhNTYgIFNtYXJ0UGhvbmUgU3luYworCTBhNTcgIFNtYXJ0UGhvbmUgU3luYworCTBhNTggIFNtYXJ0UGhvbmUgU3luYworCTBhNTkgIFNtYXJ0UGhvbmUgU3luYworCTBhNWEgIFNtYXJ0UGhvbmUgU3luYworCTBhNWIgIFNtYXJ0UGhvbmUgU3luYworCTBhNWMgIFNtYXJ0UGhvbmUgU3luYworCTBhNWQgIFNtYXJ0UGhvbmUgU3luYworCTBhNWUgIFNtYXJ0UGhvbmUgU3luYworCTBhNWYgIFNtYXJ0UGhvbmUgU3luYworCTBhNjAgIFNtYXJ0UGhvbmUgU3luYworCTBhNjEgIFNtYXJ0UGhvbmUgU3luYworCTBhNjIgIFNtYXJ0UGhvbmUgU3luYworCTBhNjMgIFNtYXJ0UGhvbmUgU3luYworCTBhNjQgIFNtYXJ0UGhvbmUgU3luYworCTBhNjUgIFNtYXJ0UGhvbmUgU3luYworCTBhNjYgIFNtYXJ0UGhvbmUgU3luYworCTBhNjcgIFNtYXJ0UGhvbmUgU3luYworCTBhNjggIFNtYXJ0UGhvbmUgU3luYworCTBhNjkgIFNtYXJ0UGhvbmUgU3luYworCTBhNmEgIFNtYXJ0UGhvbmUgU3luYworCTBhNmIgIFNtYXJ0UGhvbmUgU3luYworCTBhNmMgIFNtYXJ0UGhvbmUgU3luYworCTBhNmQgIFNtYXJ0UGhvbmUgU3luYworCTBhNmUgIFNtYXJ0UGhvbmUgU3luYworCTBhNmYgIFNtYXJ0UGhvbmUgU3luYworCTBhNzAgIFNtYXJ0UGhvbmUgU3luYworCTBhNzEgIFNtYXJ0UGhvbmUgU3luYworCTBhNzIgIFNtYXJ0UGhvbmUgU3luYworCTBhNzMgIFNtYXJ0UGhvbmUgU3luYworCTBhNzQgIFNtYXJ0UGhvbmUgU3luYworCTBhNzUgIFNtYXJ0UGhvbmUgU3luYworCTBhNzYgIFNtYXJ0UGhvbmUgU3luYworCTBhNzcgIFNtYXJ0UGhvbmUgU3luYworCTBhNzggIFNtYXJ0UGhvbmUgU3luYworCTBhNzkgIFNtYXJ0UGhvbmUgU3luYworCTBhN2EgIFNtYXJ0UGhvbmUgU3luYworCTBhN2IgIFNtYXJ0UGhvbmUgU3luYworCTBhN2MgIFNtYXJ0UGhvbmUgU3luYworCTBhN2QgIFNtYXJ0UGhvbmUgU3luYworCTBhN2UgIFNtYXJ0UGhvbmUgU3luYworCTBhN2YgIFNtYXJ0UGhvbmUgU3luYworCTBhODAgIFNtYXJ0UGhvbmUgU3luYworCTBhODEgIFNtYXJ0UGhvbmUgU3luYworCTBhODIgIFNtYXJ0UGhvbmUgU3luYworCTBhODMgIFNtYXJ0UGhvbmUgU3luYworCTBhODQgIFNtYXJ0UGhvbmUgU3luYworCTBhODUgIFNtYXJ0UGhvbmUgU3luYworCTBhODYgIFNtYXJ0UGhvbmUgU3luYworCTBhODcgIFNtYXJ0UGhvbmUgU3luYworCTBhODggIFNtYXJ0UGhvbmUgU3luYworCTBhODkgIFNtYXJ0UGhvbmUgU3luYworCTBhOGEgIFNtYXJ0UGhvbmUgU3luYworCTBhOGIgIFNtYXJ0UGhvbmUgU3luYworCTBhOGMgIFNtYXJ0UGhvbmUgU3luYworCTBhOGQgIFNtYXJ0UGhvbmUgU3luYworCTBhOGUgIFNtYXJ0UGhvbmUgU3luYworCTBhOGYgIFNtYXJ0UGhvbmUgU3luYworCTBhOTAgIFNtYXJ0UGhvbmUgU3luYworCTBhOTEgIFNtYXJ0UGhvbmUgU3luYworCTBhOTIgIFNtYXJ0UGhvbmUgU3luYworCTBhOTMgIFNtYXJ0UGhvbmUgU3luYworCTBhOTQgIFNtYXJ0UGhvbmUgU3luYworCTBhOTUgIFNtYXJ0UGhvbmUgU3luYworCTBhOTYgIFNtYXJ0UGhvbmUgU3luYworCTBhOTcgIFNtYXJ0UGhvbmUgU3luYworCTBhOTggIFNtYXJ0UGhvbmUgU3luYworCTBhOTkgIFNtYXJ0UGhvbmUgU3luYworCTBhOWEgIFNtYXJ0UGhvbmUgU3luYworCTBhOWIgIFNtYXJ0UGhvbmUgU3luYworCTBhOWMgIFNtYXJ0UGhvbmUgU3luYworCTBhOWQgIFNtYXJ0UGhvbmUgU3luYworCTBhOWUgIFNtYXJ0UGhvbmUgU3luYworCTBhOWYgIFNtYXJ0UGhvbmUgU3luYworCTBiMDQgIEhlcm1lcyAvIFR5VE4gLyBULU1vYmlsZSBNREEgVmFyaW8gSUkgLyBPMiBYZGEgVHJpb24KKwkwYjA2ICBBdGhlbmEgLyBBZHZhbnRhZ2UgeDc1MDAgLyBEb3BvZCBVMTAwMCAvIFQtTW9iaWxlIEFNRU8KKwkwYjBjICBFbGYgLyBUb3VjaCAvIFAzNDUwIC8gVC1Nb2JpbGUgTURBIFRvdWNoIC8gTzIgWGRhIE5vdmEgLyBEb3BvZCBTMQorCTBiY2UgIFZhcmlvIE1EQQorMGJiNSAgTXVyYXRhIE1hbnVmYWN0dXJpbmcgQ28uLCBMdGQKKzBiYjYgIE5ldHdvcmsgQWxjaGVteQorMGJiNyAgSm95dGVjaCBDb21wdXRlciBDby4sIEx0ZAorMGJiOCAgSGl0YWNoaSBTZW1pY29uZHVjdG9yIGFuZCBEZXZpY2VzIFNhbGVzIENvLiwgTHRkCiswYmI5ICBFaWdlciBNJkMgQ28uLCBMdGQKKzBiYmEgIFpBY2Nlc3MgU3lzdGVtcworMGJiYiAgR2VuZXJhbCBNZXRlcnMgQ29ycC4KKzBiYmMgIEFzc2lzdGl2ZSBUZWNobm9sb2d5LCBJbmMuCiswYmJkICBTeXN0ZW0gQ29ubmVjdGlvbiwgSW5jLgorMGJjMCAgS25pbGluayBUZWNobm9sb2d5LCBJbmMuCiswYmMxICBGdXcgWW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswYmMyICBTZWFnYXRlIFJTUyBMTEMKKwkyMDAwICBTdG9yYWdlIEFkYXB0ZXIgVjMgKFRQUCkKKzBiYzMgIElQV2lyZWxlc3MsIEluYy4KKzBiYzQgIE1pY3JvY3ViZSBDb3JwLgorMGJjNSAgSkNOIENvLiwgTHRkCiswYmM2ICBFeFdBWSwgSW5jLgorMGJjNyAgWDEwIFdpcmVsZXNzIFRlY2hub2xvZ3ksIEluYy4KKwkwMDAxICBBY3RpdmVIb21lIChBQ1BJLWNvbXBsaWFudCkKKwkwMDAyICBGaXJlY3JhY2tlciBJbnRlcmZhY2UgKEFDUEktY29tcGxpYW50KQorCTAwMDMgIFZHQSBWaWRlbyBTZW5kZXIgKEFDUEktY29tcGxpYW50KQorCTAwMDQgIFgxMCBSZWNlaXZlcgorCTAwMDUgIFdpcmVsZXNzIFRyYW5zY2VpdmVyIChBQ1BJLWNvbXBsaWFudCkKKwkwMDA2ICBXaXJlbGVzcyBUcmFuc2NlaXZlciAoQUNQSS1jb21wbGlhbnQpCisJMDAwNyAgV2lyZWxlc3MgVHJhbnNjZWl2ZXIgKEFDUEktY29tcGxpYW50KQorCTAwMDggIFdpcmVsZXNzIFRyYW5zY2VpdmVyIChBQ1BJLWNvbXBsaWFudCkKKwkwMDA5ICBXaXJlbGVzcyBUcmFuc2NlaXZlciAoQUNQSS1jb21wbGlhbnQpCisJMDAwYSAgV2lyZWxlc3MgVHJhbnNjZWl2ZXIgKEFDUEktY29tcGxpYW50KQorCTAwMGIgIFRyYW5zY2VpdmVyIChBQ1BJLWNvbXBsaWFudCkKKwkwMDBjICBUcmFuc2NlaXZlciAoQUNQSS1jb21wbGlhbnQpCisJMDAwZCAgVHJhbnNjZWl2ZXIgKEFDUEktY29tcGxpYW50KQorCTAwMGUgIFRyYW5zY2VpdmVyIChBQ1BJLWNvbXBsaWFudCkKKwkwMDBmICBUcmFuc2NlaXZlciAoQUNQSS1jb21wbGlhbnQpCiswYmM4ICBUZWxtYXggQ29tbXVuaWNhdGlvbnMKKzBiYzkgIEVDSSBUZWxlY29tLCBMdGQKKzBiY2EgIFN0YXJ0ZWsgRW5naW5lZXJpbmcsIEluYy4KKzBiY2IgIFBlcmZlY3QgVGVjaG5pYyBFbnRlcnByaXNlIENvLiwgTHRkCiswYmQ3ICBBbmRyZXcgUGFyZ2V0ZXIgJiBBc3NvY2lhdGVzCisJYTAyMSAgQW1wdGVrIERQNCBtdWx0aWNoYW5uZWwgc2lnbmFsIGFuYWx5emVyCiswYmRhICBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4KKwkwMTAzICBVU0IgMi4wIENhcmQgUmVhZGVyCisJMDEwNCAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxMDYgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTA3ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDEwOCAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxMTEgIENhcmQgUmVhZGVyCisJMDExMyAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxMTUgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTE2ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDExNyAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxMTggIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTUxICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDE1MiAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxNTMgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTU2ICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDE1NyAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxNTggIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTYxICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDE2OCAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxNjkgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMTcxICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDE3NiAgTWFzcyBTdG9yYWdlIERldmljZQorCTAxNzggIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkyODMxICAyODMxVSBEZXZpY2UKKwk4MTUwICBSVEw4MTUwIEZhc3QgRXRoZXJuZXQgQWRhcHRlcgorCTgxNTEgIFJUTDgxNTEgQWRhcHRlb24gQnVzaW5lc3MgTW9iaWxlIE5ldHdvcmtzIEJWCisJODE4NyAgUlRMODE4NyBXaXJlbGVzcyBBZGFwdGVyCisJODE4OSAgUlRMODE4N0IgV2lyZWxlc3MgODAyLjExZyA1NE1icHMgTmV0d29yayBBZGFwdGVyCisJODE5NyAgUlRMODE4N0IgV2lyZWxlc3MgQWRhcHRlcgorCTgxOTggIFJUTDgxODdCIFdpcmVsZXNzIEFkYXB0ZXIKKzBiZGIgIEVyaWNzc29uIEJ1c2luZXNzIE1vYmlsZSBOZXR3b3JrcyBCVgorCTEwMDAgIEJWIEJsdWV0b290aCBEZXZpY2UKKwkxMDAyICBCbHVldG9vdGggRGV2aWNlIDEuMgorMGJkYyAgWSBNZWRpYSBDb3JwLgorMGJkZCAgT3JhbmdlIFBDUworMGJlMiAgS2FuZGEgVHN1c2hpbiBLb2d5byBDby4sIEx0ZAorMGJlMyAgVE9ZTyBDb3JwLgorMGJlNCAgRWxrYSBJbnRlcm5hdGlvbmFsLCBMdGQKKzBiZTUgIERPTUUgaW1hZ2luZyBzeXN0ZW1zLCBJbmMuCiswYmU2ICBEb25nIEd1YW4gSHVtZW4gV29uZGVyZnVsIFdpcmUgQ2FibGUgRmFjdG9yeQorMGJlZCAgU2lsaWNvbiBMYWJzCisJMTEwMCAgTUVJIChUTSkgQ2FzaGZsb3ctU0MgQmlsbC9Wb3VjaGVyIEFjY2VwdG9yCiswYmVlICBMVEsgSW5kdXN0cmllcywgTHRkCiswYmVmICBXYXkyQ2FsbCBDb21tdW5pY2F0aW9ucworMGJmMCAgUGFjZSBNaWNybyBUZWNobm9sb2d5IFBMQworMGJmMSAgSW50cmFjb20gUy5BLgorCTAwMDEgIG5ldE1vZCBEcml2ZXIgVmVyIDIuNC4xNyAoQ0FQSSkKKwkwMDAyICBuZXRNb2QgRHJpdmVyIFZlciAyLjQgKENBUEkpCisJMDAwMyAgbmV0TW9kIERyaXZlciBWZXIgMi40IChDQVBJKQorMGJmMiAgS29uZXh4CiswYmY2ICBBZGRvbmljcyBUZWNobm9sb2dpZXMsIEluYy4KKwkwMTAzICBTdG9yYWdlIERldmljZQorCTEyMzQgIFN0b3JhZ2UgRGV2aWNlCisJYTAwMCAgQ2FibGUgMjA1IChUUFApCisJYTAwMSAgQ2FibGUgMjA1CisJYTAwMiAgSURFIEJyaWRnZQorMGJmNyAgU3VubnkgR2lrZW4sIEluYy4KKzBiZjggIEZ1aml0c3UgU2llbWVucyBDb21wdXRlcnMKKwkxMDAxICBGdWppdHN1IFBvY2tldCBMb294IDYwMCBQREEKKzBjMDQgIE1PVE8gRGV2ZWxvcG1lbnQgR3JvdXAsIEluYy4KKzBjMDUgIEFwcGlhbiBHcmFwaGljcworMGMwNiAgSGFzYnJvIEdhbWVzLCBJbmMuCiswYzA3ICBJbmZpbml0ZSBEYXRhIFN0b3JhZ2UsIEx0ZAorMGMwOCAgQWdhdGUKKwkwMzc4ICBRIDE2TUIgU3RvcmFnZSBEZXZpY2UKKzBjMDkgIENvbWpldCBJbmZvcm1hdGlvbiBTeXN0ZW0KKwlhNWE1ICBMaXR0byBWZXJzaW9uIFVTQjIuMAorMGMwYSAgSGlnaHBvaW50IFRlY2hub2xvZ2llcywgSW5jLgorMGMwYiAgRHVyYSBNaWNybywgSW5jLiAoQWNvbWRhdGEpCisJMjdjYiAgNi1pbi0xIEZsYXNoIFJlYWRlciBhbmQgV3JpdGVyCisJMjdkNyAgTXVsdGkgTWVtb3J5IHJlYWRlci93cml0ZXIgTUQtMDA1CisJMjdkYSAgTXVsdGkgTWVtb3J5IHJlYWRlci93cml0ZXIgTUQtMDA1CisJMjdkYyAgTXVsdGkgTWVtb3J5IHJlYWRlci93cml0ZXIgTUQtMDA1CisJMjdlNyAgMyw1JycgSEREIGNhc2UgTUQtMjMxCisJMjdlZSAgMyw1JycgSEREIGNhc2UgTUQtMjMxCisJMjgxNCAgMyw1JycgSEREIGNhc2UgTUQtMjMxCisJMjgxNSAgMyw1JycgSEREIGNhc2UgTUQtMjMxCisJMjgxZCAgMyw1JycgSEREIGNhc2UgTUQtMjMxCisJYTEwOSAgQ0YvU00gUmVhZGVyIGFuZCBXcml0ZXIKKwlhMTBjICBTRC9NUyBSZWFkZXIgYW5kIFdyaXRlcgorCWIwMDEgIFVTQiAyLjAgTWFzcyBTdG9yYWdlIElERSBhZGFwdGVyCisJYjAwNCAgTU1DL1NEIFJlYWRlciBhbmQgV3JpdGVyCiswYzEyICBaZXJvcGx1cworCTAwMDUgIFBTWCBWaWJyYXRpb24gRmVlZGJhY2sgQ29udmVydGVyCisJODgwOSAgUmVkIE9jdGFuZSBJZ25pdGlvbiBYYm94IEREUiBQYWQKKzBjMTUgIElyaXMgR3JhcGhpY3MKKzBjMTYgIEd5cmF0aW9uLCBJbmMuCisJMDA4MCAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKwkwMDgxICBlSG9tZSBJbmZyYXJlZCBSZWNlaXZlcgorMGMxNyAgQ3liZXJib2FyZCBBL1MKKzBjMTggIFN5bmVyVGVrIEtvcmVhLCBJbmMuCiswYzE5ICBjeWJlclBJWElFLCBJbmMuCiswYzFhICBTaWxpY29uIE1vdGlvbiwgSW5jLgorMGMxYiAgTUlQUyBUZWNobm9sb2dpZXMKKzBjMWMgIEhhbmcgWmhvdSBTaWxhbiBFbGVjdHJvbmljcyBDby4sIEx0ZAorMGMyMiAgVGFsbHkgUHJpbnRlciBDb3JwLgorMGMyMyAgTGVybm91dCArIEhhdXNwaWUKKzBjMjQgIFRhaXlvIFl1ZGVuCisJMDAwMSAgQmx1ZXRvb3RoIEFkYXB0b3IKKwkwMDAyICBCbHVldG9vdGggRGV2aWNlMgorCTAwMDUgIEJsdWV0b290aCBEZXZpY2UoQkMwNC1FeHRlcm5hbCkKKwkwMDBiICBCbHVldG9vdGggRGV2aWNlKEJDMDQtRXh0ZXJuYWwpCisJMDAwYyAgQmx1ZXRvb3RoIEFkYXB0b3IKKwkwMDBlICBCbHVldG9vdGggRGV2aWNlKEJDMDQtRXh0ZXJuYWwpCisJMDAwZiAgQmx1ZXRvb3RoIERyaXZlciAoVjIuMCtFRFIpCisJMDAxMCAgQmx1ZXRvb3RoIERldmljZShCQzA0LUV4dGVybmFsKQorCTAwMTIgIEJsdWV0b290aCBEZXZpY2UoQkMwNC1FeHRlcm5hbCkKKwkwMDE4ICBCbHVldG9vdGggRGV2aWNlKEJDMDQtRXh0ZXJuYWwpCisJMDAxOSAgQmx1ZXRvb3RoIERldmljZQorCTBjMjQgIEJsdWV0b290aCBEZXZpY2UoU0FNUExFKQorCWZmZmYgIEJsdWV0b290aCBtb2R1bGUgd2l0aCBCbHVlQ29yZSBpbiBERlUgbW9kZQorMGMyNSAgU2FtcG8gQ29ycC4KKwkwMzEwICBTY3JlYW0gQ2FtCiswYzI3ICBSRklEZWFzLCBJbmMKKwkzYmZhICBwY1Byb3ggQ2FyZCBSZWFkZXIKKzBjMmUgIE1ldHJvCisJMDIwMCAgTWV0cm9sb2dpYyBTY2FubmVyCiswYzM1ICBFYWdsZXRyb24sIEluYy4KKzBjMzYgIEUgSW5rIENvcnAuCiswYzM3ICBlLkRpZ2l0YWwKKzBjMzggIERlciBBbiBFbGVjdHJpYyBXaXJlICYgQ2FibGUgQ28uLCBMdGQKKzBjMzkgIElGUgorMGMzYSAgRnVydWkgUHJlY2lzZSBDb21wb25lbnQgKEt1bnNoYW4pIENvLiwgTHRkCiswYzNiICBLb21hdHN1LCBMdGQKKzBjM2MgIFJhZGl1cyBDby4sIEx0ZAorMGMzZCAgSW5ub2NvbSwgSW5jLgorMGMzZSAgTmV4dGNlbGwsIEluYy4KKzBjNDQgIE1vdG9yb2xhIGlERU4KKwkwMDIxICBpREVOIFAyazAgRGV2aWNlCisJMDAyMiAgaURFTiBQMmsxIERldmljZQorCTAzYTIgIGlERU4gU21hcnRwaG9uZQorMGM0NSAgTWljcm9kaWEKKwkxMDIwICBNYXNzIFN0b3JhZ2UgUmVhZGVyCisJMTAyOCAgTWFzcyBTdG9yYWdlIFJlYWRlcgorCTEwMzAgIE1hc3MgU3RvcmFnZSBSZWFkZXIKKwkxMDMxICBTb25peCBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMTAzMiAgTWFzcyBTdG9yYWdlIFJlYWRlcgorCTEwMzMgIFNvbml4IE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkxMDM0ICBNYXNzIFN0b3JhZ2UgUmVhZGVyCisJMTAzNSAgTWFzcyBTdG9yYWdlIFJlYWRlcgorCTEwMzYgIE1hc3MgU3RvcmFnZSBSZWFkZXIKKwkxMDM3ICBTb25peCBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMTA1MCAgQ0YgQ2FyZCBSZWFkZXIKKwkxMDU4ICBIREQgUmVhZGVyCisJMTA2MCAgaUZsYXNoIFNNLURpcmVjdCBDYXJkIFJlYWRlcgorCTEwNjEgIE1hc3MgU3RvcmFnZSBSZWFkZXIKKwkxMDYyICBNYXNzIFN0b3JhZ2UgUmVhZGVyCisJMTA2MyAgU29uaXggTWFzcyBTdG9yYWdlIERldmljZQorCTEwNjQgIE1hc3MgU3RvcmFnZSBSZWFkZXIKKwkxMDY1ICBNYXNzIFN0b3JhZ2UgUmVhZGVyCisJMTA2NiAgTWFzcyBTdG9yYWdlIFJlYWRlcgorCTEwNjcgIE1hc3MgU3RvcmFnZSBSZWFkZXIKKwkxMTU4ICBBNTZBSworCTE4NGMgIFZvSVAgUGhvbmUKKwk2MDAxICBHZW5pdXMgVmlkZW9DQU0gTkIKKwk2MDA1ICBTd2VleCBNaW5pIFdlYmNhbQorCTYwMDcgIFZpZGVvQ0FNIEV5ZQorCTYwMDkgIFZpZGVvQ0FNIEV4cHJlc3NJSQorCTYwMGQgIFR3aW5rbGVDYW0gVVNCIGNhbWVyYQorCTYwMTEgIFBDIENhbWVyYSAoU045QzEwMikKKwk2MDE5ICBQQyBDYW1lcmEgKFNOOUMxMDIpCisJNjAyNCAgVmlkZW9DQU0gRXhwcmVzc0lJCisJNjAyNSAgVmlkZW9DQU0gRXhwcmVzc0lJCisJNjAyOCAgVHlwaG9vbiBFYXN5Y2FtIFVTQiAzMzBLIChvbGRlcikKKwk2MDI5ICBUcmlwbGV4IGktbWluaSBQQyBDYW1lcmEKKwk2MDJhICBNZWFkZSBFVFgtMTA1RUMgQ2FtZXJhCisJNjAyYiAgVmlkZW9DQU0gTkIgMzAwCisJNjAyYyAgQ2xhcyBPaGxzb24gVFdDLTMwWE9QIFdlYmNhbQorCTYwMmQgIFZpZGVvQ0FNIEV4cHJlc3NJSQorCTYwMmUgIFZpZGVvQ0FNIE1lc3NlbmdlcgorCTYwMzAgIFZpZGVvQ0FNIEV4cHJlc3NJSQorCTYwM2YgIFZpZGVvQ0FNIEV4cHJlc3NJSQorCTYwNDAgIENDRCBQQyBDYW1lcmEgKFBDMzkwQSkKKwk2MDZhICBDQ0QgUEMgQ2FtZXJhIChQQzM5MEEpCisJNjA3YSAgQ0NEIFBDIENhbWVyYSAoUEMzOTBBKQorCTYwN2IgIFdpbjIgUEMgQ2FtZXJhCisJNjA3YyAgQ0NEIFBDIENhbWVyYSAoUEMzOTBBKQorCTYwN2UgIENDRCBQQyBDYW1lcmEgKFBDMzkwQSkKKwk2MDgwICBBdWRpbyAoTWljcm9waG9uZSkKKwk2MDgyICBWaWRlb0NBTSBMb29rCisJNjA4MyAgVmlkZW9DQU0gTG9vaworCTYwOGMgIFZpZGVvQ0FNIExvb2sKKwk2MDhlICBWaWRlb0NBTSBMb29rCisJNjA4ZiAgVmlkZW9DQU0gTG9vaworCTYwYTggIFZpZGVvQ0FNIExvb2sKKwk2MGFhICBWaWRlb0NBTSBMb29rCisJNjBhYiAgUEMgQ2FtZXJhCisJNjBhZiAgVmlkZW9DQU0gTG9vaworCTYwYjAgIEdlbml1cyBWaWRlb0NhbSBMb29rCisJNjBjMCAgUEMgQ2FtZXJhIHdpdGggTWljIChTTjlDMTA1KQorCTYwYzggIFdpbjIgUEMgQ2FtZXJhCisJNjBjYyAgQ29tcG9zaXRlIERldmljZQorCTYwZWMgIENvbXBvc2l0ZSBEZXZpY2UKKwk2MGVmICBXaW4yIFBDIENhbWVyYQorCTYwZmEgIFBDIENhbWVyYSB3aXRoIE1pYyAoU045QzEwNSkKKwk2MGZiICBDb21wb3NpdGUgRGV2aWNlCisJNjBmYyAgUEMgQ2FtZXJhIHdpdGggTWljIChTTjlDMTA1KQorCTYwZmUgIEF1ZGlvIChNaWNyb3Bob25lKQorCTYxMDggIFdpbjIgUEMgQ2FtZXJhCisJNjEyMiAgUEMgQ2FtZXJhIChTTjlDMTEwKQorCTYxMjggIFBDIENhbWVyYSAoU045QzMyNSArIE9NNjgwMikKKwk2MTIzICBQQyBDYW1lcmEgKFNOOUMxMTApCisJNjEyYSAgUEMgQ2FtZXJhIChTTjlDMzI1KQorCTYxMmMgIFBDIENhbWVyYSAoU045QzExMCkKKwk2MTJlICBQQyBDYW1lcmEgKFNOOUMxMTApCisJNjEyZiAgUEMgQ2FtZXJhIChTTjlDMTEwKQorCTYxMzAgIFBDIENhbWVyYSAoU045QzEyMCkKKwk2MTM4ICBXaW4yIFBDIENhbWVyYQorCTYxM2EgIFBDIENhbWVyYSAoU045QzEyMCkKKwk2MTNiICBXaW4yIFBDIENhbWVyYQorCTYxM2MgIFBDIENhbWVyYSAoU045QzEyMCkKKwk2MTNlICBQQyBDYW1lcmEgKFNOOUMxMjApCisJNjI0MCAgUEMgQ2FtZXJhIChTTjlDMjAxICsgTUkxMzAwKQorCTYyNDIgIFBDIENhbWVyYSAoU045QzIwMSArIE1JMTMxMCkKKwk2MjQzICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBTNUs0QUFGWCkKKwk2MjQ4ICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBPVjk2NTUpCisJNjI0YiAgUEMgQ2FtZXJhIChTTjlDMjAxICsgQ1gxMzMyKQorCTYyNGMgIFBDIENhbWVyYSAoU045QzIwMSArIE1JMTMyMCkKKwk2MjRlICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBTT0k5NjgpCisJNjI0ZiAgUEMgQ2FtZXJhIChTTjlDMjAxICsgT1Y5NjUwKQorCTYyNTMgIFBDIENhbWVyYSAoU045QzIwMSArIE9WOTY1MCkKKwk2MjYwICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBPVjc2NzBJU1ApCisJNjI2MiAgUEMgQ2FtZXJhIChTTjlDMjAxICsgT002ODAyKQorCTYyNzAgIFBDIENhbWVyYSAoU045QzIwMSArIE1JMDM2MC9NVDlWMDExIG9yIE1JMDM2MFNPQy9NVDlWMTExKSBVLUNBTSBQQyBDYW1lcmEgTkU4NzgsIFdoaXRjb20gV0hDMDE3LCAuLi4KKwk2MjdhICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBTNUs1M0JFQikKKwk2MjdiICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBPVjc2NjApCisJNjI3YyAgUEMgQ2FtZXJhIChTTjlDMjAxICsgSFY3MTMxUikKKwk2MjdmICBQQyBDYW1lcmEgKFNOOUMyMDEgKyBPVjk2NXggKyBFRVBST00pCisJNjI4MCAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMiArIE1JMTMwMCkKKwk2MjgyICBQQyBDYW1lcmEgd2l0aCBNaWNyb3Bob25lIChTTjlDMjAyICsgTUkxMzEwKQorCTYyODMgIFBDIENhbWVyYSB3aXRoIE1pY3JvcGhvbmUgKFNOOUMyMDIgKyBTNUs0QUFGWCkKKwk2Mjg4ICBQQyBDYW1lcmEgd2l0aCBNaWNyb3Bob25lIChTTjlDMjAyICsgT1Y5NjU1KQorCTYyOGEgIFBDIENhbWVyYSB3aXRoIE1pY3JvcGhvbmUgKFNOOUMyMDIgKyBJQ00xMDcpCisJNjI4YiAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMiArIENYMTMzMikKKwk2MjhjICBQQyBDYW1lcmEgd2l0aCBNaWNyb3Bob25lIChTTjlDMjAyICsgTUkxMzIwKQorCTYyOGUgIFBDIENhbWVyYSB3aXRoIE1pY3JvcGhvbmUgKFNOOUMyMDIgKyBTT0k5NjgpCisJNjI4ZiAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMiArIE9WOTY1MCkKKwk2MmEwICBQQyBDYW1lcmEgd2l0aCBNaWNyb3Bob25lIChTTjlDMjAyICsgT1Y3NjcwSVNQKQorCTYyYTIgIFBDIENhbWVyYSB3aXRoIE1pY3JvcGhvbmUgKFNOOUMyMDIgKyBPTTY4MDIpCisJNjJiMCAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMSArIE1JMDM2MC9NVDlWMDExIG9yIE1JMDM2MFNPQy9NVDlWMTExKQorCTYyYjMgIFBDIENhbWVyYSB3aXRoIE1pY3JvcGhvbmUgKFNOOUMyMDIgKyBPVjk2NTUpCisJNjJiYSAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMiArIFM1SzUzQkVCKQorCTYyYmIgIFBDIENhbWVyYSB3aXRoIE1pY3JvcGhvbmUgKFNOOUMyMDIgKyBPVjc2NjApCisJNjJiYyAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMiArIEhWNzEzMVIpCisJNjJiZSAgUEMgQ2FtZXJhIHdpdGggTWljcm9waG9uZSAoU045QzIwMiArIE9WNzY2MykKKwk2MmMwICBTb25peCBVU0IgMi4wIENhbWVyYQorCTYyZTAgIE1TSSBTdGFyY2FtIFJhY2VyCisJNjNlMCAgU29uaXggSW50ZWdyYXRlZCBXZWJjYW0KKwk2M2Y4ICBTb25peCBJbnRlZ3JhdGVkIFdlYmNhbQorCTgwMDAgIERDMzFWQworCTgwMDYgIER1YWwgTW9kZSBDYW1lcmEgKDgwMDYgVkdBKQorCTgwMGEgIFZpdml0YXIgVml2aWNhbTMzNTBCCiswYzQ2ICBXYXZlUmlkZXIgQ29tbXVuaWNhdGlvbnMsIEluYy4KKzBjNGIgIFJlaW5lciBTQ1QgS2FydGVuc3lzdGVtZSBHbWJICisJMDEwMCAgY3liZXJKYWNrIGUtY29tL3BpbnBhZAorCTAzMDAgIGN5YmVySmFjayBwaW5wYWQoYSkKKzBjNTIgIFNlYWxldmVsIFN5c3RlbXMsIEluYy4KKwkyMTAxICBTZXJpYWwgQ29udmVydGVyCiswYzUzICBWaWV3UExVUywgSW5jLgorMGM1NCAgR2xvcnksIEx0ZAorMGM1NSAgU3BlY3RydW0gRGlnaXRhbCwgSW5jLgorCTA1MTAgIFNwZWN0cnVtIERpZ2l0YWwgWERTNTEwIEpUQUcgRGVidWdnZXIKKwkwNTQwICBTUEk1NDAKKwk1NDE2ICBUTVMzMjBDNTQxNiBEU0sKKwk2NDE2ICBUTVMzMjBDNjQxNiBEREIKKzBjNTYgIEJpbGxpb24gQnJpZ2h0LCBMdGQKKzBjNTcgIEltYWdpbmF0aXZlIERlc2lnbiBPcGVyYXRpb24gQ28uLCBMdGQKKzBjNTggIFZpZGFyIFN5c3RlbXMgQ29ycC4KKzBjNTkgIERvbmcgR3VhbiBTaGlua28gV2lyZSBDby4sIEx0ZAorMGM1YSAgVFJTIEludGVybmF0aW9uYWwgTWZnLiwgSW5jLgorMGM1ZSAgWHl0cm9uaXggUmVzZWFyY2ggJiBEZXNpZ24KKzBjNjAgIEFwb2dlZSBFbGVjdHJvbmljcyBDb3JwLgorMGM2MiAgQ2hhbnQgU2luY2VyZSBDby4sIEx0ZAorMGM2MyAgVG9rbywgSW5jLgorMGM2NCAgU2lnbmFsaXR5IFN5c3RlbSBFbmdpbmVlcmluZyBDby4sIEx0ZAorMGM2NSAgRW1pbmVuY2UgRW50ZXJwcmlzZSBDby4sIEx0ZAorMGM2NiAgUmV4b24gRWxlY3Ryb25pY3MgQ29ycC4KKzBjNjcgIENvbmNlcHQgVGVsZWNvbSwgTHRkCiswYzcwICBNQ1QgRWxla3Ryb25pa2xhZGVuCisJMDAwMCAgVVNCMDggRGV2ZWxvcG1lbnQgYm9hcmQKKzBjNzQgIE9wdHJvbmljIExhYm9yYXRvcmllcyBJbmMuCisJMDAwMiAgT0wgNzAwLTMwIEdvbmlvbWV0ZXIKKzBjNzYgIEpNVGVrLCBMTEMuCisJMDAwMSAgTWFzcyBTdG9yYWdlIENvbnRyb2xsZXIKKwkwMDAyICBNYXNzIFN0b3JhZ2UgQ29udHJvbGxlcgorCTAwMDMgIFVTQmRpc2sKKwkwMDA0ICBNYXNzIFN0b3JhZ2UgQ29udHJvbGxlcgorCTAwMDUgIFRyYW5zY2VuZCBGbGFzaCBkaXNrCisJMDAwNiAgVHJhbnNjZW5kIEpldEZsYXNoCisJMDAwNyAgTWFzcyBTdG9yYWdlIERldmljZQorCTE2MDUgIFNTUyBIZWFkcGhvbmUgU2V0CiswYzc3ICBTaXBpeCBHcm91cCwgTHRkCisJMTAwMSAgU2lQaXggV2ViMgorCTEwMDIgIFNpUGl4IFNDMjEwMAorCTEwMTAgIFNpUGl4IFNuYXAKKwkxMDExICBTaVBpeCBCbGluayAyCisJMTAxNSAgU2lQaXggQ0FNZWxlb24KKzBjNzggIERldHRvIENvcnAuCiswYzc5ICBOdUNvbm5leCBUZWNobm9sb2dpZXMgUHRlLiwgTHRkCiswYzdhICBXaW5nLVNwYW4gRW50ZXJwcmlzZSBDby4sIEx0ZAorMGM4NiAgTkRBIFRlY2hub2xvZ2llcywgSW5jLgorMGM4OCAgS3lvY2VyYSBXaXJlbGVzcyBDb3JwLgorCTAwMjEgIEhhbmRoZWxkCisJMTdkYSAgUXVhbGNvbW0gS3lvY2VyYSBDRE1BIFRlY2hub2xvZ2llcyBNU00KKzBjODkgIEhvbmRhIFRzdXNoaW4gS29neW8gQ28uLCBMdGQKKzBjOGEgIFBhdGh3YXkgQ29ubmVjdGl2aXR5LCBJbmMuCiswYzhiICBXYXZlZmx5IENvcnAuCiswYzhjICBDb2FjdGl2ZSBOZXR3b3JrcworMGM4ZCAgVGVtcG8KKzBjOGUgIENlc3Njb20gQ28uLCBMdGQKKwk2MDAwICBMdXhpYW4gU2VyaWVzCiswYzhmICBBcHBsaWVkIE1pY3Jvc3lzdGVtcworMGM5OCAgQmVya3NoaXJlIFByb2R1Y3RzLCBJbmMuCisJMTE0MCAgVVNCIFBDIFdhdGNoZG9nCiswYzk5ICBJbm5vY2hpcHMgQ28uLCBMdGQKKzBjOWEgIEhhbndvb2wgUm9ib3RpY3MgQ29ycC4KKzBjOWIgIEpvYmluIFl2b24sIEluYy4KKzBjOWQgIFNlbVRlaworCTAxNzAgIDM4NzMgTWFudWFsIEluc2VydCBjYXJkIHJlYWRlcgorMGNhMiAgWnlmZXIKKzBjYTMgIFNlZ2EgQ29ycC4KKzBjYTQgIFNUJlQgSW5zdHJ1bWVudCBDb3JwLgorMGNhNSAgQkFFIFN5c3RlbXMgQ2FuYWRhLCBJbmMuCiswY2E2ICBDYXN0bGVzIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkwMDEwICBFWlVTQiBQQy9TQyBTbWFydCBDYXJkIFJlYWRlcgorCTAwNTAgIEVaMjIwUFUgUmVhZGVyIENvbnRyb2xsZXIKKwkxMDc3ICBCbHVkcml2ZSBGYW1pbHkgU21hcnQgQ2FyZCBSZWFkZXIKKwkxMDdlICBSZWFkZXIgQ29udHJvbGxlcgorCTIwMTAgIG15UGFkMTEwIFBDL1NDIFNtYXJ0IENhcmQgUmVhZGVyCiswY2E3ICBJbmZvcm1hdGlvbiBTeXN0ZW1zIExhYm9yYXRvcmllcworMGNhZCAgTW90b3JvbGEgQ0dJU1MKKwk5MDAxICBQb3dlclBhZCBQb2NrZXQgUEPCoERldmljZQorMGNhZSAgQXNjb20gQnVzaW5lc3MgU3lzdGVtcywgTHRkCiswY2FmICBCdXNsaW5rCisJMjUwNyAgSGktU3BlZWQgVVNCLXRvLUlERSBCcmlkZ2UgQ29udHJvbGxlcgorCTI1MTUgIEZsYXNoIERpc2sgRW1iZWRkZWQgSHViCisJMjUxNiAgRmxhc2ggRGlzayBTZWN1cml0eSBEZXZpY2UKKwkyNTE3ICBGbGFzaCBEaXNrIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkyNWM3ICBIaS1TcGVlZCBVU0ItdG8tSURFIEJyaWRnZSBDb250cm9sbGVyCisJM2EwMCAgSGFyZCBEcml2ZQorCTNhMjAgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkzYWNkICBNYXNzIFN0b3JhZ2UgRGV2aWNlCiswY2IwICBGbHlpbmcgUGlnIFN5c3RlbXMKKzBjYjEgIElubm92b25pY3MsIEluYy4KKzBjYjYgIENlbGVzdGl4IE5ldHdvcmtzLCBQdGUuLCBMdGQKKzBjYjcgIFNpbmdhdHJvbiBFbnRlcnByaXNlIENvLiwgTHRkCiswY2I4ICBPcHRpY2lzIENvLiwgTHRkCiswY2JhICBUcnVzdCBFbGVjdHJvbmljIChTaGFuZ2hhaSkgQ28uLCBMdGQKKzBjYmIgIFNoYW5naGFpIERhcm9uZyBFbGVjdHJvbmljcyBDby4sIEx0ZAorMGNiYyAgUGFsbWF4IFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkwMTAxICBQb2NrZXQgUEMgUDZDCisJMDIwMSAgUGVyc29uYWwgRGlnaXRhbCBBc3Npc3RhbnQKKwkwMzAxICBQZXJzb25hbCBEaWdpdGFsIEFzc2lzdGFudCBQNk0rCisJMDQwMSAgUG9ja2V0IFBDCiswY2JkICBQZW50ZWwgQ28uLCBMdGQgKEVsZWN0cm9uaWNzIEVxdWlwbWVudCBEaXYuKQorMGNiZSAgS2VyeXggVGVjaG5vbG9naWVzLCBJbmMuCiswY2JmICBVbmlvbiBHZW5pdXMgQ29tcHV0ZXIgQ28uLCBMdGQKKzBjYzAgIEt1b24gWWkgSW5kdXN0cmlhbCBDb3JwLgorMGNjMSAgR2l2ZW4gSW1hZ2luZywgTHRkCiswY2MyICBUaW1leCBDb3JwLgorMGNjMyAgUmltYWdlIENvcnAuCiswY2M0ICBlbXN5cyBHbWJICiswY2M1ICBTZW5kbworMGNjNiAgSW50ZXJtYWdpYyBDb3JwLgorMGNjNyAgS29udHJvbiBNZWRpY2FsIEFHCiswY2M4ICBUZWNobm90b29scyBDb3JwLgorMGNjOSAgQnJvYWRNQVggVGVjaG5vbG9naWVzLCBJbmMuCiswY2NhICBBbXBoZW5vbAorMGNjYiAgU0tOZXQgQ28uLCBMdGQKKzBjY2MgIERvbWV4IFRlY2hub2xvZ3kgQ29ycC4KKzBjY2QgIFRlcnJhVGVjIEVsZWN0cm9uaWMgR21iSAorCTAwMTIgIFBIQVNFIDI2CisJMDAxMyAgUEhBU0UgMjYKKwkwMDE0ICBQSEFTRSAyNgorCTAwMTUgIEZsYXNoIFVwZGF0ZSBmb3IgVGVycmFUZWMgUEhBU0UgMjYKKwkwMDIxICBDYW1lbyBHcmFic3RlciAyMDAKKwkwMDIzICBNeXN0aWZ5IENsYXcKKwkwMDI4ICBBdXJlb24gNS4xIE1rSUkKKwkwMDMyICBNSURJIEhVQkJMRQorCTAwMzUgIE1pZGl0ZWNoIFBsYXknbiBSb2xsCisJMDAzNiAgQ2luZXJneSAyNTAgQXVkaW8KKwkwMDM3ICBDaW5lcmd5IDI1MCBBdWRpbworCTAwMzggIENpbmVyZ3kgVF4yIERWQi1UIFJlY2VpdmVyCisJMDAzOSAgR3JhYnN0ZXIgQVYgNDAwCisJMDAzYiAgQ2luZXJneSA0MDAKKwkwMDNjICBHcmFic3RlciBBViAyNTAKKwkwMDQyICBDaW5lcmd5IEh5YnJpZCBUIFhTCisJMDA0MyAgQ2luZXJneSBUIFhTCisJMDA0ZSAgQ2luZXJneSBUIFhTCisJMDA0ZiAgQ2luZXJneSBBbmFsb2cgWFMKKwkwMDVjICBDaW5lcmd5IFTCsgorCTAwNjkgIENpbmVyZ3kgVCBYRSBEVkItVCBSZWNlaXZlcgorMGNkNCAgQmFuZyBPbHVmc2VuCisJMDEwMSAgQmVvbGlua1BDMgorMGNkNyAgTmV3Q2hpcCBTLnIubC4KKzBjZDggIEpTIERpZ2l0ZWNoLCBJbmMuCisJMjAwNyAgU21hcnQgQ2FyZCBSZWFkZXIvSlNUVS05NzAwCiswY2Q5ICBIaXRhY2hpIFNoaW4gRGluIENhYmxlLCBMdGQKKzBjZGUgIFotQ29tCisJMDAwMSAgTTRZLTc1MAorCTAwMDIgIFhJLTcyNS83MjYgUHJpc20yLjUgODAyLjExYiBBZGFwdGVyCisJMDAwMyAgU2FnZW0gODAyLjExYiBEb25nbGUKKwkwMDA0ICBTYWdlbSA4MDIuMTFiIERvbmdsZQorCTAwMDUgIFhJLTczNSBQcmlzbTMgODAyLjExYiBBZGFwdGVyCisJMDAwNiAgTWVkaW9uIDQwOTAwIDgwMi4xMWIgQWRhcHRlcgorCTAwMDggIFNpdGVjb20gV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyIDEwMEcrIFdMLTEyNQorCTAwMDkgIChaRDEyMTEpSUVFRSA4MDIuMTFiK2cgQWRhcHRlcgorCTAwMTEgIFpEMTIxMQorCTAwMTIgIEFSNTUyMworCTAwMTMgIEFSNTUyMyBkcml2ZXIgKG5vIGZpcm13YXJlKQorCTAwMTQgIE5CIDgwMi4xMWcgV2lyZWxlc3MgTEFOIEFkYXB0ZXIoMzg4N0EpCisJMDAxNSAgWm9vbSBXaXJlbGVzcy1HCisJMDAxNiAgTkIgODAyLjExZyBXaXJlbGVzcyBMQU4gQWRhcHRlcigzODg3QSkKKwkwMDE4ICBOQiA4MDIuMTFhL2IvZyBXaXJlbGVzcyBMQU4gQWRhcHRlcigzODg3QSkKKwkwMDFhICA4MDIuMTFiZworCTAwMWMgIDgwMi4xMWIvZyBXaXJlbGVzcyBOZXR3b3JrIEFkYXB0ZXIKKwkwMDIwICBXaS1GaSBXaXJlbGVzcyBMQU4gQWRhcHRlcgorCTAwMjIgIDgwMi4xMWIvZy9uIFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlcgorCTAwMjMgIFVCODEgODAyLjExYmduCisJMDAyNiAgVUI4MiA4MDIuMTFhYmduCiswY2U5ICBwaWNvIFRlY2hub2xvZ3kKKwkxMDAxICBQaWNvU2NvcGUzMjA0CiswY2YxICBlLUNvbm4gRWxlY3Ryb25pYyBDby4sIEx0ZAorMGNmMiAgRU5FIFRlY2hub2xvZ3ksIEluYy4KKzBjZjMgIEF0aGVyb3MgQ29tbXVuaWNhdGlvbnMsIEluYy4KKwkwMDAxICBBUjU1MjMKKwkwMDAyICBBUjU1MjMgKG5vIGZpcm13YXJlKQorCTAwMDMgIEFSNTUyMworCTAwMDQgIEFSNTUyMyAobm8gZmlybXdhcmUpCisJMDAwNSAgQVI1NTIzCisJMDAwNiAgQVI1NTIzIChubyBmaXJtd2FyZSkKKwk5MTcwICBBUjkxNzAgODAyLjExbgorCTEwMDEgIFRHMTIxTgorMGNmNCAgRm9tdGV4IENvcnAuCiswY2Y1ICBDZWxsaW5rIENvLiwgTHRkCiswY2Y2ICBDb21wdWNhYmxlIENvcnAuCiswY2Y3ICBpc2hvbmkgTmV0d29ya3MKKzBjZjggIENsYXJpc3lzLCBJbmMuCisJMDc1MCAgQ2xhcml0ZWwtaTc1MCAtIHZwCiswY2Y5ICBDZW50cmFsIFN5c3RlbSBSZXNlYXJjaCBDby4sIEx0ZAorMGNmYSAgSW52aXNvLCBJbmMuCiswY2ZjICBNaW5vbHRhLVFNUywgSW5jLgorMGNmZiAgU0FGQSBNRURJQSBDby4sIEx0ZC4KKwkwMzIwICBTUi0zODBOCiswZDA2ICB0ZWxvcyBFRFYgU3lzdGVtZW50d2lja2x1bmcgR21iSAorMGQwOCAgVVRTdGFyY29tCisJMDYwMiAgRFYwMDcgW3NlcmlhbF0KKwkwNjAzICBEVjAwNyBbc3RvcmFnZV0KKzBkMGIgIENvbnRlbXBvcmFyeSBDb250cm9scworMGQwYyAgQXN0cm9uIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswZDBkICBNS05ldCBDb3JwLgorMGQwZSAgSHlicmlkIE5ldHdvcmtzLCBJbmMuCiswZDBmICBGZW5nIFNoaW4gQ2FibGUgQ28uLCBMdGQKKzBkMTAgIEVsYXN0aWMgTmV0d29ya3MKKwkwMDAxICBTdG9ybVBvcnQgKFdETSkKKzBkMTEgIE1hc3BybyBEZW5rb2ggQ29ycC4KKzBkMTIgIEhhbnNvbCBFbGVjdHJvbmljcywgSW5jLgorMGQxMyAgQk1GIENvcnAuCiswZDE0ICBBcnJheSBDb21tLCBJbmMuCiswZDE1ICBPblN0cmVhbSBiLnYuCiswZDE2ICBIaS1Ub3VjaCBJbWFnaW5nIFRlY2hub2xvZ2llcyBDby4sIEx0ZAorCTAwMDEgIFBob3RvU2h1dHRsZQorCTAwMDIgIFBob3RvIFByaW50ZXIgNzMwIHNlcmllcworCTAwMDQgIFBob3RvIFByaW50ZXIgNjN4UEwvUFMKKwkwMTAwICBQaG90byBQcmludGVyIDYzeFBML1BTCisJMDEwMiAgUGhvdG8gUHJpbnRlciA2NHhQUworCTAxMDMgIFBob3RvIFByaW50ZXIgNzMwIHNlcmllcworCTAxMDQgIFBob3RvIFByaW50ZXIgNjN4UEwvUFMKKwkwMTA1ICBQaG90byBQcmludGVyIDY0eFBTCisJMDIwMCAgUGhvdG8gUHJpbnRlciA2NHhETAorMGQxNyAgTkFMVEVDLCBJbmMuCiswZDE4ICBjb2FYbWVkaWEKKzBkMTkgIEhhbmsgQ29ubmVjdGlvbiBJbmR1c3RyaWFsIENvLiwgTHRkCiswZDMyICBMZW8gSHVpIEVsZWN0cmljIFdpcmUgJiBDYWJsZSBDby4sIEx0ZAorMGQzMyAgQWlyU3BlYWssIEluYy4KKzBkMzQgIFJlYXJkZW4gU3RlZWwgVGVjaG5vbG9naWVzCiswZDM1ICBEYWggS3VuIENvLiwgTHRkCiswZDNhICBQb3NpZmxleCBUZWNobm9sb2dpZXMsIEluYy4KKzBkM2MgIFNyaSBDYWJsZSBUZWNobm9sb2d5LCBMdGQKKzBkM2QgIFRhbmd0b3AgVGVjaG5vbG9neSBDby4sIEx0ZAorCTAwMDEgIEhJRCBLZXlib2FyZAorMGQzZSAgRml0Y29tLCBpbmMuCiswZDNmICBNVFMgU3lzdGVtcyBDb3JwLgorMGQ0MCAgQXNjb3IsIEluYy4KKzBkNDEgIFRhIFl1biBUZXJtaW5hbHMgSW5kdXN0cmlhbCBDby4sIEx0ZAorMGQ0MiAgRnVsbCBEZXIgQ28uLCBMdGQKKzBkNDYgIEtvYmlsIFN5c3RlbXMgR21iSAorCTIwMTIgIEtBQU4gU3RhbmRhcmQgUGx1cyAoU21hcnRjYXJkIHJlYWRlcikKKwkzMDAzICBtSURlbnRpdHkgTGlnaHQgLyBLQUFOIFNJTSBJSUkKKwk0MDAwICBtSURlbnRpdHkgKG1hc3Mgc3RvcmFnZSkKKwk0MDAxICBtSURlbnRpdHkgQmFzaWMvQ2xhc3NpYyAoY29tcG9zaXRlIGRldmljZSkKKwk0MDgxICBtSURlbnRpdHkgQmFzaWMvQ2xhc3NpYyAoaW5zdGFsbGF0aW9ubGVzcykKKzBkNDkgIE1heHRvcgorCTMwMDAgIERyaXZlCisJMzAxMCAgMzAwMExFIERyaXZlCisJMzEwMCAgSGktU3BlZWQgVVNCLUlERSBCcmlkZ2UgQ29udHJvbGxlcgorCTUwMDAgIDUwMDBYVCBEcml2ZQorCTUwMTAgIDUwMDBMRSBEcml2ZQorCTUwMjAgIE1vYmlsZSBIYXJkIERpc2sgRHJpdmUKKwk3MDAwICBPbmVUb3VjaAorCTcwMTAgIE9uZVRvdWNoCiswZDRhICBORiBDb3JwLgorMGQ0YiAgR3JhcGUgU3lzdGVtcywgSW5jLgorMGQ0YyAgVGVkYXMgQUcKKzBkNGQgIENvaGVyZW50LCBJbmMuCiswZDRlICBBZ2VyZSBTeXN0ZW1zIE5ldGhlcmxhbmQgQlYKKwkwNDdhICBXTEFOIENhcmQKKwkxMDAwICBXaXJlbGVzcyBDYXJkIE1vZGVsIDA4MDEKKwkxMDAxICBXaXJlbGVzcyBDYXJkIE1vZGVsIDA4MDIKKzBkNGYgIEVBRFMgQWlyYnVzIEZyYW5jZQorMGQ1MCAgQ2xld2FyZSBHbWJICisJMDAxMSAgVVNCLVRlbXAyIFRoZXJtb21ldGVyCiswZDUxICBWb2xleCAoQXNpYSkgUHRlLiwgTHRkCiswZDUzICBITUkgQ28uLCBMdGQKKzBkNTQgIEhvbG9uIENvcnAuCiswZDU1ICBBU0tBIFRlY2hub2xvZ2llcywgSW5jLgorMGQ1NiAgQVZMQUIgVGVjaG5vbG9neSwgSW5jLgorMGQ1NyAgU29sb21vbiBNaWNyb3RlY2gsIEx0ZAorMGQ1YyAgQmVsa2luCisJYTAwMiAgRjVENjA1MCA4MDIuMTFiIEFkYXB0ZXIKKzBkNWUgIE15YWNvbSwgTHRkCisJMjM0NiAgQlQgRGlnaXRhbCBBY2Nlc3MgYWRhcHRlcgorMGQ1ZiAgQ1NJLCBJbmMuCiswZDYwICBJVkwgVGVjaG5vbG9naWVzLCBMdGQKKzBkNjEgIE1laWx1IEVsZWN0cm9uaWNzIChTaGVuemhlbikgQ28uLCBMdGQKKzBkNjIgIERhcmZvbiBFbGVjdHJvbmljcyBDb3JwLgorCTAwMDMgIFNtYXJ0Y2FyZCBSZWFkZXIKKwkwMDA0ICBGaWx0ZXIgRHJpdmVyCisJMDMwNiAgTTUzMCBNb3VzZQorCTA4MDAgIE1hZ2ljIFdoZWVsCisJMjAyMSAgQU04MDUgS2V5Ym9hcmQKKwkyMDI2ICBURUNPTSBCbHVldG9vdGggRGV2aWNlCisJYTEwMCAgQmVucSBNb3VzZQorMGQ2MyAgRnJpdHogR2VnYXVmIEFHCiswZDY0ICBEWEcgVGVjaG5vbG9neSBDb3JwLgorCTAxMDUgIER1YWwgTW9kZSBEaWdpdGFsIENhbWVyYSAxLjNNCisJMDEwNyAgSG9ydXMgTVQtNDA5IENhbWVyYQorCTAxMDggIER1YWwgTW9kZSBEaWdpdGFsIENhbWVyYQorCTAyMDIgIER1YWwgTW9kZSBWaWRlbyBDYW1lcmEgRGV2aWNlCisJMDMwMyAgRFhHLTMwNVYgQ2FtZXJhCisJMTAwMSAgU2lQaXggU3R5bGVjYW0vVU1BWCBBc3RyYVBpeCAzMjBzCisJMTAwMiAgRmFzaGlvbiBDYW0gMDEgRHVhbC1Nb2RlIERTQyAoVmlkZW8gQ2FtZXJhKQorCTEwMDMgIEZhc2hpb24gQ2FtIER1YWwtTW9kZSBEU0MgKENvbnRyb2xsZXIpCisJMTAyMSAgRC1MaW5rIERTQyAzNTBGCisJMTIwOCAgRHVhbCBNb2RlIFN0aWxsIENhbWVyYSBEZXZpY2UKKwkyMjA4ICBNYXNzIFN0b3JhZ2UKKwkzMTA1ICBEdWFsIE1vZGUgRGlnaXRhbCBDYW1lcmEgRGlzaworCTMxMDggIERpZ2ljYW0gTWFzcyBTdG9yYWdlIERldmljZQorMGQ2NSAgS01KUCBDby4sIEx0ZAorMGQ2NiAgVE1UCiswZDY3ICBBZHZhbmV0LCBJbmMuCiswZDY4ICBTdXBlciBMaW5rIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswZDY5ICBOU0kKKzBkNmEgIE1lZ2Fwb3dlciBJbnRlcm5hdGlvbmFsIENvcnAuCiswZDZiICBBbmQtT3IgTG9naWMKKzBkNzAgIFRyeSBDb21wdXRlciBDby4sIEx0ZAorMGQ3MSAgSGlyYWthd2EgSGV3dGVjaCBDb3JwLgorMGQ3MiAgV2lubWF0ZSBDb21tdW5pY2F0aW9uLCBJbmMuCiswZDczICBIaXQncyBDb21tdW5pY2F0aW9ucywgSW5jLgorMGQ3NiAgTUZQIEtvcmVhLCBJbmMuCiswZDc3ICBQb3dlciBTZW50cnkvTmV3cG9pbnQKKzBkNzggIEphcGFuIERpc3RyaWJ1dG9yIENvcnAuCiswZDdhICBNQVJYIERhdGVudGVjaG5payBHbWJICiswZDdiICBXZWxsY28gVGVjaG5vbG9neSBDby4sIEx0ZAorMGQ3YyAgVGFpd2FuIExpbmUgVGVrIEVsZWN0cm9uaWMgQ28uLCBMdGQKKzBkN2QgIFBoaXNvbiBFbGVjdHJvbmljcyBDb3JwLgorCTAxMDAgIFBTMTAwMS8xMDExLzEwMDYvMTAyNiBGbGFzaCBEaXNrCisJMDExMCAgR2lnYWJ5dGUgRmxleERyaXZlCisJMDEyMCAgRGlzayBQcm8gNjRNQgorCTAxMjQgIEdJR0FCWVRFIERpc2sKKwkwMjQwICBJL08tTWFnaWMvVHJhbnNjZW5kIDYtaW4tMSBDYXJkIFJlYWRlcgorCTExMGUgIE5FQyB1UEQ3MjAxMjEvMTMwIFVTQi1BVEEvQVRBUEkgQnJpZGdlCisJMTI0MCAgQXBhY2VyIDYtaW4tMSBDYXJkIFJlYWRlciAyLjAKKwkxMjcwICBXb2x2ZXJpbmUgU2l4UGFjIDYwMDAKKwkxMzAwICBGbGFzaCBEaXNrCisJMTMyMCAgUFMyMDMxIEZsYXNoIERpc2sKKwkxNDAwICBBdHRhY2hlIDI1Nk1CIFVTQiAyLjAgRmxhc2ggRHJpdmUKKwkxNDIwICBQUzIwNDQgUGVuIERyaXZlCisJMTQ3MCAgVm9zb25pYyBYJ3MtRHJpdmUgSUkrIFZQMjE2MAorCTE5MDAgIFVTQiBUaHVtYiBEcml2ZQorMGQ3ZSAgQW1lcmljYW4gQ29tcHV0ZXIgJiBEaWdpdGFsIENvbXBvbmVudHMKKwkyNTA3ICBIaS1TcGVlZCBVU0ItdG8tSURFIEJyaWRnZSBDb250cm9sbGVyCisJMjUxNyAgSGktU3BlZWQgTWFzcyBTdG9yYWdlIERldmljZQorCTI1YzcgIEhpLVNwZWVkIFVTQi10by1JREUgQnJpZGdlIENvbnRyb2xsZXIKKzBkN2YgIEVzc2VudGlhbCBSZWFsaXR5IExMQworMGQ4MCAgSC5SLiBTaWx2aW5lIEVsZWN0cm9uaWNzLCBJbmMuCiswZDgxICBUZWNobm9WaXNpb24KKzBkODMgIFRoaW5rIE91dHNpZGUsIEluYy4KKzBkODkgIE96IFNvZnR3YXJlCiswZDhhICBLaW5nIEppbSBDby4sIEx0ZAorCTAxMDEgIFRFUFJBIFBSTworMGQ4YiAgQXNjb20gVGVsZWNvbW11bmljYXRpb25zLCBMdGQKKzBkOGMgIEMtTWVkaWEgRWxlY3Ryb25pY3MsIEluYy4KKwkwMDAxICBBdWRpbyBEZXZpY2UKKwkwMDAyICBDb21wb3NpdGUgRGV2aWNlCisJMDAwMyAgU291bmQgRGV2aWNlCisJMDAwNiAgU3Rvcm0gSFAtVVNCNTAwIDUuMSBIZWFkc2V0CisJMDAwYyAgQXVkaW8gQWRhcHRlcgorCTAwMGQgIENvbXBvc2l0ZSBEZXZpY2UKKwkwMDBlICBBdWRpbyBBZGFwdGVyIChQbGFuZXQgVVAtMTAwLCBHZW5pdXMgRy1UYWxrKQorCTAxMDIgIENNMTA2IExpa2UgU291bmQgRGV2aWNlCisJMDEwMyAgVHVydGxlIEJlYWNoIEF1ZGlvIEFkdmFudGFnZSBNaWNybworCTAyMDEgIENNNjUwMQorCTUwMDAgIE1hc3MgU3RvcmFnZSBDb250cm9sbGVyCisJNTIwMCAgTWFzcyBTdG9yYWdlIENvbnRyb2xsZXIoMEQ4Qyw1MjAwKQorCWIyMTMgIFVTQiBQaG9uZSBDTTEwOSAoYWthIENUMjAwMCxWUFQxMDAwKQorMGQ4ZCAgUHJvbW90aW9uICYgRGlzcGxheSBUZWNobm9sb2d5LCBMdGQKKwkwMjM0ICBWLTIzNCBDb21wb3NpdGUgRGV2aWNlCisJMDU1MCAgVi01NTAgQ29tcG9zaXRlIERldmljZQorCTA1NTEgIFYtNTUxIENvbXBvc2l0ZSBEZXZpY2UKKwkwNTUyICBWLTU1MiBDb21wb3NpdGUgRGV2aWNlCisJMDY1MSAgVi02NTEgQ29tcG9zaXRlIERldmljZQorCTA2NTIgIFYtNjUyIENvbXBvc2l0ZSBEZXZpY2UKKwkwNjUzICBWLTY1MyBDb21wb3NpdGUgRGV2aWNlCisJMDY1NCAgVi02NTQgQ29tcG9zaXRlIERldmljZQorCTA2NTUgIFYtNjU1IENvbXBvc2l0ZSBEZXZpY2UKKwkwNjU2ICBWLTY1NiBDb21wb3NpdGUgRGV2aWNlCisJMDY1NyAgVi02NTcgQ29tcG9zaXRlIERldmljZQorCTA2NTggIFYtNjU4IENvbXBvc2l0ZSBEZXZpY2UKKwkwNjU5ICBWLTY1OSBDb21wb3NpdGUgRGV2aWNlCisJMDY2MCAgVi02NjAgQ29tcG9zaXRlIERldmljZQorCTA2NjEgIFYtNjYxIENvbXBvc2l0ZSBEZXZpY2UKKwkwNjYyICBWLTY2MiBDb21wb3NpdGUgRGV2aWNlCisJMDg1MCAgVi04NTAgQ29tcG9zaXRlIERldmljZQorCTA4NTEgIFYtODUxIENvbXBvc2l0ZSBEZXZpY2UKKwkwODUyICBWLTg1MiBDb21wb3NpdGUgRGV2aWNlCisJMDkwMSAgVi05MDEgQ29tcG9zaXRlIERldmljZQorCTA5MDIgIFYtOTAyIENvbXBvc2l0ZSBEZXZpY2UKKwkwOTAzICBWLTkwMyBDb21wb3NpdGUgRGV2aWNlCisJNDc1NCAgVm95YWdlciBETVAgQ29tcG9zaXRlIERldmljZQorCWJiMDAgIEJsb29tYmVyZyBDb21wb3NpdGUgRGV2aWNlCisJYmIwMSAgQmxvb21iZXJnIENvbXBvc2l0ZSBEZXZpY2UKKwliYjAyICBCbG9vbWJlcmcgQ29tcG9zaXRlIERldmljZQorCWJiMDMgIEJsb29tYmVyZyBDb21wb3NpdGUgRGV2aWNlCisJYmIwNCAgQmxvb21iZXJnIENvbXBvc2l0ZSBEZXZpY2UKKwliYjA1ICBCbG9vbWJlcmcgQ29tcG9zaXRlIERldmljZQorCWZmZmUgIEdsb2JhbCBUdW5lciBDb21wb3NpdGUgRGV2aWNlCisJZmZmZiAgVm95YWdlciBETVAgQ29tcG9zaXRlIERldmljZQorMGQ4ZSAgR2xvYmFsIFN1biBUZWNobm9sb2d5LCBJbmMuCisJMDE2MyAgODAyLjExZyA1NCBNYnBzIFdpcmVsZXNzIERvbmdsZQorCTE2MjEgIDgwMi4xMWIgV2lyZWxlc3MgQWRhcHRlcgorCTM3NjIgIDgwMi4xMWcgV2lyZWxlc3MgTWluaSBhZGFwdGVyCisJMzc2MyAgODAyLjExZyBXaXJlbGVzcyBkb25nbGUKKwk3MTAwICA4MDIuMTFiIEFkYXB0ZXIKKwk3MTEwICBXTC0yMTAKKwk3ODAxICBBUjU1MjMKKwk3ODAyICBBUjU1MjMgKG5vIGZpcm13YXJlKQorCTc4MTEgIEFSNTUyMworCTc4MTIgIEFSNTUyMyAobm8gZmlybXdhcmUpCisJN2EwMSAgUFJJU00yNSA4MDIuMTFiIEFkYXB0ZXIKKzBkOGYgIFBpdG5leSBCb3dlcworMGQ5MCAgU3VyZS1GaXJlIEVsZWN0cmljYWwgQ29ycC4KKzBkOTYgIFNrYW5oZXggVGVjaG5vbG9neSwgSW5jLgorCTAwMDAgIEplbm9wdGlrIEpEMzUwIHZpZGVvCisJMzMwMCAgU1gzMzB6IENhbWVyYQorCTQxMDAgIFNYNDEweiBDYW1lcmEKKwk0MTAyICBNRCA5NzAwIENhbWVyYQorCTQxMDQgIEplbm9wdGlrIEpELTQxMDB6M3MKKwk0MTBhICBNZWRpb24gOTgwMS9Ob3ZhdGVjaCBTWC00MTB6CisJNTIwMCAgU1gtNTIweiBDYW1lcmEKKzBkOTcgIFNhbnRhIEJhcmJhcmEgSW5zdHJ1bWVudCBHcm91cAorCTAwMDEgIFNCSUcgQXN0cm9ub215IENhbWVyYSAod2l0aG91dCBmaXJtd2FyZSkKKwkwMTAxICBTQklHIEFzdHJvbm9teSBDYW1lcmEgKHdpdGggZmlybXdhcmUpCiswZDk4ICBNYXJzIFNlbWljb25kdWN0b3IgQ29ycC4KKwkwMzAwICBBdmF5YSBXaXJlbGVzcyBDYXJkCiswZDk5ICBUcmF6ZXIgVGVjaG5vbG9naWVzLCBJbmMuCiswZDlhICBSVFggVGVsZWNvbSBBUworCTAwMDEgIEJsdWV0b290aCBEZXZpY2UKKzBkOWIgIFRhdCBTaGluZyBFbGVjdHJpY2FsIENvLgorMGQ5YyAgQ2hlZSBDaGVuIEhpLVRlY2hub2xvZ3kgQ28uLCBMdGQKKzBkOWQgIFNhbndhIFN1cHBseSwgSW5jLgorMGQ5ZSAgQXZheWEKKwkwMzAwICBXaXJlbGVzcyBDYXJkCiswZDlmICBQb3dlcmNvbSBDby4sIEx0ZAorMGRhMCAgRGFuZ2VyIFJlc2VhcmNoCiswZGExICBTdXpob3UgUGV0ZXIncyBQcmVjaXNlIEluZHVzdHJpYWwgQ28uLCBMdGQKKzBkYTIgIExhbmQgSW5zdHJ1bWVudHMgSW50ZXJuYXRpb25hbCwgTHRkCiswZGEzICBOaXBwb24gRWxlY3Ryby1TZW5zb3J5IERldmljZXMgQ29ycC4KKzBkYTQgIFBvbGFyIEVsZWN0cm8gT1kKKwkwMDAxICBJbnRlcmZhY2UKKzBkYTcgIElPR2VhciwgSW5jLgorMGRhOCAgc29mdERTUCBDby4sIEx0ZAorCTAwMDEgIFNEUyAyMDBBIE9zY2lsbG9zY29wZQorMGRhYiAgQ3ViaWcgR3JvdXAKKwkwMTAwICBEVlIvQ1ZSLU0xNDAgTVAzIFBsYXllcgorMGRhZCAgV2VzdG92ZXIgU2NpZW50aWZpYworMGRiMCAgTWljcm8gU3RhciBJbnRlcm5hdGlvbmFsCisJMTAyMCAgUEMyUEMgV0xBTiBDYXJkCisJMTk2NyAgQmx1ZXRvb3RoIERvbmdsZQorCTQwMTEgIE1lZGlvbiBGbGFzaCBYTCBWMi4wIENhcmQgUmVhZGVyCisJNDYwMCAgODAyLjExYi9nIFR1cmJvIFdpcmVsZXNzIEFkYXB0ZXIKKwk1NTAxICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJNTUwMiAgTWFzcyBTdG9yYWdlIERldmljZQorCTU1MTMgIE1QMyBQbGF5ZXIKKwk1NTE1ICBNUDMgUGxheWVyCisJNTUxNiAgTVAzIFBsYXllcgorCTU1ODEgIE1lZ2EgU2t5IDU1ODAgRFZCLVQgVHVuZXIKKwk2ODIzICA4MDIuMTFiCisJNjgyNiAgSUVFRSA4MDIuMTFnIFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlcgorCTY4NTUgIEJsdWV0b290aCBEZXZpY2UKKwk2ODYxICBNU0ktNjg2MSA4MDIuMTFnIFdpRmkgYWRhcHRlcgorCTY4NjUgIFJUMjU3MAorCTY4NjkgIFJUMjU3MAorCTY4NzQgIFJUMjU3MworCTY4NzcgIFJUMjU3MworCTY4ODEgIEJsdWV0b290aCBDbGFzcyBJIEVEUiBEZXZpY2UKKwk2ODhhICBCbHVldG9vdGggQ2xhc3MgSSBFRFIgRGV2aWNlCisJNjk3MCAgQmx1ZXRvb3RoIGFkYXB0ZXIKKwk2OTdhICBCbHVldG9vdGggRG9uZ2xlCisJNjk4MiAgTWVkaW9uIEZsYXNoIFhMIENhcmQgUmVhZGVyCisJYTg2MSAgUlQyNTczCisJYTg3NCAgUlQyNTczCisJYTk3MCAgQmx1ZXRvb3RoIGRvbmdsZQorCWE5N2EgIEJsdWV0b290aCBFRFIgRGV2aWNlCisJYjk3MCAgQmx1ZXRvb3RoIEVEUiBEZXZpY2UKKwliOTdhICBCbHVldG9vdGggRURSIERldmljZQorMGRiMSAgV2VuIFRlIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswZGIyICBTaGlhbiBId2kgUGx1ZyBQYXJ0cywgUGxhc3RpYyBGYWN0b3J5CiswZGIzICBUZWtyYW0gVGVjaG5vbG9neSBDby4sIEx0ZAorMGRiNCAgQ2h1bmcgRnUgQ2hlbiBZZWggRW50ZXJwcmlzZSBDb3JwLgorMGRiNyAgRUxDT04gU3lzdGVtdGVjaG5paworCTAwMDIgIEdvbGRwZmVpbCBQLUxBTgorMGRiZSAgSml1aCBTaGl1aCBQcmVjaXNpb24gSW5kdXN0cnkgQ28uLCBMdGQKKzBkYmYgIFF1aWsgVGVjaCBTb2x1dGlvbnMKKwkwMDAyICBTbWFydERvbmdsZSBTZWN1cml0eSBLZXkKKwkwMjAwICBIREQgU3RvcmFnZSBTb2x1dGlvbgorCTAyMWIgIFVTQi0yLjAgSURFIEFkYXB0ZXIKKwkwMzAwICBTdG9yYWdlIEFkYXB0ZXIKKwkwMzMzICBTdG9yYWdlIEFkYXB0ZXIKKwkwNzA3ICBaSVYgRHJpdmUKKzBkYzAgIEdyZWF0IE5vdGlvbnMKKzBkYzEgIFRhbWFnYXdhIFNlaWtpIENvLiwgTHRkCiswZGMzICBBdGhlbmEgU21hcnRjYXJkIFNvbHV0aW9ucywgSW5jLgorCTA4MDEgIEFTRURyaXZlIElJSQorCTA4MDIgIEFTRURyaXZlIElJSWUKKwkxMTA0ICBBU0VEcml2ZSBJSUllIEtCCisJMTcwMSAgQVNFS2V5CisJMTcwMiAgQVNFS2V5CiswZGM0ICBNYWNwb3dlciBQZXJpcGhlcmFscywgTHRkCisJMDA0MCAgTWFzcyBTdG9yYWdlIERldmljZQorCTAwNDEgIE1hc3MgU3RvcmFnZSBEZXZpY2UKKwkwMDQyICBNYXNzIFN0b3JhZ2UgRGV2aWNlCisJMDEwMSAgSGktU3BlZWQgTWFzcyBTdG9yYWdlIERldmljZQorMGRjNSAgU0RLIENvLiwgTHRkCiswZGM2ICBQcmVjaXNpb24gU3F1YXJlZCBUZWNobm9sb2d5IENvcnAuCiswZGM3ICBGaXJzdCBDYWJsZSBMaW5lLCBJbmMuCiswZGNkICBOZXR3b3JrRmFiIENvcnAuCisJMDAwMSAgUmVtb3RlIEludGVyZmFjZSBBZGFwdGVyCisJMDAwMiAgSGlnaCBCYW5kd2lkdGggQ29kZWMKKzBkZDAgIEFjY2VzcyBTb2x1dGlvbnMKKwkxMDAyICBUcmlwbGUgVGFsayBTcGVlY2ggU3ludGhlc2l6ZXIKKzBkZDEgIENvbnRlayBFbGVjdHJvbmljcyBDby4sIEx0ZAorMGRkMiAgUG93ZXIgUXVvdGllbnQgSW50ZXJuYXRpb25hbCBDby4sIEx0ZAorCTAwMDMgIE1hc3MgU3RvcmFnZSAoUCkKKzBkZDMgIE1lZGlhUQorMGRkNCAgQ3VzdG9tIEVuZ2luZWVyaW5nIFNQQQorMGRkNSAgQ2FsaWZvcm5pYSBNaWNybyBEZXZpY2VzCiswZGQ3ICBLb2NvbSBDby4sIEx0ZAorMGRkOCAgTmV0YWMgVGVjaG5vbG9neSBDby4sIEx0ZAorCTEwNjAgIFVTQi1DRi1DYXJkCisJZTAwNyAgT25seURpc2sgVTIyMiBQZW5kcml2ZQorMGRkOSAgSGlnaFNwZWVkIFN1cmZpbmcKKzBkZGEgIEludGVncmF0ZWQgQ2lyY3VpdCBTb2x1dGlvbiwgSW5jLgorCTAwMDEgIE11bHRpLUNhcmQgUmVhZGVyIDZpbjEKKwkwMDAyICBNdWx0aS1DYXJkIFJlYWRlciA3aW4xCisJMDAwMyAgRmxhc2ggRGlzaworCTAwMDUgIEludGVybmFsIE11bHRpLUNhcmQgUmVhZGVyIDZpbjEKKwkwMDA4ICBTRCBzaW5nbGUgY2FyZCByZWFkZXIKKwkwMDA5ICBNUyBzaW5nbGUgY2FyZCByZWFkZXIKKwkwMDBhICBNUytTRCBEdWFsIENhcmQgUmVhZGVyCisJMDAwYiAgU00gc2luZ2xlIGNhcmQgcmVhZGVyCisJMDEwMSAgQWxsLUluLU9uZSBDYXJkIFJlYWRlcgorCTAxMDIgIEFsbC1Jbi1PbmUgQ2FyZCBSZWFkZXIKKwkwMzAxICBNUDMgUGxheWVyCisJMDMwMiAgTXVsdGktQ2FyZCBNUDMgUGxheWVyCisJMTAwMSAgTXVsdGktRmxhc2ggRGlzaworCTIwMDEgIE11bHRpLUNhcmQgUmVhZGVyCisJMjAwMiAgUTAxOCBkZWZhdWx0IFBJRAorCTIwMDMgIE11bHRpLUNhcmQgUmVhZGVyCisJMjAwNSAgRGF0YWx1eCBETFgtMTYxMSAxNmluMSBDYXJkIFJlYWRlcgorCTIwMDYgIEFsbC1Jbi1PbmUgQ2FyZCBSZWFkZXIKKwkyMDA3ICBVU0IgdG8gQVRBUEkgYnJpZGdlCisJMjAwOCAgQWxsLUluLU9uZSBDYXJkIFJlYWRlcgorCTIwMTMgIFNEL01TIENvbWJvIENhcmQgUmVhZGVyCisJMjAxNCAgU0QvTVMgU2luZ2xlIENhcmQgUmVhZGVyCisJMjAyMyAgY2FyZCByZWFkZXIgU0QvTVMgREVNTyBib2FyZCB3aXRoIElDU0kgYnJhbmQgbmFtZSAoTWFza1JPTSB2ZXJzaW9uKQorCTIwMjQgIGNhcmQgcmVhZGVyIFNEL01TIERFTU8gYm9hcmQgd2l0aCBHZW5lcmljIGJyYW5kIG5hbWUgKE1hc2tST00gdmVyc2lvbikKKwkyMDI2ICBVU0IyLjAgQ2FyZCBSZWFkZXIKKwkyMDI3ICBVU0IgMi4wIENhcmQgUmVhZGVyCisJMjMxNSAgVUZEIE1QMyBwbGF5ZXIgKG1vZGVsIDIpCisJMjMxOCAgVUZEIE1QMyBwbGF5ZXIgKG1vZGVsIDEpCisJMjMyMSAgVUZEIE1QMyBwbGF5ZXIKKzBkZGIgIFRhbWFyYWNrLCBJbmMuCiswZGRkICBEYXRlbGluayBUZWNobm9sb2d5IENvLiwgTHRkCiswZGRlICBVYmljb20sIEluYy4KKzBkZTAgIEJEIENvbnN1bWVyIEhlYWx0aGNhcmUKKzBkZWEgIFVURUNIIEVsZWN0cm9uaWMgKEQuRy4pIENvLiwgTHRkLgorMGRlZCAgTm92YXNvbmljcworMGRlZSAgTGlmZXRpbWUgTWVtb3J5IFByb2R1Y3RzCisJNDAxMCAgU3RvcmFnZSBBZGFwdGVyCiswZGVmICBGdWxsIFJpc2UgRWxlY3Ryb25pYyBDby4sIEx0ZAorMGRmNiAgU2l0ZWNvbSBFdXJvcGUgQi5WLgorCTAwMDEgIEMtTWVkaWEgVk9JUCBEZXZpY2UKKwkwMDA0ICBCbHVldG9vdGggMi4wIEFkYXB0ZXIgMTAwbQorCTAwMDcgIEJsdWV0b290aCAyLjAgQWRhcHRlciAxMG0KKwkwMDBiICBCbHVldG9vdGggMi4wIEFkYXB0ZXIgREZVCisJMDAwZCAgV0wtMTY4IFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlciA1NGcKKwkwMDE3ICBXTC0xODIKKwkwMDE5ICBCbHVldG9vdGggMi4wIGFkYXB0ZXIgMTBtIENOLTUxMnYyIDAwMQorCTAwMWEgIEJsdWV0b290aCAyLjAgYWRhcHRlciAxMDBtIENOLTUyMXYyIDAwMQorCTA2MWMgIExOLTAyOAorCTIxZjQgIDQ0IFN0IEJsdWV0b290aCBEZXZpY2UKKwkyMjAwICBTaXRlY29tIGJsdWV0b290aDIuMCBjbGFzcyAyIGRvbmdsZSBDTi01MTIKKwkyMjA4ICBTaXRlY29tIGJsdWV0b290aDIuMCBjbGFzcyAyIGRvbmdsZSBDTi01MjAKKwkyMjA5ICBTaXRlY29tIGJsdWV0b290aDIuMCBjbGFzcyAxIGRvbmdsZSBDTi01MjEKKwk5MDcxICA4MDIuMTFiZworCTkwNzUgIDgwMi4xMWJnCisJOTBhYyAgV0wtMTcyCisJOTcxMiAgV0wtMTEzIHJldiAyCiswZGY3ICBNb2JpbGUgQWN0aW9uIFRlY2hub2xvZ3ksIEluYy4KKwkwNjIwICBNQS02MjAgSW5mcmFyZWQgQWRhcHRlcgorCTA3MDAgIE1BLTcwMCBCbHVldG9vdGggQWRhcHRlcgorCTA3MjAgIE1BLTcyMCBCbHVldG9vdGggQWRhcHRlcgorCTA3MjIgIEJsdWV0b290aCBEb25nbGUKKwkwODAwICBEYXRhIENhYmxlCisJMDgyMCAgRGF0YSBDYWJsZQorCTA5MDAgIE1BIGktZ290VSBUcmF2ZWwgTG9nZ2VyIEdQUworCTE4MDAgIEdlbmVyaWMgQ2FyZCBSZWFkZXIKKwkxODAyICBDYXJkIFJlYWRlcgorMGRmYSAgVG95byBDb21tdW5pY2F0aW9uIEVxdWlwbWVudCBDby4sIEx0ZAorMGRmYyAgR2VuZXJhbFRvdWNoIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkwMDAxICBUb3VjaHNjcmVlbgorMGUwMyAgTmlwcG9uIFN5c3RlbXdhcmUgQ28uLCBMdGQKKzBlMDggIFdpbmJlc3QgVGVjaG5vbG9neSBDby4sIEx0ZAorMGUwYyAgR2VzeXRlYworCTAxMDEgIExvblVTQiBMb25UYWxrIE5ldHdvcmsgQWRhcHRlcgorMGUwZiAgVk13YXJlLCBJbmMuCisJMDAwMiAgVmlydHVhbCBVU0IgSHViCiswZTE2ICBKTVRlaywgTExDCiswZTE3ICBXYWxleCBFbGVjdHJvbmljLCBMdGQKKzBlMWIgIENyZXdhdmUKKzBlMjEgIENvd29uIFN5c3RlbXMsIEluYy4KKwkwMzAwICBpQXVkaW8gQ1cyMDAKKwkwNDAwICBNUDMgUGxheWVyCisJMDUwMCAgaUF1ZGlvIE0zCisJMDUxMCAgaUF1ZGlvIFg1LCBzdWJwYWNrIFVTQiBwb3J0CisJMDUxMyAgaUF1ZGlvIFg1LCBzaWRlIFVTQiBwb3J0CisJMDUyMCAgaUF1ZGlvIE01LCBzaWRlIFVTQiBwb3J0CisJMDcwMCAgaUF1ZGlvIFUzCisJMDc1MSAgaUF1ZGlvIDcKKwkwODAwICBDb3dvbiBEMiAoVU1TIG1vZGUpCisJMDgwMSAgQ293b24gRDIgKE1UUCBtb2RlKQorMGUyMiAgU3ltYmlhbiBMdGQuCiswZTIzICBMaW91IFl1YW5lIEVudGVycHJpc2UgQ28uLCBMdGQKKzBlMjUgIFZpbkNoaXAgU3lzdGVtcywgSW5jLgorMGUyNiAgSi1QaG9uZSBFYXN0IENvLiwgTHRkCiswZTMwICBIZWFydE1hdGggTExDCiswZTM0ICBNaWNybyBDb21wdXRlciBDb250cm9sIENvcnAuCiswZTM1ICAzUGVhIFRlY2hub2xvZ2llcywgSW5jLgorMGUzNiAgVGllUGllIGVuZ2luZWVyaW5nCisJMDAwOCAgSGFuZHlzY29wZSBIUzMKKwkwMDA5ICBIYW5keXNjb3BlIEhTMyAoYnIpCisJMDAwYSAgSGFuZHlzY29wZSBIUzQKKwkwMDBiICBIYW5keXNjb3BlIEhTNCAoYnIpCisJMDAwZSAgSGFuZHlzY29wZSBIUzQgRGlmZgorCTAwMGYgIEhhbmR5c2NvcGUgSFM0IERpZmYgKGJyKQorCTAwMTAgIEhhbmR5c2NvcGUgSFMyCisJMDAxOCAgSGFuZHlwcm9iZSBIUDIKKwkwMDQyICBUaWVQaWVTQ09QRSBIUzgwMQorCTAwZmQgIFVTQiBUbyBQYXJhbGxlbCBhZGFwdGVyCisJMDBmZSAgVVNCIFRvIFBhcmFsbGVsIGFkYXB0ZXIKKzBlMzggIFN0cmF0aXRlYywgSW5jLgorMGUzOSAgU21hcnQgTW9kdWxhciBUZWNobm9sb2dpZXMsIEluYy4KKwkwMTM3ICBCbHVldG9vdGggRGV2aWNlCiswZTNhICBOZW9zdGFyIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkxMTAwICBDVy0xMTAwIFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlcgorMGUzYiAgTWFuc2VsbGEsIEx0ZAorMGU0MSAgTGluZTYsIEluYy4KKwk0MTQ3ICBUb25lUG9ydCBHWAorCTQyNTAgIEJhc3NQT0R4dAorCTQyNTIgIEJhc3NQT0R4dCBQcm8KKwk0NjQyICBCYXNzUE9EeHQgTGl2ZQorCTQ2NTAgIFBPRHh0IExpdmUKKwk0NzUwICBHdWl0YXJQb3J0CisJNTA0NCAgUE9EeHQKKwk1MDUwICBQT0R4dCBQcm8KKwk1MzRkICBTZWFNb25rZXkKKzBlNDQgIFN1bi1SaXNlZnVsIFRlY2hub2xvZ3kgQ28uLCBMdGQuCiswZTQ4ICBKdWxpYSBDb3JwLiwgTHRkCisJMDEwMCAgQ2FyZFBybyBTbWFydENhcmQgUmVhZGVyCiswZTRhICBTaGVuemhlbiBCYW8gSGluZyBFbGVjdHJpYyBXaXJlICYgQ2FibGUgTWZyLiBDby4KKzBlNGMgIFJhZGljYSBHYW1lcywgTHRkCiswZTU1ICBTcGVlZCBEcmFnb24gTXVsdGltZWRpYSwgTHRkCisJMTEwYiAgTVMzMzAzSCBVU0ItdG8tU2VyaWFsIEJyaWRnZQorMGU1NiAgS2luZ3N0b24gVGVjaG5vbG9neSBDb21wYW55LCBJbmMuCisJNjAyMSAgSy1QRVggMTAwCiswZTVhICBBY3RpdmUgQ28uLCBMdGQKKzBlNWIgIFVuaW9uIFBvd2VyIEluZm9ybWF0aW9uIEluZHVzdHJpYWwgQ28uLCBMdGQKKzBlNWMgIEJpdGxhbmQgSW5mb3JtYXRpb24gVGVjaG5vbG9neSBDby4sIEx0ZAorCTYxMTggIExDRCBEZXZpY2UKKwk2MTE5ICByZW1vdGUgcmVjZWl2ZSBhbmQgY29udHJvbCBkZXZpY2UKKwk2NDQxICBDLU1lZGlhIFNvdW5kIERldmljZQorMGU1ZCAgTmVsdHJvbiBJbmR1c3RyaWFsIENvLiwgTHRkCiswZTY2ICBIYXdraW5nCisJNDAwYiAgVUYxMDAgMTAvMTAwIE5ldHdvcmsgQWRhcHRlcgorCTQwMGMgIFVGMTAwIEV0aGVybmV0IFtwZWdhc3VzMl0KKzBlNjcgIEZvc3NpbCwgSW5jLgorCTAwMDIgIFdyaXN0IFBEQQorMGU2YSAgTWVnYXdpbiBUZWNobm9sb2d5IENvLiwgTHRkCiswZTcwICBUb2t5byBFbGVjdHJvbmljIEluZHVzdHJ5IENvLiwgTHRkCiswZTcyICBIc2ktQ2hpbiBFbGVjdHJvbmljcyBDby4sIEx0ZAorMGU3NSAgVFZTIEVsZWN0cm9uaWNzLCBMdGQKKzBlNzkgIEFyY2hvcywgSW5jLgorCTExMDYgIFBvY2tldCBNZWRpYSBBc3Npc3RhbnQgLSBQTUE0MDAKKwkxMzA2ICA1MDQgUG9ydGFibGUgTXVsdGltZWRpYSBQbGF5ZXIKKzBlN2IgIE9uLVRlY2ggSW5kdXN0cnkgQ28uLCBMdGQKKzBlN2UgIEdtYXRlLCBJbmMuCisJMDAwMSAgWW9weSAzMDAwIFBEQQorCTEwMDEgIFlQM1gwMCBQREEKKzBlODIgIENoaW5nIFRhaSBFbGVjdHJpYyBXaXJlICYgQ2FibGUgQ28uLCBMdGQKKzBlODMgIFNoaW4gQW4gV2lyZSAmIENhYmxlIENvLgorMGU4YyAgV2VsbCBGb3JjZSBFbGVjdHJvbmljIENvLiwgTHRkCiswZThkICBNZWRpYVRlayBJbmMuCisJMDAwNCAgTVQ2MjI3IHBob25lCiswZThmICBHcmVlbkFzaWEgSW5jLgorCTAwMTIgIEpveXN0aWNrCiswZTkwICBXaWViZVRlY2gsIExMQworCTAxMDAgIFN0b3JhZ2UgQWRhcHRlciBWMQorMGU5MSAgVlRlY2ggRW5naW5lZXJpbmcgQ2FuYWRhLCBMdGQKKzBlOTIgIEMncyBHbG9yeSBFbnRlcnByaXNlIENvLiwgTHRkCiswZTkzICBlTSBUZWNobmljcyBDby4sIEx0ZAorMGU5NSAgRnV0dXJlIFRlY2hub2xvZ3kgQ28uLCBMdGQKKzBlOTYgIEFwbHV4IENvbW11bmljYXRpb25zLCBMdGQKKwljMDAxICBUUlVTVCAzODAgVVNCMiBTUEFDRUNATQorMGU5NyAgRmluZ2Vyd29ya3MsIEluYy4KKzBlOTggIEFkdmFuY2VkIEFuYWxvZ2ljIFRlY2hub2xvZ2llcywgSW5jLgorMGU5OSAgUGFyYWxsZWwgRGljZSBDby4sIEx0ZAorMGU5YSAgVEEgSFNJTkcgSW5kdXN0cmllcywgTHRkCiswZTliICBBRFRFQyBDb3JwLgorMGU5YyAgU3RyZWFtemFwLCBJbmMuCisJMDAwMCAgU3RyZWFtemFwIFJlbW90ZSBDb250cm9sCiswZTlmICBUYW11cmEgQ29ycC4KKzBlYTAgIE91cnMgVGVjaG5vbG9neSwgSW5jLgorCTIxMjYgIDctaW4tMSBDYXJkIFJlYWRlcgorCTIxNTMgIFNEIENhcmQgUmVhZGVyIEtleQorCTIxNjggIFRyYW5zY2VuZCBKZXRGbGFzaCAyLjAgLyBBc3RvbmUgVVNCIERyaXZlCisJNjgwMyAgT1RJLTY4MDMgRmxhc2ggRGlzaworCTY4MDggIE9USS02ODA4IEZsYXNoIERpc2sKKwk2ODI4ICBPVEktNjgyOCBGbGFzaCBEaXNrCiswZWE2ICBOaWhvbiBDb21wdXRlciBDby4sIEx0ZAorMGVhNyAgTVNMIEVudGVycHJpc2VzIENvcnAuCiswZWE4ICBDZW5EeW5lLCBJbmMuCiswZWFkICBIdW1heCBDby4sIEx0ZAorMGViMCAgTm92YVRlY2gKKwk5MDIwICBOb3ZhVGVjaCBOVi05MDJXCisJOTAyMSAgUlQyNTczCiswZWIxICBXSVMgVGVjaG5vbG9naWVzLCBJbmMuCisJNjY2NiAgV2luRmFzdCBXYWxraWVUViBUViBMb2FkZXIKKwk2NjY4ICBXaW5GYXN0IFdhbGtpZVRWIFRWIExvYWRlcgorCTcwMDcgIFdpbkZhc3QgV2Fsa2llVFYgV0RNIENhcHR1cmUKKzBlYjIgIFktUyBFbGVjdHJvbmljIENvLiwgTHRkCiswZWIzICBTYWludCBUZWNobm9sb2d5IENvcnAuCiswZWI3ICBFbmRvciBBRworMGViZSAgVldlYiBDb3JwLgorMGViZiAgT21lZ2EgVGVjaG5vbG9neSBvZiBUYWl3YW4sIEluYy4KKzBlYzAgIExISSBUZWNobm9sb2d5IChDaGluYSkgQ28uLCBMdGQKKzBlYzEgIEFiaXQgQ29tcHV0ZXIgQ29ycC4KKzBlYzIgIFN3ZWV0cmF5IEluZHVzdHJpYWwsIEx0ZAorMGVjMyAgQXhlbGwgQ28uLCBMdGQKKzBlYzQgIEJhbGxyYWNpbmcgRGV2ZWxvcG1lbnRzLCBMdGQKKzBlYzUgIEdUIEluZm9ybWF0aW9uIFN5c3RlbSBDby4sIEx0ZAorMGVjNiAgSW5ub1ZJU0lPTiBNdWx0aW1lZGlhLCBMdGQKKzBlYzcgIFRoZXRhIExpbmsgQ29ycC4KKwkxMDA4ICBTby4sIFNob3cgMzAxIERpZ2l0YWwgQ2FtZXJhCiswZWNkICBMaXRlLU9uIElUIENvcnAuCisJMTQwMCAgQ0RcUlcgNDBYCisJYTEwMCAgTERXLTQxMVNYIERWRC9DRCBSZXdyaXRhYmxlIERyaXZlCiswZWNlICBUYWlTb2wgRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzBlY2YgIFBob2dlbml4IEltYWdpbmcsIExMQworMGVkMSAgV2luTWF4R3JvdXAKKwk2NjYwICBGbGFzaCBEaXNrIDY0TS1DCisJNjY4MCAgRmxhc2ggRGlzayA2NE0tQgorCTc2MzQgIE1QMyBQbGF5ZXIKKzBlZDIgIEt5b3RvIE1pY3JvIENvbXB1dGVyIENvLiwgTHRkCiswZWQzICBXaW5nLVRlY2ggRW50ZXJwcmlzZSBDby4sIEx0ZAorMGVkNSAgRmliZXJieXRlCisJZTAwMCAgVVNCLWluU3luYyBEZXZpY2UKKwlmMDAwICBGaWJlcmJ5dGUgVVNCLWluU3luYyBEZXZpY2UKKwlmMjAxICBGaWJlcmJ5dGUgVVNCLWluU3luYyBEQVEtMjUwMFgKKzBlZGEgIE5vcmlha2UgSXRyb24gQ29ycC4KKzBlZGYgIGUtTURUIENvLiwgTHRkCisJMjA2MCAgRklEIGlyb2NrISAxMDAgU2VyaWVzCiswZWUwICBTaGltYSBTZWlraSBNZmcuLCBMdGQKKzBlZTEgIFNhcm90ZWNoIENvLiwgTHRkCiswZWUyICBBTUkgU2VtaWNvbmR1Y3RvciwgSW5jLgorMGVlMyAgQ29tVHJ1ZSBUZWNobm9sb2d5IENvcnAuCisJMTAwMCAgSW1hZ2UgVGFuayAxLjUKKzBlZTQgIFN1bnJpY2ggVGVjaG5vbG9neSwgTHRkCiswZWVlICBEaWdpdGFsIFN0cmVhbSBUZWNobm9sb2d5LCBJbmMuCisJODgxMCAgTWFzcyBTdG9yYWdlIERyaXZlCiswZWVmICBELVdBViBTY2llbnRpZmljIENvLiwgTHRkCisJMDAwMSAgZUdhbGF4IFRvdWNoU2NyZWVuCisJMDAwMiAgVG91Y2hzY3JlZW4gQ29udHJvbGxlcihQcm9mZXNzaW9uYWwpCiswZWYwICBIaXRhY2hpIENhYmxlLCBMdGQKKzBlZjEgIEFpY2hpIE1pY3JvIEludGVsbGlnZW50IENvcnAuCiswZWYyICBJL08gTWFnaWMgQ29ycC4KKzBlZjMgIEx5bm4gUHJvZHVjdHMsIEluYy4KKzBlZjQgIERTSSBEYXRvdGVjaAorMGVmNSAgUG9pbnRDaGlwcworCTIyMDIgIEZsYXNoIERpc2sKKwkyMzY2ICBGbGFzaCBEaXNrCiswZWY2ICBZaWVsZCBNaWNyb2VsZWN0cm9uaWNzIENvcnAuCiswZWY3ICBTTSBUZWNoIENvLiwgTHRkIChUdWxpcCkKKzBlZmQgIE9hc2lzIFNlbWljb25kdWN0b3IKKzBlZmUgIFdlbSBUZWNobm9sb2d5LCBJbmMuCiswZjA2ICBWaXN1YWwgRnJvbnRpZXIgRW50ZXJwcmlzZSBDby4sIEx0ZAorMGYwOCAgQ1NMIFdpcmUgJiBQbHVnIChTaGVuIFpoZW4pIENvLgorMGYwYyAgQ0FTIENvcnAuCiswZjBkICBIb3JpIENvLiwgTHRkCiswZjBlICBFbmVyZ3kgRnVsbCBDb3JwLgorMGYxMiAgTWFycyBFbmdpbmVlcmluZyBDb3JwLgorMGYxMyAgQWNldGVrIFRlY2hub2xvZ3kgQ28uLCBMdGQKKzBmMTggIEZpbmdlciBMYWtlcyBJbnN0cnVtZW50YXRpb24KKwkwMDAyICBDQ0QKKwkwMDA2ICBGb2N1c2VyCisJMDAwNyAgRmlsdGVyIFdoZWVsCisJMDAwYSAgUHJvTGluZSBDQ0QKKzBmMTkgIE9yYWNvbSBDby4sIEx0ZAorMGYxYiAgT25zZXQgQ29tcHV0ZXIgQ29ycC4KKzBmMWMgIEZ1bmFpIEVsZWN0cmljIENvLiwgTHRkCiswZjFkICBJd2lsbCBDb3JwLgorMGYyMSAgSU9JIFRlY2hub2xvZ3kgQ29ycC4KKzBmMjIgIFNlbmlvciBJbmR1c3RyaWVzLCBJbmMuCiswZjIzICBMZWFkZXIgVGVjaCBNYW51ZmFjdHVyZXIgQ28uLCBMdGQKKzBmMjQgIEZsZXgtUCBJbmR1c3RyaWVzLCBTbmQuLCBCaGQuCiswZjJkICBWaVBvd2VyLCBJbmMuCiswZjJlICBHZW5pYWxpdHkgTWFwbGUgVGVjaG5vbG9neSBDby4sIEx0ZAorMGYyZiAgUHJpdmEgRGVzaWduIFNlcnZpY2VzCiswZjMwICBKZXNzIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkwMDFjICBQUzMgR3VpdGFyIENvbnRyb2xsZXIgRG9uZ2xlCisJMDExMCAgMTAtQnV0dG9uIEpveXBhZAorMGYzMSAgQ2hyeXNhbGlzIERldmVsb3BtZW50CiswZjMyICBZRkMtQm9uRWFnbGUgRWxlY3RyaWMgQ28uLCBMdGQKKzBmMzcgIEtva3V5byBDby4sIEx0ZAorMGYzOCAgTmllbi1ZaSBJbmR1c3RyaWFsIENvcnAuCiswZjNkICBBaXJwcmltZSwgSW5jb3Jwb3JhdGVkCisJMDExMiAgQ0RNQSAxeEVWRE8gUEMgQ2FyZCwgUEMgNTIyMAorMGY0MSAgUkRDIFNlbWljb25kdWN0b3IgQ28uLCBMdGQKKzBmNDIgIE5pdGFsIENvbnN1bHRpbmcgU2VydmljZXMsIEluYy4KKzBmNDQgIFBvbGhlbXVzCisJZWYxMSAgUGF0cmlvdCAoZmlybXdhcmUgbm90IGxvYWRlZCkKKwllZjEyICBQYXRyaW90CisJZmYxMSAgTGliZXJ0eSAoZmlybXdhcmUgbm90IGxvYWRlZCkKKwlmZjEyICBMaWJlcnR5CiswZjRiICBTdC4gSm9obiBUZWNobm9sb2d5IENvLiwgTHRkCiswZjRjICBXb3JsZFdpZGUgQ2FibGUgT3B0byBDb3JwLgorMGY0ZCAgTWljcm90dW5lLCBJbmMuCisJMTAwMCAgQmx1ZXRvb3RoIERvbmdsZQorMGY0ZSAgRnJlZWRvbSBTY2llbnRpZmljCiswZjUyICBXaW5nIEtleSBFbGVjdHJpY2FsIENvLiwgTHRkCiswZjUzICBEb25nZ3VhbiBXaGl0ZSBIb3JzZSBDYWJsZSBGYWN0b3J5LCBMdGQKKzBmNTQgIEthd2FpIE11c2ljYWwgSW5zdHJ1bWVudHMgTWZnLiBDby4sIEx0ZAorMGY1NSAgQW1iaUNvbSwgSW5jLgorMGY1YyAgUHJhaXJpZWNvbW0sIEluYy4KKzBmNWQgIE5ld0FnZSBJbnRlcm5hdGlvbmFsLCBMTEMKKwk5NDU1ICBDb21wYWN0IERyaXZlCiswZjVmICBLZXkgVGVjaG5vbG9neSBDb3JwLgorMGY2MCAgTlRLLCBMdGQKKzBmNjEgIFZhcmlhbiwgSW5jLgorMGY2MiAgQWNyb3ggVGVjaG5vbG9naWVzIENvLiwgTHRkCisJMTAwMSAgVGFyZ3VzIE1pbmkgVHJhY2tiYWxsIE9wdGljYWwgTW91c2UKKzBmNjggIEtvYmUgU3RlZWwsIEx0ZAorMGY2OSAgRGlvbmV4IENvcnAuCiswZjZhICBWaWJyZW4gVGVjaG5vbG9naWVzLCBJbmMuCiswZjZlICBJTlRFTExJR0VOVCBTWVNURU1TCisJMDEwMCAgR2FtZUJveSBDb2xvciBFbXVsYXRvcgorCTAyMDEgIEdhbWVCb3kgQWR2YW5jZSBGbGFzaCBHYW5nIFdyaXRlcgorCTAyMDIgIEdhbWVCb3kgQWR2YW5jZSBDYXB0dXJlCisJMDMwMCAgR2FtZWN1YmUgRE9MIFZpZXdlcgorCTA0MDAgIE5EUyBFbXVsYXRvcgorCTA0MDEgIE5EUyBVSUMKKwkwNDAyICBORFMgV3JpdGVyCisJMDQwMyAgTkRTIENhcHR1cmUKKwkwNDA0ICBORFMgRW11bGF0b3IgKExpdGUpCiswZjczICBERkkKKzBmN2MgIERRIFRlY2hub2xvZ3ksIEluYy4KKzBmN2QgIE5ldEJvdHosIEluYy4KKzBmN2UgIEZsdWtlIENvcnAuCiswZjg4ICBWVGVjaCBIb2xkaW5ncywgTHRkCisJMzAxMiAgUlQyNTcwCisJMzAxNCAgWkQxMjExQgorMGY4YiAgWWF6YWtpIENvcnAuCiswZjhjICBZb3VuZyBHZW5lcmF0aW9uIEludGVybmF0aW9uYWwgQ29ycC4KKzBmOGQgIFVuaXdpbGwgQ29tcHV0ZXIgQ29ycC4KKzBmOGUgIEtpbmduZXQgVGVjaG5vbG9neSBDby4sIEx0ZAorMGY4ZiAgU29tYSBOZXR3b3JrcworMGY5NyAgQ3ZpTHV4IENvcnAuCiswZjk4ICBDeWJlckJhbmsgQ29ycC4KKzBmOWMgIEh5dW4gV29uLCBJbmMuCisJMDMwMSAgTS1BbnkgUHJlbWl1bSBEQUgtNjEwIE1QMy9XTUEgUGxheWVyCisJMDMzMiAgbW9iaUJMVSBEQUgtMTIwMCBNUDMvT2dnIFBsYXllcgorMGY5ZSAgTHVjZW50IFRlY2hub2xvZ2llcworMGZhMyAgU3RhcmNvbm4gRWxlY3Ryb25pYyBDby4sIEx0ZAorMGZhNCAgQVRMIFRlY2hub2xvZ3kKKzBmYTUgIFNvdGVjIENvLiwgTHRkCiswZmE3ICBFcG94IENvbXB1dGVyIENvLiwgTHRkCiswZmE4ICBMb2dpYyBDb250cm9scywgSW5jLgorMGZhZiAgV2lucG9pbnQgRWxlY3Ryb25pYyBDb3JwLgorMGZiMCAgSGF1cnRpYW4gV2lyZSAmIENhYmxlIENvLiwgTHRkCiswZmIxICBJbmNsb3NlIERlc2lnbiwgSW5jLgorMGZiMiAgSnVhbi1DaGVybiBJbmR1c3RyaWFsIENvLiwgTHRkCiswZmI4ICBXaXN0cm9uIENvcnAuCisJMDAwMiAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKzBmYjkgIEFBQ29tIENvcnAuCiswZmJhICBTYW4gU2hpbmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzBmYmIgIEJpdHdpc2UgU3lzdGVtcywgSW5jLgorMGZjMSAgTWl0YWMgSW50ZXJuYXRpbmFsIENvcnAuCiswZmMyICBQbHVnIGFuZCBKYWNrIEluZHVzdHJpYWwsIEluYy4KKzBmYzUgIERlbGNvbSBFbmdpbmVlcmluZworCTEyMjIgIEkvTyBEZXZlbG9wbWVudCBCb2FyZAorMGZjNiAgRGF0YXBsdXMgU3VwcGxpZXMsIEluYy4KKzBmY2EgIFJlc2VhcmNoIEluIE1vdGlvbiwgTHRkLgorCTAwMDEgIEJsYWNrYmVycnkgSGFuZGhlbGQKKzBmY2UgIFNvbnkgRXJpY3Nzb24gTW9iaWxlIENvbW11bmljYXRpb25zIEFCCisJMDBkNCAgQzkwMiBbTVRQXQorCTAwZDkgIEM3MDIgUGhvbmUKKwkxMDEwICBXTUMgTW9kZW0KKwkxMGQ0ICBDOTAyIFtQaWN0QnJpZGdlXQorCWQwMDggIFY4MDAtVm9kYWZvbmUgODAyU0UgV01DIE1vZGVtCisJZDAxNiAgSzc1MGkgUGhvbmUKKwlkMDE3ICBLNjA4aSBQaG9uZQorCWQwMTkgIFZEQyBFR1BSUyBNb2RlbQorCWQwMjUgIDUyMCBXTUMgRGF0YSBNb2RlbQorCWQwMzggIFc4NTBpIFBob25lCisJZDA0MSAgSzUxMGkgUGhvbmUKKwlkMDQyICBXODEwaSBQaG9uZQorCWQwNDYgIEs2MTBpIFBob25lCisJZDBkNCAgQzkwMiBbTW9kZW1dCisJZTA0MiAgVzgxMGkgUGhvbmUKKwllMGQ0ICBDOTAyIFtNYXNzIFN0b3JhZ2VdCiswZmNmICBEeW5hc3RyZWFtIElubm92YXRpb25zLCBJbmMuCiswZmQwICBUdWxpcCBDb21wdXRlcnMgQi5WLgorMGZkMSAgR2lhbnQgRWxlY3Ryb25pY3MgTHRkLgorMGZkNCAgVGVub3ZpcyBHbWJIICYgQ28uLCBLRworMGZkNSAgRGlyZWN0IEFjY2VzcyBUZWNobm9sb2d5LCBJbmMuCiswZmRjICBNaWNybyBQbHVzCiswZmU0ICBJTi1UZWNoIEVsZWN0cm9uaWNzLCBMdGQKKzBmZTUgIEdyZWVuY29ubiAoVS5TLkEuKSwgSW5jLgorMGZlOSAgRFZJQ08KKwlkYjAwICBGdXNpb25IRFRWIERWQi1UIChNVDM1MitMZ1oyMDEpICh1bmluaXRpYWxpemVkKQorCWRiMDEgIEZ1c2lvbkhEVFYgRFZCLVQgKE1UMzUyK0xnWjIwMSkgKGluaXRpYWxpemVkKQorCWRiMTAgIEZ1c2lvbkhEVFYgRFZCLVQgKE1UMzUyK1Rob21zb243NTc5KSAodW5pbml0aWFsaXplZCkKKwlkYjExICBGdXNpb25IRFRWIERWQi1UIChNVDM1MitUaG9tc29uNzU3OSkgKGluaXRpYWxpemVkKQorCWRiNzggIEZ1c2lvbkhEVFYgRFZCLVQgRHVhbCBEaWdpdGFsIDQgKFpMMTAzNTMreGMyMDI4L3hjMzAyOCkgKGluaXRpYWxpemVkKQorMGZlYSAgVW5pdGVkIENvbXB1dGVyIEFjY2Vzc29yaWVzCiswZmViICBDUlMgRWxlY3Ryb25pYyBDby4sIEx0ZAorMGZlYyAgVU1DIEVsZWN0cm9uaWNzIENvLiwgTHRkCiswZmVkICBBY2Nlc3MgQ28uLCBMdGQKKzBmZWUgIFhzaWRvIENvcnAuCiswZmVmICBNSiBSZXNlYXJjaCwgSW5jLgorMGZmNiAgQ29yZSBWYWxsZXkgQ28uLCBMdGQKKzBmZjcgIENISSBTSElORyBDb21wdXRlciBBY2Nlc3NvcmllcyBDby4sIEx0ZAorMGZmZiAgQW9wZW4sIEluYy4KKzEwMDAgIFNwZWVkIFRlY2ggQ29ycC4KKzEwMDEgIFJpdHJvbmljcyBDb21wb25lbnRzIChTKSBQdGUuLCBMdGQKKzEwMDMgIFNpZ21hIENvcnAuCisJMDEwMCAgU2lnbWEgU0QxMAorMTAwNCAgTEcgRWxlY3Ryb25pY3MsIEluYy4KKwkxZmFlICBVODEyMCAzRyBDZWxscGhvbmUKKwk2MDAwICBWWDQ0MDAvVlg2MDAwIENlbGxwaG9uZQorCTYwMDUgIFQ1MTAwCisJNjgwMCAgQ0RNQSBNb2RlbQorCTcwMDAgIExHIExEUC03MDI0RChMRClVU0IKKzEwMDUgIEFwYWNlciBUZWNobm9sb2d5LCBJbmMuCisJMTAwMSAgTVAzIFBsYXllcgorCTEwMDQgIE1QMyBQbGF5ZXIKKwkxMDA2ICBNUDMgUGxheWVyCisJYjExMyAgSGFuZHkgU3Rlbm8gMi4wL0hUMjAzCisJYjIyMyAgQ0QtUlcgKyA2aW4xIENhcmQgUmVhZGVyIERpZ2l0YWwgU3RvcmFnZSAvIENvbnZlcnRlcgorMTAwNiAgaVJpdmVyLCBMdGQuCisJMzAwMSAgaUhQLTEwMAorCTMwMDIgIGlIUC0xMjAvMTQwIE1QMyBQbGF5ZXIKKwkzMDAzICBIMzIwL0gzNDAKKwkzMDA0ICBIMzQwIChtdHApCisxMDA5ICBFbXV6ZWQsIEluYy4KKwkwMDBlICBlSG9tZSBJbmZyYXJlZCBSZWNlaXZlcgorCTAwMTMgIEFuZ2VsIE1QRUcgRGV2aWNlCisJMDAxNSAgTHVtYW5hdGUgV2F2ZSBQQUwgU0VDQU0gRFZCVCBEZXZpY2UKKwkwMDE2ICBMdW1hbmF0ZSBXYXZlIE5UU0MvQVRTQyBDb21ibyBEZXZpY2UKKzEwMGEgIEFWIENoYXNld2F5LCBMdGQKKwkyNDAyICBNUDMgUGxheWVyCisJMjQwNCAgTVAzIFBsYXllcgorCTI0MDUgIE1QMyBQbGF5ZXIKKwkyNDA2ICBNUDMgUGxheWVyCisJYTBjMCAgTVAzIFBsYXllcgorMTAwYiAgQ2hvdSBDaGluIEluZHVzdHJpYWwgQ28uLCBMdGQKKzEwMGQgIE5ldG9waWEsIEluYy4KKwkzMzQyICBDYXltYW4gMzM1MiBEU0wgTW9kZW0KKwkzMzgyICAzMzgwIFNlcmllcyBOZXR3b3JrIEludGVyZmFjZQorCTYwNzIgIERTTCBNb2RlbQorCWNiMDEgIENheW1hbiAzMzQxIEV0aGVybmV0IERTTCBSb3V0ZXIKKzEwMTAgIEZ1a3VkYSBEZW5zaGkgQ28uLCBMdGQKKzEwMTEgIE1vYmlsZSBNZWRpYSBUZWNoLgorCTAwMDEgIEFjY0Zhc3QgTXAzCisxMDEyICBTREtNIEZpYnJlcywgV2lyZXMgJiBDYWJsZXMgQmVyaGFkCisxMDEzICBUU1QtVG91Y2hsZXNzIFNlbnNvciBUZWNobm9sb2d5IEFHCisxMDE0ICBEZW5zaXRyb24gVGVjaG5vbG9naWVzIFBMQworMTAxNSAgU29mdHJvbmljcyBQdHkuLCBMdGQKKzEwMTYgIFhpYW1lbiBIdW5nJ3MgRW50ZXJwcmlzZSBDby4sIEx0ZAorMTAxNyAgU3BlZWR5IEluZHVzdHJpYWwgU3VwcGxpZXMsIFB0ZS4sIEx0ZAorMTAxOSAgRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIChFQ1MpCisJMGM1NSAgRmxhc2ggUmVhZGVyLCBEZXNrbm90ZSBVQ1ItNjFTMkIKKzEwMjAgIExhYnRlYworCTAwMGEgIFdpcmVsZXNzIE9wdGljYWwgTW91c2UKKwkwMTA2ICBXaXJlbGVzcyBPcHRpY2FsIE1vdXNlCisxMDIyICBTaGlua28gU2hvamkgQ28uLCBMdGQKKzEwMjUgIEh5cGVyLVBhbHRlaworCTAwNWUgIFVTQiBEVkItVCBkZXZpY2UKKwkwMDVmICBVU0IgRFZCLVQgZGV2aWNlCisJMDMwMCAgTVAzIFBsYXllcgorCTAzNTAgIE1QMyBQbGF5ZXIKKzEwMjYgIE5ld2x5IENvcnAuCisxMDI3ICBUaW1lIERvbWFpbgorMTAyOCAgSW5vdnlzIENvcnAuCisxMDI5ICBBdGxhbnRpYyBDb2FzdCBUZWxlc3lzCisxMDJhICBSYW1vcyBUZWNobm9sb2d5IENvLiwgTHRkCisxMDJiICBJbmZvdHJvbmljIEFtZXJpY2EsIEluYy4KKzEwMmMgIEV0b21zIEVsZWN0cm9uaWNzIENvcnAuCisJNjE1MSAgUS1DYW0gU2FuZ2hhIENJRgorCTYyNTEgIFEtQ2FtIFZHQQorMTAyZCAgV2luaWMgQ29ycC4KKzEwMzEgIENvbWF4IFRlY2hub2xvZ3ksIEluYy4KKzEwMzIgIEMtT25lIFRlY2hub2xvZ3kgQ29ycC4KKzEwMzMgIE51Y2FtIENvcnAuCisJMDA2OCAgMyw1JycgSEREIGNhc2UgTUQtMjMxCisxMDM4ICBJZGVhem9uLCBJbmMuCisJMDEwMCAgWmJvYXJkCisxMDM5ICBkZXZvbG8gQUcKKwkyMTQwICBkc2wrIDExMDAgZHVvCisxMDNkICBTdGFudG9uCisJMDEwMCAgU2NyYXRjaEFtcAorCTAxMDEgIFNjcmF0Y2hBbXAKKzEwNDMgIGlDcmVhdGUgVGVjaG5vbG9naWVzIENvcnAuCisJMTYwZiAgV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyCisJNDkwMSAgQVYtODM2IFZpZGVvIENhcHR1cmUgRGV2aWNlCisJODAwNiAgRmxhc2ggRGlzayAzMi0yNTYgTUIKKzEwNDQgIENodSBZdWVuIEVudGVycHJpc2UgQ28uLCBMdGQKKwk3MDAxICBVNzAwMCBUViB0dW5lciBkZXZpY2UKKwk4MDAxICBHTi01NEcKKwk4MDAyICBHTi1CUjQwMlcKKwk4MDAzICBHTi1XTEJNMTAxCisJODAwNCAgR04tV0xCWjEwMSA4MDIuMTFiIEFkYXB0ZXIKKwk4MDA1ICA4MDIuMTFiCisJODAwNiAgR04tV0JaQi1NIDgwMi4xMWIgQWRhcHRlcgorCTgwMDcgIEdOLVdCS0cKKwk4MDA4ICBHTi1XQjAxR1MKKwk4MDBhICBHTi1XSTA1R1MKKwk4MDBiICBHTi1XQjMwTiA4MDIuMTFuIFdMQU4gQ2FyZAorMTA0NiAgV2luYm9uZCBFbGVjdHJvbmljcyBDb3JwLiBbaGV4XQorCTg5MDEgIEJsdWV0b290aCBEZXZpY2UKKwk5OTY3ICBXOTk2N0NGL1c5OTY4Q0YgV2ViY2FtIElDCisxMDQ4ICBUYXJndXMgR3JvdXAgSW50ZXJuYXRpb25hbAorMTA0YyAgQU1DTyBURUMgSW50ZXJuYXRpb25hbCwgSW5jLgorMTA0ZiAgV0IgRWxlY3Ryb25pY3MKKwkwMDAxICBJbmZpbml0eSBQaG9lbml4CisJMDAwMiAgU21hcnRtb3VzZQorCTAwMDMgIEZ1blByb2dyYW1tZXIKKwkwMDA0ICBJbmZpbml0eSBVbmxpbWl0ZWQKKwkwMDA2ICBJbmZpbml0eSBTbWFydAorCTAwMDcgIEluZmluaXR5IFNtYXJ0IG1vZHVsZQorCTAwMDggIEluZmluaXR5IENyeXB0b0tleQorMTA1MCAgWXViaWNvLmNvbQorCTAwMTAgIFl1YmlrZXkKKzEwNTMgIEltbWFudWVsIEVsZWN0cm9uaWNzIENvLiwgTHRkCisxMDU0ICBCTVMgSW50ZXJuYXRpb25hbCBCZWhlZXIgTi5WLgorCTUwMDQgIERTTCA3NDIwIExvYWRlcgorCTUwMDUgIERTTCA3NDIwIExBTiBNb2RlbQorMTA1NSAgQ29tcGxleCBNaWNybyBJbnRlcmNvbm5lY3Rpb24gQ28uLCBMdGQKKzEwNTYgIEhzaW4gQ2hlbiBFbnQgQ28uLCBMdGQKKzEwNTcgIE9OIFNlbWljb25kdWN0b3IKKzEwNTggIFdlc3Rlcm4gRGlnaXRhbCBUZWNobm9sb2dpZXMsIEluYy4KKwkwMjAwICBGaXJld2lyZSBVU0IgQ29tYm8KKwkwNDAwICBFeHRlcm5hbCBIREQKKwkwNTAwICBodWIKKwkwNzAyICBQYXNzcG9ydCBFeHRlcm5hbCBIREQKKwkwOTAxICBNeUJvb2sgRXh0ZXJuYWwgSERECisJMTAwMSAgRXh0ZXJuYWwgSGFyZCBEaXNrCisxMDU5ICBHaWVzZWNrZSAmIERldnJpZW50IEdtYkgKKwkwMDBiICBTdGFyU2lnbiBCaW8gVG9rZW4gMy4wCisxMDVjICBIb25nIEppIEVsZWN0cmljIFdpcmUgJiBDYWJsZSAoRG9uZ2d1YW4pIENvLiwgTHRkCisxMDVkICBEZWxraW4gRGV2aWNlcywgSW5jLgorMTA1ZSAgVmFsZW5jZSBTZW1pY29uZHVjdG9yIERlc2lnbiwgTHRkCisxMDVmICBDaGluIFNob25nIEVudGVycHJpc2UgQ28uLCBMdGQKKzEwNjAgIEVhc3Rob21lIEluZHVzdHJpYWwgQ28uLCBMdGQKKzEwNjMgIE1vdG9yb2xhIEVsZWN0cm9uaWNzIFRhaXdhbiwgTHRkIFtoZXhdCisJMTU1NSAgTUMxNDE1NTUgSHViCisJNDEwMCAgU0I0MTAwIFVTQiBDYWJsZSBNb2RlbQorMTA2NSAgQ0NZVSBUZWNobm9sb2d5CisJMDAyMCAgVVNCLURWUjIgRGV2IEJvYXJkCisJMjEzNiAgRWFzeURpc2sgRUQxMDY0CisxMDZhICBMb3lhbCBMZWdlbmQsIEx0ZAorMTA2YyAgQ3VyaXRlbCBDb21tdW5pY2F0aW9ucywgSW5jLgorCTExMDEgIENETUEgMjAwMCAxeFJUVCBVU0IgbW9kZW0gKEhYLTU1MEMpCisJMTEwMiAgUGFja2V0IFNlcnZpY2UKKwkxMTAzICBQYWNrZXQgU2VydmljZSBEaWFnbm9zdGljIFNlcmlhbCBQb3J0IChXRE0pCisJMTEwNCAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTExMDUgIENvbXBvc2l0ZSBEZXZpY2UKKwkxMTA2ICBQYWNrZXQgU2VydmljZSBEaWFnbm9zdGljIFNlcmlhbCBQb3J0IChXRE0pCisJMTMwMSAgQ29tcG9zaXRlIERldmljZQorCTEzMDIgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwkxMzAzICBQYWNrZXQgU2VydmljZQorCTEzMDQgIFBhY2tldCBTZXJ2aWNlCisJMTQwMSAgQ29tcG9zaXRlIERldmljZQorCTE0MDIgIFBhY2tldCBTZXJ2aWNlCisJMTQwMyAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTE1MDEgIFBhY2tldCBTZXJ2aWNlCisJMTUwMiAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTE1MDMgIFBhY2tldCBTZXJ2aWNlCisJMTYwMSAgUGFja2V0IFNlcnZpY2UKKwkxNjAyICBQYWNrZXQgU2VydmljZSBEaWFnbm9zdGljIFNlcmlhbCBQb3J0IChXRE0pCisJMTYwMyAgUGFja2V0IFNlcnZpY2UKKwkyMTAxICBBdWRpb1ZveCA4OTAwIENlbGwgUGhvbmUKKwkyMTAyICBQYWNrZXQgU2VydmljZQorCTIxMDMgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwkyMzAxICBQYWNrZXQgU2VydmljZQorCTIzMDIgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwkyMzAzICBQYWNrZXQgU2VydmljZQorCTI0MDEgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwkyNDAyICBQYWNrZXQgU2VydmljZQorCTI0MDMgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwkyNTAxICBQYWNrZXQgU2VydmljZQorCTI1MDIgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwkyNTAzICBQYWNrZXQgU2VydmljZQorCTI2MDEgIFBhY2tldCBTZXJ2aWNlCisJMjYwMiAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTI2MDMgIFBhY2tldCBTZXJ2aWNlCisJMzcwMSAgQnJvYWRiYW5kIFdpcmVsZXNzIG1vZGVtCisJMzcwMiAgUGFudGVjaCBQWC01MDAKKwkzZWI0ICBQYWNrZXQgU2VydmljZSBEaWFnbm9zdGljIFNlcmlhbCBQb3J0IChXRE0pCisJNDEwMSAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTQxMDIgIFBhY2tldCBTZXJ2aWNlCisJNDMwMSAgQ29tcG9zaXRlIERldmljZQorCTQzMDIgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwk0NDAxICBDb21wb3NpdGUgRGV2aWNlCisJNDQwMiAgUGFja2V0IFNlcnZpY2UKKwk0NTAxICBQYWNrZXQgU2VydmljZQorCTQ1MDIgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwk0NjAxICBDb21wb3NpdGUgRGV2aWNlCisJNDYwMiAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTUxMDEgIFBhY2tldCBTZXJ2aWNlCisJNTEwMiAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTUzMDEgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwk1MzAyICBQYWNrZXQgU2VydmljZQorCTU0MDEgIFBhY2tldCBTZXJ2aWNlCisJNTQwMiAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCTU1MDEgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwk1NTAyICBQYWNrZXQgU2VydmljZQorCTU2MDEgIFBhY2tldCBTZXJ2aWNlIERpYWdub3N0aWMgU2VyaWFsIFBvcnQgKFdETSkKKwk1NjAyICBQYWNrZXQgU2VydmljZQorCTcxMDEgIENvbXBvc2l0ZSBEZXZpY2UKKwk3MTAyICBQYWNrZXQgU2VydmljZQorCWEwMDAgIFBhY2tldCBTZXJ2aWNlCisJYTAwMSAgUGFja2V0IFNlcnZpY2UgRGlhZ25vc3RpYyBTZXJpYWwgUG9ydCAoV0RNKQorCWMxMDAgIFBhY2tldCBTZXJ2aWNlCisJYzIwMCAgUGFja2V0IFNlcnZpY2UKKwljNTAwICBQYWNrZXQgU2VydmljZSBEaWFnbm9zdGljIFNlcmlhbCBQb3J0IChXRE0pCisJZTIwMCAgUGFja2V0IFNlcnZpY2UKKzEwNmQgIFNhbiBDaGllaCBNYW51ZmFjdHVyaW5nLCBMdGQKKzEwNmUgIENvbmVjdEwKKzEwNmYgIE1vbmV5IENvbnRyb2xzCisxMDc2ICBHQ1QgU2VtaWNvbmR1Y3RvciwgSW5jLgorCTAwMzEgIEJsdWV0b290aCBEZXZpY2UKKwkwMDMyICBCbHVldG9vdGggRGV2aWNlCisxMDdkICBBcmxlYyBBdXN0cmFsaWEsIEx0ZAorMTA3ZSAgTWlkb3JpeWEgRWxlY3RyaWMgQ28uLCBMdGQKKzEwN2YgIEtpZHpNb3VzZSwgSW5jLgorMTA4MiAgU2hpbi1FdHN1a2FrZW4gQ28uLCBMdGQKKzEwODMgIENhbm9uIEVsZWN0cm9uaWNzLCBJbmMuCisxMDg0ICBQYW50ZWNoIENvLiwgTHRkCisxMDhhICBDaGxvcmlkZSBQb3dlciBQcm90ZWN0aW9uCisxMDhiICBHcmFuZC10ZWsgVGVjaG5vbG9neSBDby4sIEx0ZAorMTA4YyAgUm9iZXJ0IEJvc2NoIEdtYkgKKzEwOGUgIExvdGVzIENvLiwgTHRkLgorMTA5OSAgU3VyZmFjZSBPcHRpY3MgQ29ycC4KKzEwOWEgIERBVEFTT0ZUIFN5c3RlbXMgR21iSAorMTA5ZiAgZVNPTCBDby4sIEx0ZAorCTMxNjMgIFRyaWdlbSBNb2JpbGUgU21hcnREaXNwbGF5ODQKKwkzMTY0ICBUcmlnZW0gTW9iaWxlIFNtYXJ0RGlzcGxheTEyMQorMTBhMCAgSGlyb3RlY2gsIEluYy4KKzEwYTMgIE1pdHN1YmlzaGkgTWF0ZXJpYWxzIENvcnAuCisxMGE5ICBTSyBUZWxldGVjaCBDby4sIEx0ZAorMTBhYSAgQ2FibGVzIFRvIEdvCisxMGFiICBVU0kgQ28uLCBMdGQKKwkxMDAyICBCbHVldG9vdGggRGV2aWNlCisJMTAwMyAgQkMwMi1FWFQgaW4gREZVCisJMTAwNSAgQmx1ZXRvb3RoIEFkcHRyCisJMTAwNiAgQkMwNC1FWFQgaW4gREZVCisJMTBjNSAgU29ueS1Fcmljc3NvbiAvIFNhbXN1bmcgRGF0YUNhYmxlCisxMGFjICBIb25leXdlbGwsIEluYy4KKzEwYWUgIFByaW5jZXRvbiBUZWNobm9sb2d5IENvcnAuCisxMGFmICBMaWViZXJ0IENvcnAuCisJMDAwMCAgVVBTCisJMDAwMSAgUG93ZXJTdXJlIFBTQSBVUFMKKwkwMDAyICBQb3dlclN1cmUgUFNUIFVQUworCTAwMDMgIFBvd2VyU3VyZSBQU1AgVVBTCisJMDAwNCAgUG93ZXJTdXJlIFBTSSBVUFMKKwkwMDA1ICBVUFN0YXRpb24gR1hUIDJVIFVQUworCTAwMDYgIFVQU3RhdGlvbiBHWFQgVVBTCisJMDAwNyAgTmZpbml0eSBQb3dlciBTeXN0ZW1zIFVQUworCTAwMDggIFBvd2VyU3VyZSBJbnRlcmFjdGl2ZSBVUFMKKzEwYjUgIENvbW9kbyAoUExYPykKKwk5MDYwICBUZXN0IEJvYXJkCisxMGI4ICBEaUJjb20KKwkwYmI4ICBEaUJjb20gVVNCIERWQi1UIHJlZmVyZW5jZSBkZXNpZ24gKE1PRDMwMCkgKGNvbGQpCisJMGJiOSAgRGlCY29tIFVTQiBEVkItVCByZWZlcmVuY2UgZGVzaWduIChNT0QzMDApICh3YXJtKQorCTBiYzYgIERpQmNvbSBVU0IyLjAgRFZCLVQgcmVmZXJlbmNlIGRlc2lnbiAoTU9EMzAwMFApIChjb2xkKQorCTBiYzcgIERpQmNvbSBVU0IyLjAgRFZCLVQgcmVmZXJlbmNlIGRlc2lnbiAoTU9EMzAwMFApICh3YXJtKQorMTBiYiAgVE0gVGVjaG5vbG9neSwgSW5jLgorMTBiYyAgRGluZ2luZyBUZWNobm9sb2d5IENvLiwgTHRkCisxMGJkICBUTVQgVGVjaG5vbG9neSwgSW5jLgorCTE0MjcgIEV0aGVybmV0CisxMGJmICBTbWFydEhvbWUKKwkwMDAxICBTbWFydEhvbWUgUG93ZXJMaW5jCisxMGM0ICBDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLgorCTAwMDIgIEYzMnggVVNCWHByZXNzIERldmljZQorCTgwYTkgIENQMjEweCB0byBVQVJUIEJyaWRnZSBDb250cm9sbGVyCisJODBjYSAgQVRNMjQwMCBTZW5zb3IgRGV2aWNlCisJODQ2MSAgU2FuZ29tYSBVMTAwCisJZWE2MCAgQ1AyMTB4IENvbXBvc2l0ZSBEZXZpY2UKKzEwYzUgIFNhbmVpIEVsZWN0cmljLCBJbmMuCisxMGM2ICBJbnRlYywgSW5jLgorMTBjYiAgRXJhdGVjaAorMTBjYyAgR0JNIENvbm5lY3RvciBDby4sIEx0ZAorCTExMDEgIE1QMyBQbGF5ZXIKKzEwY2QgIEt5Y29uLCBJbmMuCisxMGNlICBTaWxpY29uIExhYnMKKwllYTZhICBNb2JpRGF0YSBFREdFIFVTQiBNb2RlbQorMTBjZiAgVmVsbGVtYW4gQ29tcG9uZW50cywgSW5jLgorCTU1MDAgIDgwNTUgRXhwZXJpbWVudCBJbnRlcmZhY2UgQm9hcmQgKGFkZHJlc3M9MCkKKwk1NTAxICA4MDU1IEV4cGVyaW1lbnQgSW50ZXJmYWNlIEJvYXJkIChhZGRyZXNzPTEpCisJNTUwMiAgODA1NSBFeHBlcmltZW50IEludGVyZmFjZSBCb2FyZCAoYWRkcmVzcz0yKQorCTU1MDMgIDgwNTUgRXhwZXJpbWVudCBJbnRlcmZhY2UgQm9hcmQgKGFkZHJlc3M9MykKKzEwZDEgIEhvdHRpbmdlciBCYWxkd2luIE1lYXN1cmVtZW50CisJMDEwMSAgVVNCLU1vZHVsZSBmb3IgU3BpZGVyOCwgQ1AzMgorCTAyMDIgIENQMjIgLSBDb21tdW5pY2F0aW9uIFByb2Nlc3NvcgorCTAzMDEgIENQNDIgLSBDb21tdW5pY2F0aW9uIFByb2Nlc3NvcgorMTBkNCAgTWFuIEJvb24gTWFudWZhY3RvcnksIEx0ZAorMTBkNSAgVW5pIENsYXNzIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwk1NWEyICAyUG9ydCBLVk1Td2l0Y2hlcgorMTBkNiAgQWN0aW9ucyBTZW1pY29uZHVjdG9yIENvLiwgTHRkCisJMTAwMCAgTVAzIFBsYXllcgorCTExMDAgIE1QTWFuIE1QLUtpIDEyOCBNUDMgUGxheWVyL1JlY29yZGVyCisJMTEwMSAgRC1XYXZlIDJHQiBNUDQgUGxheWVyIC8gQUsxMDI1IE1QMy9NUDQgUGxheWVyCisJODg4OCAgQURGVSBEZXZpY2UKKwlmZjUxICBBREZVIERldmljZQorCWZmNjEgIE1QNCBQbGF5ZXIKKzEwZGUgIEF1dGhlbmV4LCBJbmMuCisxMGRmICBJbi1XaW4gRGV2ZWxvcG1lbnQsIEluYy4KKwkwNTAwICBpQVBQIENSLWU1MDAgQ2FyZCByZWFkZXIKKzEwZTAgIFBvc3QtT3AgVmlkZW8sIEluYy4KKzEwZTEgIENhYmxlUGx1cywgTHRkCisxMGUyICBOYWRhIEVsZWN0cm9uaWNzLCBMdGQKKzEwZWMgIFZhc3QgVGVjaG5vbG9naWVzLCBJbmMuCisxMGY1ICBUdXJ0bGUgQmVhY2gKKwkwMjAwICBBdWRpbyBBZHZhbnRhZ2UgUm9hZGllCisxMGZiICBQaWN0b3MgVGVjaG5vbG9naWVzLCBJbmMuCisxMGZkICBBbnViaXMgRWxlY3Ryb25pY3MsIEx0ZAorCTdlNTAgIEZseUNhbSBVc2IgMTAwCisJODA0ZCAgVHlwaG9vbiBXZWJzaG90IElJIFdlYmNhbSBbemMwMzAxXQorCTgwNTAgIEZseUNBTS1VU0IgMzAwIFhQMgorCWRlMDAgIFdpbkZhc3QgV2Fsa2llVFYgV0RNIENhcHR1cmUgRHJpdmVyLgorMTEwMCAgVmlyVG91Y2gsIEx0ZAorCTAwMDEgIFZUUGxheWVyIFZUUC0xIEJyYWlsbGUgTW91c2UKKzExMDEgIEVhc3lQYXNzIEluZHVzdHJpYWwgQ28uLCBMdGQKKwkwMDAxICBGU0sgRWxlY3Ryb25pY3MgU3VwZXIgR1NNIFJlYWRlcgorMTEwOCAgQnJpZ2h0Y29tIFRlY2hub2xvZ2llcywgTHRkCisxMTEwICBBbmFsb2cgRGV2aWNlcyBDYW5hZGEsIEx0ZCAoQWxsaWVkIFRlbGVzeW4pCisJNWMwMSAgSHVhd2VpIE1ULTg4MiBSZW1vdGUgTkRJUyBOZXR3b3JrIERldmljZQorCTY0ODkgIEFEU0wgRVRIL1VTQiBSVFIKKwk5MDAwICBBRFNMIExBTiBBZGFwdGVyCisJOTAwMSAgQURTTCBMb2FkZXIKKwk5MDBmICBBVC1BUjIxNSBEU0wgTW9kZW0KKwk5MDEwICBBVC1BUjIxNSBEU0wgTW9kZW0KKwk5MDIxICBBRFNMIFdBTiBBZGFwdGVyCisJOTAyMiAgQURTTCBMb2FkZXIKKwk5MDIzICBBRFNMIFdBTiBBZGFwdGVyCisJOTAyNCAgQURTTCBMb2FkZXIKKwk5MDMxICBBRFNMIExBTiBBZGFwdGVyCisJOTAzMiAgQURTTCBMb2FkZXIKKzExMTEgIFBhbmRvcmEgSW50ZXJuYXRpb25hbCBMdGQuCisJODg4OCAgRXZvbHV0aW9uIERldmljZQorMTExMiAgWU0gRUxFQ1RSSUMgQ08uLCBMdGQKKzExMTMgIE1lZGlvbiBBRworMTExZSAgVlNPIEVsZWN0cmljIENvLiwgTHRkCisxMTJlICBNYXN0ZXIgSGlsbCBFbGVjdHJpYyBXaXJlIGFuZCBDYWJsZSBDby4sIEx0ZAorMTEyZiAgQ2VsbG9uIEludGVybmF0aW9uYWwsIEluYy4KKzExMzAgIFRlbnggVGVjaG5vbG9neSwgSW5jLgorCTY4MDYgIEtleWNoYWluIHBob3RvIGZyYW1lCisJZjIxMSAgYXVkaW8gaGVhZHNldAorMTEzMSAgSW50ZWdyYXRlZCBTeXN0ZW0gU29sdXRpb24gQ29ycC4KKwkxMDAxICBLWS1CVDEwMCBCbHVldG9vdGggQWRhcHRlcgorCTEwMDIgIEJsdWV0b290aCBEZXZpY2UKKwkxMDAzICBCbHVldG9vdGggRGV2aWNlCisJMTAwNCAgQmx1ZXRvb3RoIERldmljZQorMTEzMiAgVG9zaGliYSBDb3JwLiwgRGlnaXRhbCBNZWRpYSBFcXVpcG1lbnQgW2hleF0KKwk0MzMxICBQRFItTTQvTTUvTTcwIERpZ2l0YWwgQ2FtZXJhCisJNDMzMiAgUERSLU02MCBEaWdpdGFsIENhbWVyYQorCTQzMzMgIFBEUi1NMjMwMC9QRFItTTcwMAorCTQzMzQgIFBEUi1NNjUKKwk0MzM1ICBQRFItTTYxCisJNDMzNyAgUERSLU0xMQorCTQzMzggIFBEUi1NMjUKKzExM2MgIEFyaW4gVGVjaCBDby4sIEx0ZAorMTEzZCAgTWFwb3dlciBFbGVjdHJvbmljcyBDby4sIEx0ZAorMTE0MSAgViBPbmUgTXVsdGltZWRpYSwgUHRlLiwgTHRkCisxMTQyICBDeWJlclNjYW4gVGVjaG5vbG9naWVzLCBJbmMuCisxMTQ1ICBKYXBhbiBSYWRpbyBDb21wYW55CisJMDAwMSAgQWlySCBQSE9ORSBBSC1KMzAwMVYvSjMwMDJWCisxMTQ2ICBTaGltYW5lIFNBTllPIEVsZWN0cmljIENvLiwgTHRkLgorMTE0NyAgRXZlciBHcmVhdCBFbGVjdHJpYyBXaXJlIGFuZCBDYWJsZSBDby4sIEx0ZAorMTE0YiAgU3BoYWlyb24gQWNjZXNzIFN5c3RlbXMgR21iSAorCTAxMTAgIFR1cmJvbGluayBVQjgwMVIgV0xBTiBBZGFwdGVyCisxMTRjICBUaW5pdXMgT2xzZW4gVGVzdGluZyBNYWNoaW5lIENvLiwgSW5jLgorMTE0ZCAgQWxwaGEgSW1hZ2luZyBUZWNobm9sb2d5IENvcnAuCisxMTRmICBXYXZlY29tCisxMTViICBTYWxpeCBUZWNobm9sb2d5IENvLiwgTHRkLgorMTE2MiAgU2VjdWdlbiBDb3JwLgorMTE2MyAgRGVMb3JtZSBQdWJsaXNoaW5nLCBJbmMuCisJMDEwMCAgRWFydGhtYXRlIEdQUyAob3JpZykKKwkwMjAwICBFYXJ0aG1hdGUgR1BTIChMVC0yMCwgTFQtNDApCisxMTY0ICBZVUFOIEhpZ2gtVGVjaCBEZXZlbG9wbWVudCBDby4sIEx0ZAorCTAzMDAgIEVMU0FWSVNJT04gNDYwRAorCTA2MDEgIEFuYWxvZyBUViBUdW5lcgorCTA5MDAgIFRpZ2VyQmlyZCBCTVA4MzcgVVNCMi4wIFdETSBFbmNvZGVyCisJMGJjNyAgRGlnaXRhbCBUViBUdW5lcgorMTE2NSAgVGVsc29uIEVsZWN0cm9uaWNzIENvLiwgTHRkCisxMTY2ICBCYW50YW0gSW50ZXJhY3RpdmUgVGVjaG5vbG9naWVzCisxMTY3ICBTYWxpZW50IFN5c3RlbXMgQ29ycC4KKzExNjggIEJpekNvbm4gSW50ZXJuYXRpb25hbCBDb3JwLgorMTE2ZSAgR2lnYXN0b3JhZ2UgQ29ycC4KKzExNmYgIFNpbGljb24gMTAgVGVjaG5vbG9neSBDb3JwLgorMTE3NSAgU2hlbmd5aWggU3RlZWwgTW9sZCBDby4sIEx0ZAorMTE3ZCAgU2FudGEgRWxlY3Ryb25pYywgSW5jLgorMTE3ZSAgSk5DLCBJbmMuCisxMTgyICBWZW50dXJlIENvcnAuLCBMdGQKKzExODMgIENvbXBhcSBDb21wdXRlciBDb3JwLiBbaGV4XSAoRGlnaXRhbCBEcmVhbSA/PykKKwkwMDAxICBEaWdpdGFsRHJlYW0gbCdlc3Bpb24gWFMKKwkxOWM3ICBJU0ROIFRBCisJNDAwOCAgNTZrIEZheE1vZGVtCisJNTA0YSAgUEpCLTEwMCBQZXJzb25hbCBKdWtlYm94CisxMTg0ICBLeW9jZXJhIEVsY28gQ29ycC4KKzExODggIEJsb29tYmVyZyBMLlAuCisxMTg5ICBBY2VyIENvbW11bmljYXRpb25zICYgTXVsdGltZWRpYQorCTA4OTMgIEVQLTE0MjdYLTIgRXRoZXJuZXQgQWRhcHRlcgorMTE4ZiAgWW91IFlhbmcgVGVjaG5vbG9neSBDby4sIEx0ZAorMTE5MCAgVHJpcGFjZQorMTE5MSAgTG95YWx0eSBGb3VuZGVyIEVudGVycHJpc2UgQ28uLCBMdGQKKzExOTYgIFlhbmtlZSBSb2JvdGljcywgTExDCisJMDAxMCAgVHJpZmlkIENhbWVyYSB3aXRob3V0IGNvZGUKKwkwMDExICBUcmlmaWQgQ2FtZXJhCisxMTk3ICBUZWNobm9pbWFnaWEgQ28uLCBMdGQKKzExOTggIFN0YXJTaGluZSBUZWNobm9sb2d5IENvcnAuCisxMTk5ICBTaWVycmEgV2lyZWxlc3MsIEluYy4KKwkwMDE5ICBBQzU5NVUKKwkwMDIxICBBQzU5N0UKKwkwMTEwICBDb21wb3NpdGUgRGV2aWNlCisJMDExMiAgQ0RNQSAxeEVWRE8gUEMgQ2FyZCwgQWlyQ2FyZCA1ODAKKwkwMTIwICBBQzU5NVUKKwkwMjE4ICBNQzU3MjAgV2lyZWxlc3MgTW9kZW0KKwk2NDY3ICBNUCBTZXJpZXMgTmV0d29yayBBZGFwdGVyCisJNjQ2OCAgTVAgU2VyaWVzIE5ldHdvcmsgQWRhcHRlcgorCTY0NjkgIE1QIFNlcmllcyBOZXR3b3JrIEFkYXB0ZXIKKwk2ODAyICBNQzg3NTUgRGV2aWNlCisJNjgwMyAgTUM4NzY1IERldmljZQorCTY4MDQgIE1DODc1NSBEZXZpY2UKKwk2ODA1ICBNQzg3NjUgRGV2aWNlCisJNjgxMiAgTUM4Nzc1IERldmljZQorCTY4MjAgIEFDODc1IERldmljZQorCTY4MzIgIE1DODc4MCBEZXZpY2UKKwk2ODMzICBNQzg3ODEgRGV2aWNlCisJNjgzYSAgTUM4Nzg1IERldmljZQorCTY4NTAgIEFpckNhcmQgODgwIERldmljZQorCTY4NTEgIEFpckNhcmQgODgxIERldmljZQorCTY4NTIgIEFpckNhcmQgODgwRSBEZXZpY2UKKwk2ODUzICBBaXJDYXJkIDg4MUUgRGV2aWNlCisJNjg1NCAgQWlyQ2FyZCA4ODUgRGV2aWNlCisJNjg3MCAgTUM4NzgwIERldmljZQorCTY4NzEgIE1DODc4MSBEZXZpY2UKKzExOWEgIFpIQU4gUUkgVGVjaG5vbG9neSBDby4sIEx0ZAorMTE5YiAgcnV3aWRvIGF1c3RyaWEgR21iSAorCTA0MDAgIEluZnJhcmVkIEtleWJvYXJkIFYyLjAxCisxMWEwICBDaGlwY29uIEFTCisJZWIxMSAgQ0MyNDAwRUIgMi4wIFppZ0JlZSBTbmlmZmVyCisxMWEzICBUZWNobm92YXMgQ28uLCBMdGQKKwk4MDMxICBNUDMgUGxheWVyCisJODAzMiAgTVAzIFBsYXllcgorMTFhYSAgR2xvYmFsTWVkaWEgR3JvdXAsIExMQworCTE1MTggIGlSRVogSzIKKzExYWIgIEV4aXRvIEVsZWN0cm9uaWNzIENvLiwgTHRkCisxMWIwICBBVEVDSCBGTEFTSCBURUNITk9MT0dZCisxMWRiICBUb3BmaWVsZCBDby4sIEx0ZC4KKwkxMDAwICBQVlIKKwkxMTAwICBQVlIKKzExZTYgIEsuSS4gVGVjaG5vbG9neSBDby4gTHRkLgorMTFmNSAgU2llbWVucyBBRyAoPykKKwkwMDAxICBTWDEKKwkwMDAzICBNb2JpbGUgcGhvbmUgVVNCIGNhYmxlCisJMDAwNCAgWDc1CisxMWY2ICBQcm9saWZpYworCTIwMDEgIFdpbGxjb20gV1NJTQorMTFmNyAgQWxjYXRlbCAoPykKKwkwMmRmICBURDEwIE1vYmlsZSBwaG9uZSBVU0IgY2FibGUKKzEyMDkgIEludGVyQmlvbWV0cmljcworCTEwMDEgIFVTQiBIdWIKKwkxMDAyICBVU0IgUmVsYWlzCisJMTAwMyAgSUJTZWN1cmVDYW0tUAorCTEwMDQgIElCU2VjdXJlQ2FtLU8KKwkxMDA1ICBJQlNlY3VyZUNhbS1OCisxMjBlICBIdWRzb24gU29mdCBDby4sIEx0ZAorMTIxZSAgSnVuZ3NvZnQgQ28uLCBMdGQKKwkzNDAzICBNdXppbyBKTTI1MCBBdWRpbyBQbGF5ZXIKKzEyMjMgIFNLWUNBQkxFIEVOVEVSUFJJU0UuIENPLiwgTFRELgorMTIzMCAgQ2hpcGlkZWEtTWljcm9lbGVjdHJvbmljYSwgUy5BLgorMTIzNSAgTm92YXRpb24gRU1TCisJMDAwMSAgUmVNT1RFIEF1ZGlvL1hTdGF0aW9uCisJMDAwMiAgU3BlZWRpbworCTQ2NjEgIFJlTU9URTI1CisxMjQxICBCZWxraW4KKwkxMTExICBNb3VzZQorCTExMjIgIFR5cGhvb24gU3RyZWFtIE9wdGljYWwgTW91c2UgVVNCK1BTLzIKKwkxMTU1ICBQUzIvVVNCIEJyb3dzZXIgQ29tYm8gTW91c2UKKwkxMTY2ICBNSS0yMTUwIFRydXN0IE1vdXNlCisJMTE3NyAgRjhFODQyLURMIE1vdXNlCisJMTUwMyAgS2V5Ym9hcmQKKzEyNGEgIEFpclZhc3QKKwkxNjhiICBQUklTTTMgV0xBTiBBZGFwdGVyCisJNDAxNyAgUEMtQ2hpcHMgODAyLjExYiBBZGFwdGVyCisxMjRiICBOeWtvIChIb25leSBCZWUpCisJNGQwMSAgQWlyZmxvIEVYIEpveXN0aWNrCisxMjVjICBBcG9nZWUgSW5jLgorCTAwMTAgIEFsdGEgc2VyaWVzIENDRAorMTI1ZiAgQS1EQVRBIFRlY2hub2xvZ3kgQ28uLCBMdGQuCisxMjY0ICBDb3ZpZGllbiBFbmVyZ3ktYmFzZWQgRGV2aWNlcworMTI2NiAgUGlyZWxsaSBCcm9hZGJhbmQgU29sdXRpb25zCisJNjMwMiAgRmFzdHdlYiBEUkcgQTIyNk0gQURTTCBSb3V0ZXIKKzEyNjcgIExvZ2ljMyAvIFNwZWN0cmFWaWRlbyBwbGMKKwkwMTAzICBHLTcyMCBLZXlib2FyZAorCTAyMDEgIEE0VGVjaCBTV09QLTMgTW91c2UKKwlhMDAxICBKUDI2MCBQQyBHYW1lIFBhZAorCWMwMDIgIFdpcmVsZXNzIE9wdGljYWwgTW91c2UKKzEyNmMgIEFyaXN0b2NyYXQgVGVjaG5vbG9naWVzCisxMjZkICBCZWwgU3Rld2FydAorMTI2ZSAgU3Ryb2JlIERhdGEsIEluYy4KKzEyNmYgIFR3aW5NT1MKKwkxMzI1ICBNb2JpbGUgRGlzaworCTIxNjggIE1vYmlsZSBEaXNrIElJSQorCWEwMDYgIEcyNDAgODAyLjExYmcKKzEyNzUgIFhheGVybyBNYXJpbmUgU29mdHdhcmUgRW5naW5lZXJpbmcsIEx0ZC4KKwkwMDAyICBXZWF0aGVyRmF4IDIwMDAgRGVtb2R1bGF0b3IKKwkwMDgwICBTa3lFeWUgV2VhdGhlciBTYXRlbGxpdGUgUmVjZWl2ZXIKKzEyODYgIE1hcnZlbGwgU2VtaWNvbmR1Y3RvciwgSW5jLgorCTgwMDEgIEJMT0IgYm9vdCBsb2FkZXIgZmlybXdhcmUKKzEyOTIgIElubm9tZWRpYQorCTAyNTggIENyZWF0aXZlIExhYnMgVm9JUCBCbGFzdGVyCisxMjkzICBCZWxraW4gQ29tcG9uZW50cyBbaGV4XQorCTAwMDIgIEY1VTAwMiBQYXJhbGxlbCBQb3J0IFt1c3M3MjBdCisJMjEwMSAgMTA0LWtleSBrZXlib2FyZAorMTI5NCAgUklTTyBLQUdBS1UgQ09SUC4KKzEyOWIgIEN5YmVyVEFOIFRlY2hub2xvZ3kKKwkxNjY2ICBURzU0VVNCIDgwMi4xMWJnCisJMTY2NyAgODAyLjExYmcKKzEyYTcgIFRyZW5kY2hpcCBUZWNobm9sb2dpZXMgQ29ycC4KKzEyYWIgIEhvbmV5IEJlZSBFbGVjdHJvbmljIEludGVybmF0aW9uYWwgTHRkLgorMTJiYSAgTGljZW5zZWQgYnkgU29ueSBDb21wdXRlciBFbnRlcnRhaW5tZW50IEFtZXJpY2EKKwkwMjAwICBIYXJtb25peCBHdWl0YXIgZm9yIFBsYXlTdGF0aW9uKFIpMworCTAyMTAgIEhhcm1vbml4IERydW0gS2l0IGZvciBQbGF5U3RhdGlvbihSKTMKKzEyZDEgIEh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuCisJMTAwMSAgRTYyMCBVU0IgTW9kZW0KKwkxMDAzICBFMjIwIEhTRFBBIE1vZGVtIC8gRTI3MCBIU0RQQS9IU1VQQSBNb2RlbQorCTEwMDkgIFUxMjAKKzEyZDIgIExJTkUgVEVDSCBJTkRVU1RSSUFMIENPLiwgTFRELgorMTJkNyAgQkVUVEVSIFdJUkUgRkFDVE9SWSBDTy4sIExURC4KKzEyZWYgIFRhcHdhdmUsIEluYy4KKwkwMTAwICBUYXB3YXZlIEhhbmRoZWxkIFtUYXB3YXZlIFpvZGlhY10KKzEyZjUgIER5bmFtaWMgU3lzdGVtIEVsZWN0cm9uaWNzIENvcnAuCisxMmY3ICBNZW1vcmV4IFByb2R1Y3RzLCBJbmMuCisJMWEwMCAgVEQgQ2xhc3NpYyAwMDNCCisJMWUyMyAgVHJhdmVsRHJpdmUgMjAwNyBGbGFzaCBEcml2ZQorMTJmZCAgQUlOIENvbW0uIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkxMDAxICBBV1UyMDAwYiA4MDIuMTFiIFN0aWNrCisxMmZmICBGYXNjaW5hdGluZyBFbGVjdHJvbmljcywgSW5jLgorCTAxMDEgIEFkdmFuY2VkIFJDIFNlcnZvIENvbnRyb2xsZXIKKzEzMDcgIFRyYW5zY2VuZCBJbmZvcm1hdGlvbiwgSW5jLgorCTAxNjMgIDUxMk1CLzFHQiBGbGFzaCBEcml2ZQorCTAxNjUgIDJHQi80R0IgRmxhc2ggRHJpdmUKKwkxMTY5ICBUUzJHSkYyMTAgSmV0Rmxhc2ggMjEwIDJHQgorMTMxMCAgUm9wZXIKKwkwMDAxICBDbGFzcyAxIEJsdWV0b290aCBEb25nbGUKKzEzMTIgIElDUyBFbGVjdHJvbmljcworMTMxZCAgTmF0dXJhbCBQb2ludAorCTAxNTUgIFRyYWNrSVIgMyBQcm8gSGVhZCBUcmFja2VyCisxMzJiICBLb25pY2EgTWlub2x0YQorCTAwMDAgIERpbWFnZSBBMiBDYW1lcmEKKwkwMDAxICBNaW5vbHRhIERpTUFHRSBBMiAocHRwKQorCTAwMDMgIERpbWFnZSBYZyBDYW1lcmEKKwkwMDA2ICBEaW1hZ2UgWjIgQ2FtZXJhCisJMDAwNyAgTWlub2x0YSBEaU1BR0UgWjIgKFBpY3RCcmlkZ2UgbW9kZSkKKwkwMDA4ICBEaW1hZ2UgWDIxIENhbWVyYQorCTAwMGEgIERpbWFnZSBTY2FuIER1YWwgSVYKKwkwMDBiICBEaW1hZ2UgWjEwIENhbWVyYQorCTAwMGQgIERpbWFnZSBYNTAgQ2FtZXJhIFtzdG9yYWdlP10KKwkwMDBmICBEaW1hZ2UgWDUwIENhbWVyYSBbcDJwP10KKwkwMDEwICBEaW1hZ2UgRzYwMCBDYW1lcmEKKwkwMDEyICBEaW1hZ2UgU2NhbiBFbGl0ZTU0MDAgMgorCTAwMTMgIERpbWFnZSBYMzEgQ2FtZXJhCisJMDAxNSAgRGltYWdlIEc1MzAgQ2FtZXJhCisJMDAxNyAgRGltYWdlIFozIENhbWVyYQorCTAwMTggIE1pbm9sdGEgRGlNQUdFIFozIChQaWN0QnJpZGdlIG1vZGUpCisJMDAxOSAgRGltYWdlIEEyMDAgQ2FtZXJhCisJMDAyMSAgRGltYWdlIFo1IENhbWVyYQorCTAwMjIgIE1pbm9sdGEgRGlNQUdFIFo1IChQaWN0QnJpZGdlIG1vZGUpCisxMzQyICBNb2JpbGl0eQorCTAyMDAgIEVhc2lEb2NrIDIwMCBIdWIKKwkwMjAxICBFYXNpRG9jayAyMDAgS2V5Ym9hcmQgYW5kIE1vdXNlIFBvcnQKKwkwMjAyICBFYXNpRG9jayAyMDAgU2VyaWFsIFBvcnQKKwkwMjAzICBFYXNpRG9jayAyMDAgUHJpbnRlciBQb3J0CisJMDIwNCAgRXRoZXJuZXQKKwkwMzA0ICBFYXNpRG9jayBFdGhlcm5ldAorMTM0OCAgS2F0c3VyYWdhd2EgRWxlY3RyaWMgQ28uLCBMdGQuCisxMzRlICBEaWdieSdzIEJpdHBpbGUsIEluYy4gREJBIEQgQml0CisxMzU3ICBQJkUgTWljcm9jb21wdXRlciBTeXN0ZW1zCisJMDUwMyAgVVNCLU1MLTEyIEhDUzA4L0hDUzEyIE11bHRpbGluaworMTM2YiAgU1RFQworMTM3MCAgU3dpc3NiaXQKKwkwMzIzICBTd2lzc21lbW9yeSBjaXJydXNXSElURQorCTY4MjggIFZpY3Rvcmlub3ggRmxhc2ggRHJpdmUKKzEzNzEgIERpY2sgU21pdGggRWxlY3Ryb25pY3MKKwk5MDIyICBSVDI1NzMKKwk5MDMyICBDLU5ldCBDV0QtODU0IHJldiBGCisxMzc2ICBWaW10cm9uIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorMTM3YiAgU0NBUFMgR21iSAorCTAwMDIgIFNDQVBTIFVTQy0yIFNjYW5uZXIgQ29udHJvbGxlcgorMTM4NSAgTmV0Z2VhciwgSW5jCisJNDI1MCAgV0cxMTFUCisJNDI1MSAgV0cxMTFUIChubyBmaXJtd2FyZSkKKwk1ZjAwICBXUE4xMTEgUmFuZ2VNYXgoVE0pIFdpcmVsZXNzIFVTQiAyLjAgQWRhcHRlcgorCTVmMDEgIFdQTjExMSAobm8gZmlybXdhcmUpCisxMzhhICBEaWdpdGFsUGVyc29uYSwgSW5jCisJMDAwMSBGaW5nZXByaW50IFJlYWRlcgorMTM4ZSAgSnVuZ28gTFRECisJOTAwMCAgUmFpc29uYW5jZSBTLkEuIFNUTTMyIEFSTSBldmFsdWF0aW9uIGJvYXJkCisxMzkwICBUT01UT00gQi5WLgorCTAwMDEgIEdPIDUyMCBUCisxMzk1ICBTZW5uaGVpc2VyIENvbW11bmljYXRpb25zCisJMzU1NiAgVVNCIEhlYWRzZXQKKzEzOTcgIEJFSFJJTkdFUiBJbnRlcm5hdGlvbmFsIEdtYkgKKwkwMGJjICBCQ0YyMDAwCisxMzk4ICBRLXRlYworCTIxMDMgIFVTQiAyLjAgU3RvcmFnZSBEZXZpY2UKKzEzYWQgIEJhbHRlY2gKKwk5OTk5ICBDYXJkIHJlYWRlcgorMTNiMCAgUGVya2luRWxtZXIgT3B0b2VsZWN0cm9uaWNzCisJMDAwYSAgQWxlc2lzIFBob3RvbiBYMjUgTUlESSBDb250cm9sbGVyCisxM2IxICBMaW5rc3lzCisJMDAwYiAgV1VTQjExIHY0LjAgODAyLjExYiBBZGFwdGVyCisJMDAwZCAgV1VTQjU0RyBXaXJlbGVzcyBBZGFwdGVyCisJMDAxMSAgV1VTQjU0R1AgdjQuMCA4MDIuMTFnIEFkYXB0ZXIKKwkwMDE4ICBVU0IyMDBNIDEwLzEwMCBFdGhlcm5ldCBBZGFwdGVyCisJMDAxYSAgSFUyMDBUUyBXaXJlbGVzcyBBZGFwdGVyCisJMDAxZSAgV1VTQkY1NEcgODAyLjExYmcKKwkwMDIwICBXVVNCNTRHQyA4MDIuMTFnIEFkYXB0ZXIgW3JhbGluayBydDczXQorCTAwMjMgIFdVU0I1NEdSCisJMDAyNCAgV1VTQkY1NEcgdjEuMSA4MDIuMTFiZworMTNiMyAgTmlwcG9uIERpY3MgQ28uLCBMdGQuCisxM2JhICBVbmtub3duCisJMDAxNyAgUFMvMiBLZXlib2FyZCtNb3VzZSBBZGFwdGVyCisxM2JlICBSaWNvaCBQcmludGluZyBTeXN0ZW1zLCBMdGQuCisxM2NhICBKeWVUYWkgUHJlY2lzaW9uIEluZHVzdHJpYWwgQ28uLCBMdGQuCisxM2NmICBXaXNhaXIgTHRkLgorMTNkMSAgQS1NYXggVGVjaG5vbG9neSBNYWNhbyBDb21tZXJjaWFsIE9mZnNob3JlIENvLiBMdGQuCisxM2QyICBTaGFyayBNdWx0aW1lZGlhCisJMDQwMCAgUG9ja2V0IEV0aGVybmV0IFtrbHNpXQorMTNkMyAgSU1DIE5ldHdvcmtzCisJMzIwMSAgVmlzaW9uRFRWIFVTQi1UZXIvSEFNQSBVU0IgRFZCLVQgZGV2aWNlIGNvbGQKKwkzMjAyICBWaXNpb25EVFYgVVNCLVRlci9IQU1BIFVTQiBEVkItVCBkZXZpY2Ugd2FybQorCTMyMDMgIERUVi1EVkIgVURTVDcwMjBCREEgRFZCLVMgQm94KERWQlMgZm9yIE1DRTIwMDUpCisJMzIwNCAgRFRWLURWQiBVRFNUNzAyMEJEQSBEVkItUyBCb3goRFZCUyBmb3IgTUNFMjAwNSkKKwkzMjA1ICBETlRWIExpdmUhIFRpbnkgVVNCMiBCREEgKE5vIFJlbW90ZSkKKwkzMjA2ICBETlRWIExpdmUhIFRpbnkgVVNCMiBCREEgKE5vIFJlbW90ZSkKKwkzMjA3ICBEVFYtRFZCIFVEU1Q3MDIwQkRBIERWQi1TIEJveChEVkJTIGZvciBNQ0UyMDA1KQorCTMyMDggIERUVi1EVkIgVURTVDcwMjBCREEgRFZCLVMgQm94KERWQlMgZm9yIE1DRTIwMDUpCisJMzIwOSAgRFRWLURWQiBVRFNUNzAyMkJEQSBEVkItUyBCb3goV2l0aG91dCBISUQpCisJMzIxMSAgRFRWLURWQiBIeWJyaWQgQW5hbG9nL0NhcHR1cmUgLyBQaW5uYWNsZSBQQ1RWIDMxMGUKKwkzMjEyICBEVFYtRFZCIFVEVFQ3MDRDIC0gRFZCVC9OVFNDL1BBTCBEcml2ZXIoUENNNCkKKwkzMjEzICBEVFYtRFZCIFVEVFQ3MDREIC0gRFZCVC9OVFNDL1BBTCBEcml2ZXIgKFBDTTQpCisJMzIxNCAgRFRWLURWQiBVRFRUNzA0RiAtKE1pbmlDYXJkKSBEVkJUL05UU0MvUEFMIERyaXZlcihXaXRob3V0IEhJRCkKKwkzMjE1ICBEVFYtRFZCIFVEQVQ3MjQwIC0gQVRTQy9OVFNDL1BBTCBEcml2ZXIoUENNNCkKKwkzMjE2ICBEVFYtRFZCIFVEVFQgNzA0Ny1VU0IgMi4wIERWQi1UIERyaXZlcgorCTMyMTcgIERpZ2l0YWwtVFYgUmVjZWl2ZXIuCisJMzIxOSAgRFRWLURWQiBVRFRUNzA0OSAtIERWQi1UIERyaXZlcihXaXRob3V0IEhJRCkKKwkzMjIwICBEVFYtRFZCIFVEVFQgNzA0N00tVVNCIDIuMCBEVkItVCBEcml2ZXIKKwkzMjIzICBETlRWIExpdmUhIFRpbnkgVVNCMiBCREEgKE5vIFJlbW90ZSkKKwkzMjI0ICBETlRWIExpdmUhIFRpbnkgVVNCMiBCREEgKE5vIFJlbW90ZSkKKwkzMjI2ICBEaWdpdGFsTm93IFRpbnlUd2luIERWQi1UIFJlY2VpdmVyCisJMzIzNiAgRFRWLURWQiBVRFRUIDcwNDdBLVVTQiAyLjAgRFZCLVQgRHJpdmVyCisJMzIzNyAgRFRWLURWQiBVRFRUIDcwNEogLSBkdWFsIERWQi1UIERyaXZlcgorCTMyMzkgIERUVi1EVkIgVURUVDcwNEQgLSBEVkJUL05UU0MvUEFMIERyaXZlcihXaXRob3V0IEhJRCkKKwkzMjQwICBEVFYtRFZCIFVEWFRUTTYwMTAgLSBBL0QgRHJpdmVyKFdpdGhvdXQgSElEKQorCTMyNDEgIERUVi1EVkIgVURYVFRNNjAxMCAtIEEvRCBEcml2ZXIoV2l0aG91dCBISUQpCisJMzI0MiAgRFRWLURWQiBVREFUNzI0MExQIC0gQVRTQy9OVFNDL1BBTCBEcml2ZXIoV2l0aG91dCBISUQpCisJMzI0MyAgRFRWLURWQiBVRFhUVE02MDEwIC0gQS9EIERyaXZlcihXaXRob3V0IEhJRCkKKwkzMjQ0ICBEVFYtRFZCIFVEVFQgNzA0N1otVVNCIDIuMCBEVkItVCBEcml2ZXIKKwkzMjQ3ICA4MDIuMTEgbi9nL2IgV2lyZWxlc3MgTEFOIEFkYXB0ZXIKKwk3MDIwICBEVFYtRFZCIFVEU1Q3MDIwQkRBIERWQi1TIEJveChEVkJTIGZvciBNQ0UyMDA1KQorCTcwMjIgIERUVi1EVkIgVURTVDcwMjJCREEgRFZCLVMgQm94KFdpdGhvdXQgSElEKQorMTNkYyAgQUxFUkVPTiwgSU5DLgorMTNkZCAgaS5UZWNoIER5bmFtaWMgTGltaXRlZAorMTNlMSAgS2FpYm8gV2lyZSAmIENhYmxlIChTaGVuemhlbikgQ28uLCBMdGQuCisxM2U1ICBSYW5lCisJMDAwMSAgU0wtMQorMTNlNiAgVGVjaG5vU2NvcGUgQ28uLCBMdGQuCisxM2ZkICBJbml0aW8gQ29ycG9yYXRpb24KKzEzZmUgIEtpbmdzdG9uIFRlY2hub2xvZ3kgQ29tcGFueSBJbmMuCisJMWEwMCAgNTEyTUIvMUdCIEZsYXNoIERyaXZlCisJMWEyMyAgNTEyTUIgRmxhc2ggRHJpdmUKKwkxZDAwICBEYXRhVHJhdmVsZXIgMi4wIDFHQi80R0IgRmxhc2ggRHJpdmUgLyBQYXRyaW90IFhwb3J0ZXIgNEdCIEZsYXNoIERyaXZlCisJMWYwMCAgRGF0YVRyYXZlbGVyIDIuMCA0R0IgRmxhc2ggRHJpdmUgLyBQYXRyaW90IFhwb3J0ZXIgMzJHQiAoUEVGMzJHVVNCKSBGbGFzaCBEcml2ZQorMTQwMCAgQXh4aW9uIEdyb3VwIENvcnAuCisxNDAyICBCb3dlIEJlbGwgJiBIb3dlbGwKKzE0MDMgIFNpdHJvbml4CisJMDAwMSAgRGlnaXRhbCBQaG90byBGcmFtZQorMTQwZSAgVGVsZWNoaXBzLCBJbmMuCisJYjAxMSAgVENDNzgwWC1iYXNlZCBwbGF5ZXIgKFVTQiBCb290IG1vZGUpCisJYjAyMSAgVENDNzdYLWJhc2VkIHBsYXllcnMgKFVTQiBCb290IG1vZGUpCisxNDEwICBOb3ZhdGVsIFdpcmVsZXNzCisJMTExMCAgTWVybGluIFM2MjAKKwkxMTIwICBNZXJsaW4gRVg3MjAKKwkxMTMwICBNZXJsaW4gUzcyMAorCTE0MDAgIE1lcmxpbiBVNzQwCisJMjExMCAgT3ZhdGlvbiBVNzIwL01DRDMwMDAKKwk0MTAwICBVNzI3CisxNDE1ICBOYW0gVGFpIEUmRSBQcm9kdWN0cyBMdGQuIG9yIE9tbmlWaXNpb24gVGVjaG5vbG9naWVzLCBJbmMuCisJMDAwMCAgU29ueSBTaW5nU3RhciBVU0JNSUMKKwkyMDAwICBTb255IFBsYXlzdGF0aW9uIEV5ZQorMTQxOSAgQUJJTElUWSBFTlRFUlBSSVNFIENPLiwgTFRELgorMTQyOSAgVmVnYSBUZWNobm9sb2dpZXMgSW5kdXN0cmlhbCAoQXVzdHJpYSkgQ28uCisxNDJhICBUaGFsZXMgRS1UcmFuc2FjdGlvbnMKKwkwMDQzICBtZWRDb21wYWN0CisxNDMwICBSZWRPY3RhbmUKKzE0MzEgIFBlcnRlY2ggUmVzb3VyY2VzLCBJbmMuCisxNDM1ICBXaXN0cm9uIE5lV2ViCisJMDcxMSAgVVIwNTVHIDgwMi4xMWJnCisJMDgyNiAgQVI1NTIzCisJMDgyNyAgQVI1NTIzIChubyBmaXJtd2FyZSkKKwkwODI4ICBBUjU1MjMKKwkwODI5ICBBUjU1MjMgKG5vIGZpcm13YXJlKQorMTQzNiAgRGVuYWxpIFNvZnR3YXJlLCBJbmMuCisxNDNjICBBbHRlayBDb3Jwb3JhdGlvbgorMTQ1ZiAgVHJ1c3QKKwkwMTA2ICBUcnVzdCBLNTYgVjkyIFVTQiBNb2RlbQorCTAxM2QgIFBDIENhbWVyYSAoU045QzIwMSArIE9WNzY2MCkKKwkwMTNmICBNZWdhcGl4ZWwgQXV0byBGb2N1cyBXZWJjYW0KKwkwMTQyICBXQi02MjUwWCBXZWJjYW0KKwkwMTVhICBXQi04MzAwWCAyTVAgV2ViY2FtCisxNDUzICBSYWRpbyBTaGFjaworCTQwMjYgIDI2LTE4MyBTZXJpYWwgQ2FibGUKKzE0NTYgIEV4dGVuZGluZyBXaXJlICYgQ2FibGUgQ28uLCBMdGQuCisxNDU3ICBGaXJzdCBJbnRlcm5hdGlvbmFsIENvbXB1dGVyLCBJbmMuCisJNTExNyAgT3Blbk1va28gTmVvMTk3MyBrZXJuZWwgdXNibmV0IChnX2V0aGVyLCBDREMgRXRoZXJuZXQpIG1vZGUKKwk1MTE4ICBPcGVuTW9rbyBOZW8xOTczIERlYnVnIGJvYXJkIChWMispCisJNTExOSAgT3Blbk1va28gTmVvMTk3MyB1LWJvb3QgY2RjX2FjbSBzZXJpYWwgcG9ydAorCTUxMjAgIE9wZW5Nb2tvIE5lbzE5NzMgdS1ib290IHVzYnR0eSBnZW5lcmljIHNlcmlhbAorCTUxMjEgIE9wZW5Nb2tvIE5lbzE5NzMga2VybmVsIG1hc3Mgc3RvcmFnZSAoZ19zdG9yYWdlKSBtb2RlCisJNTEyMiAgT3Blbk1va28gTmVvMTk3MyAvIE5lbyBGcmVlcnVubmVyIGtlcm5lbCBjZGNfZXRoZXIgVVNCIG5ldHdvcmsKKwk1MTIzICBPcGVuTW9rbyBOZW8xOTczIGludGVybmFsIFVTQiBDU1I0IG1vZHVsZQorCTUxMjQgIE9wZW5Nb2tvIE5lbzE5NzMgQmx1ZXRvb3RoIERldmljZSBJRCBzZXJ2aWNlCisxNDYxICBTdGFjY2F0byBDb21tdW5pY2F0aW9ucworMTQ2MiAgTWljcm8gU3RhciBJbnRlcm5hdGlvbmFsCisJNTUxMiAgTWVnYVN0aWNrLTEgRmxhc2ggU3RpY2sKKzE0NzIgIEh1YXdlaS0zQ29tCisJMDAwOSAgQW9seW5rIFdVQjMyMGcKKzE0N2EgIEZvcm1vc2EgSW5kdXN0cmlhbCBDb21wdXRpbmcsIEluYy4KKwllMDE1ICBlSG9tZSBJbmZyYXJlZCBSZWNlaXZlcgorCWUwMTYgIGVIb21lIEluZnJhcmVkIFJlY2VpdmVyCisxNDdlICBVcGVrCisJMjAxNiAgQmlvbWV0cmljIFRvdWNoY2hpcC9Ub3VjaHN0cmlwIEZpbmdlcnByaW50IFNlbnNvcgorMTQ3ZiAgSGFtYSBHbWJIICYgQ28uLCBLRworMTQ4NCAgRWxzYSBBRyBbaGV4XQorCTE3NDYgIEVjb21vIDE5SDk5IE1vbml0b3IKKwk3NjE2ICBFbHNhIEh1YgorMTQ4NSAgU2lsaWNvbQorCTAwMDEgIFUyRQorCTAwMDIgIFBzaW9uIEdvbGQgUG9ydCBFdGhlcm5ldAorMTQ4NyAgRFNQIEdyb3VwLCBMdGQuCisxNDhlICBFVkFUUk9OSVggU0EKKzE0OGYgIFJhbGluayBUZWNobm9sb2d5LCBDb3JwLgorCTE3MDYgIFJUMjUwMFVTQiBXaXJlbGVzcyBBZGFwdGVyCisJMjU3MCAgODAyLjExZyBXaUZpCisJMjU3MyAgUlQyNTAxVVNCIFdpcmVsZXNzIEFkYXB0ZXIKKwkyNjcxICBSVDI2MDFVU0IgV2lyZWxlc3MgQWRhcHRlcgorCTkwMjAgIFJUMjUwMFVTQiBXaXJlbGVzcyBBZGFwdGVyCisJOTAyMSAgUlQyNTAxVVNCIFdpcmVsZXNzIEFkYXB0ZXIKKzE0OTcgIFBhbnN0cm9uZyBDb21wYW55IEx0ZC4KKzE0OWEgIEltYWdpbmF0aW9uIFRlY2hub2xvZ2llcworCTIxMDcgIERCWDEgRFNQIGNvcmUKKzE0YWEgIEFWZXJNZWRpYSAoYWdhaW4pIG9yIEMmRQorCTAwMDEgIEF2ZXJtZWRpYSBBdmVyVFYgRFZCVCBVU0IxLjEgKGNvbGQpCisJMDAwMiAgQXZlcm1lZGlhIEF2ZXJUViBEVkJUIFVTQjEuMSAod2FybSkKKwkwMjAxICBBVmVybWVkaWEvWWFrdW1vL0hhbWEvVHlwaG9vbiBEVkItVCBVU0IyLjAgKGNvbGQpCisJMDIyMSAgQVZlcm1lZGlhIERWQlQgVHVuZXIgRG9uZ2xlCisJMDMwMSAgQVZlcm1lZGlhL1lha3Vtby9IYW1hL1R5cGhvb24gRFZCLVQgVVNCMi4wICh3YXJtKQorMTRhZCAgQ1RLIENvcnBvcmF0aW9uCisxNGFlICBQcmludHJvbml4IEluYy4KKzE0YWYgIEFUUCBFbGVjdHJvbmljcyBJbmMuCisxNGIwICBTdGFyVGVjaC5jb20gTHRkLgorMTRiMiAgUmFsaW5rIFRlY2hub2xvZ3ksIENvcnAuCisJM2E5MyAgVVNCIFdMQU4gRGV2aWNlCisJM2MwMiAgcnQyNTAwIDgwMi4xMWcgV0xBTgorCTNjMjIgIHJ0NzMgODAyLjExZyBXTEFOCisJM2MyNyAgcnQyODcwIDgwMi4xMW4gV0xBTgorMTRjMCAgUm9ja3dlbGwgQXV0b21hdGlvbiwgSW5jLgorMTRjMiAgR2VtbGlnaHQgQ29tcHV0ZXIsIEx0ZAorCTAyNTAgIFN0b3JhZ2UgQWRhcHRlciBWMgorCTAzNTAgIFN0b3JhZ2UgQWRhcHRlciBWMgorMTRjZCAgU3VwZXIgVG9wCisJNjYwMCAgVVNCIDIuMCBJREUgREVWSUNFCisJNjcwMCAgQ2FyZCBSZWFkZXIKKzE0ZDggIEpBTUVSIElORFVTVFJJRVMgQ08uLCBMVEQuCisxNGRkICBSYXJpdGFuIENvbXB1dGVyLCBJbmMuCisxNGU1ICBTQUlOIEluZm9ybWF0aW9uICYgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCisxNGVhICBQbGFuZXggQ29tbXVuaWNhdGlvbnMKKwlhYjEwICBHVy1VUzU0R1oKKwlhYjExICBHVS0xMDAwVAorCWFiMTMgIEdXLVVTNTRNaW5pIDgwMi4xMWJnCisxNGVkICBTaHVyZSBJbmMuCisxNTAwICBFbGxpc3lzCisxNTAxICBQaW5lLVR1bSBFbnRlcnByaXNlIENvLiwgTHRkLgorMTUxMyAgSHlwZXJjb20KKzE1MTYgIENvbXBVU0EKKwkxNjAzICAxR0IgRmxhc2ggRHJpdmUKKwk4NjI4ICAxMjhNIFBlbiBEcml2ZQorMTUxOCAgQ2hlc2hpcmUgRW5naW5lZXJpbmcgQ29ycC4KKwkwMDAxICBIRFJleWUgSGlnaCBEeW5hbWljIFJhbmdlIENhbWVyYQorCTAwMDIgIEhEUmV5ZSAoYmVmb3JlIGZpcm13YXJlIGxvYWRzKQorMTUyMCAgQml0d2lyZSBDb3JwLgorMTUyNCAgRU5FIFRlY2hub2xvZ3kgSW5jCisJNjY4MCAgVVRTIDY2ODAKKzE1MjcgIFNpbGljb24gUG9ydGFscworCTAyMDAgIFlBUCBQaG9uZSAobm8gZmlybXdhcmUpCisJMDIwMSAgWUFQIFBob25lCisxNTI5ICBVQklRVUFNIENvLiwgTHRkLgorCTMxMDAgIENETUEgMXhSVFQgVVNCIE1vZGVtIChVLTEwMC8xMDUvMjAwLzMwMC81MjApCisxNTJkICBKTWljcm9uIFRlY2hub2xvZ3kgQ29ycC4gLyBKTWljcm9uIFVTQSBUZWNobm9sb2d5IENvcnAuCisJMjMzNSAgQVRBL0FUQVBJIEJyaWRnZQorCTIzMzYgIEhhcmQgRGlzayBEcml2ZQorCTIzMzggIEpNMjAzMzcgSGktU3BlZWQgVVNCIHRvIFNBVEEgJiBQQVRBIENvbWJvIEJyaWRnZQorMTUyZSAgTEcgKEhMRFMpCisJZTAwMSAgR1NBLTUxMjBEIERWRC1SVworMTUzMiAgUmF6ZXIgVVNBLCBMdGQKKwkwMDAxICBSWjAxLTAyMDMwMCBPcHRpY2FsIE1vdXNlIFtEaWFtb25kYmFja10KKwkwMDAzICBLcmFpdCBNb3VzZQorCTAwMDcgIERlYXRoQWRkZXIgTW91c2UKKwkwMTAyICBUYXJhbnR1bGEgS2V5Ym9hcmQKKzE1NDYgIFUtQmxveCBBRworMTU0YSAgQ2VsZWN0cm9uaWMgR21iSAorCTgxODAgIENBUkQgU1RBUi9tZWRpYzIKKzE1NGIgIFBOWQorCTAwMTAgIFVTQiAyLjAgRmxhc2ggRHJpdmUKKzE1NGQgIENvbm5lY3RDb3VudHkgSG9sZGluZ3MgQmVyaGFkCisxNTRlICBEJk0gSG9sZGluZ3MsIEluYy4gKERlbm9uL01hcmFudHopCisJMzAwMCAgTWFyYW50eiBSQzkwMDEgUmVtb3RlIENvbnRyb2wKKzE1NTQgIFByb2xpbmsgTWljcm9zeXN0ZW1zIENvcnAuCisxNTU3ICBPUU8KKwkwMDAyICBtb2RlbCAwMSBXaUZpIGludGVyZmFjZQorCTAwMDMgIG1vZGVsIDAxIEJsdWV0b290aCBpbnRlcmZhY2UKKwk3NzIwICBtb2RlbCAwMSsgRXRoZXJuZXQKKwk4MTUwICBtb2RlbCAwMSBFdGhlcm5ldCBpbnRlcmZhY2UKKzE1NjggIFN1bmYgUHUgVGVjaG5vbG9neSBDby4sIEx0ZAorMTU2ZiAgUXVhbnR1bSBDb3Jwb3JhdGlvbgorMTU3MCAgQUxMVE9QIFRFQ0hOT0xPR1kgQ08uLCBMVEQuCisxNTdiICBLZXRyb24gU1JMCisxNTdlICBUUkVORG5ldAorCTMwMDYgIFRFVy00NDRVQiBFVQorCTMwMDcgIFRFVy00NDRVQiBFVSAobm8gZmlybXdhcmUpCisJMzAwYSAgVEVXLTQyOVVCIDgwMi4xMWJnCisJMzAwYiAgVEVXLTQyOVVCIDgwMi4xMWJnCisJMzAwZCAgVEVXLTQyOVVCIEMxIDgwMi4xMWJnCisJMzIwNCAgQUxMMDI5OCB2MiA4MDIuMTFiZworCTMyMDUgIEFSNTUyMworCTMyMDYgIEFSNTUyMyAobm8gZmlybXdhcmUpCisxNTgyICBGaWJlcmxpbmUKKwk2MDAzICBXTC00MzBVIDgwMi4xMWJnCisxNTg3ICBTTUEgVGVjaG5vbG9naWUgQUcKKzE1OGQgIE9ha2xleSBJbmMuCisxNTk4ICBLdW5zaGFuIEd1b2ppIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorMTVhMiAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKzE1YTggIFRlYW1zIFBvd2VyIExpbWl0ZWQKKzE1YWEgIEdlYXJ3YXkgRWxlY3Ryb25pY3MgKERvbmcgR3VhbikgQ28uLCBMdGQuCisxNWJhICBPbGltZXggTHRkLgorCTAwMDMgIE9wZW5PQ0QgSlRBRworCTAwMDQgIE9wZW5PQ0QgSlRBRyBUSU5ZCisxNWMyICBTb3VuZEdyYXBoIEluYy4KKwlmZmRjICBpTU9OIFBBRCBSZW1vdGUgQ29udHJvbGxlcgorMTVjNiAgTGFib3JhdG9pcmVzIE1YTQorCTEwMDAgIERpZ2lzdGltU1AgKGNvbGQpCisJMTAwMSAgRGlnaXN0aW1TUCAod2FybSkKKwkxMDAyICBEaWdpbWFwU1AgVVNCIChjb2xkKQorCTEwMDMgIERpZ2ltYXBTUCBVU0IgKHdhcm0pCisxNWM5ICBELUJveCBUZWNobm9sb2dpZXMKKzE1Y2EgIFRleHRlY2ggSW50ZXJuYXRpb25hbCBMdGQuCisJMDBjMyAgTWluaSBPcHRpY2FsIE1vdXNlCisxNWQ1ICBDb3Vsb21iIEVsZWN0cm9uaWNzIEx0ZC4KKzE1ZDkgIFVua25vd24KKwkwYTM3ICBNb3VzZQorMTVkYyAgSHluaXggU2VtaWNvbmR1Y3RvciBJbmMuCisxNWUwICBTZW9uZyBKaSBJbmR1c3RyaWFsIENvLiwgTHRkLgorMTVlMSAgUlNBCisJMjAwNyAgUlNBIFNlY3VySUQgKFIpIEF1dGhlbnRpY2F0b3IKKzE1ZTggIFNvaG9XYXJlCisJOTEwMCAgTlVCMTAwIEV0aGVybmV0IFtwZWdhc3VzXQorCTkxMTAgIDEwLzEwMCBVU0IgRXRoZXJuZXQKKzE1ZTkgIFBhY2lmaWMgRGlnaXRhbCBDb3JwLgorCTA0Y2UgIE1lbW9yeUZyYW1lIE1GLTU3MAorCTE5NjggIE1lbW9yeUZyYW1lIE1GLTU3MAorCTE5NjkgIERpZ2l0YWwgRnJhbWUKKzE1ZWMgIEJlbGNhcnJhIFRlY2hub2xvZ2llcyBDb3JwLgorMTVmNCAgSGFuZlRlaworCTAwMDEgIEhhbmZUZWsgVU1ULTAxMCBVU0IyLjAgRFZCLVQgKGNvbGQpCisJMDAyNSAgSGFuZlRlayBVTVQtMDEwIFVTQjIuMCBEVkItVCAod2FybSkKKzE2MDQgIFRhc2NhbQorCTgwMDAgIFVTLTQyOCBBdWRpby9NaWRpIENvbnRyb2xsZXIgKHdpdGhvdXQgZncpCisJODAwMSAgVVMtNDI4IEF1ZGlvL01pZGkgQ29udHJvbGxlcgorCTgwMDQgIFVTLTIyNCBBdWRpby9NaWRpIENvbnRyb2xsZXIgKHdpdGhvdXQgZncpCisJODAwNSAgVVMtMjI0IEF1ZGlvL01pZGkgQ29udHJvbGxlcgorCTgwMDYgIFVTLTEyMiBBdWRpby9NaWRpIEludGVyZmFjZSAod2l0aG91dCBmdykKKwk4MDA3ICBVUy0xMjIgQXVkaW8vTWlkaSBJbnRlcmZhY2UKKzE2MDYgIFVtYXggW2hleF0KKwkwMDAyICBBc3RyYSAxMjM2VSBTY2FubmVyCisJMDAxMCAgQXN0cmEgMTIyMFUKKwkwMDMwICBBc3RyYSAyMDAwVQorCTAwNTAgIFNjYW5uZXIKKwkwMDYwICBBc3RyYSAzNDAwVQorCTAxMzAgIEFzdHJhIDIxMDBVCisJMDE2MCAgQXN0cmEgNTQwMFUKKwkwMjMwICBBc3RyYSAyMjAwLzIyMDBTVQorCTAzNTAgIEFzdHJhIDQ4MDAvNDg1MCBTY2FubmVyCisJMTAzMCAgQXN0cmEgNDAwMFUKKwkxMjIwICBHZW5lc3lzIExvZ2ljIFNjYW5uZXIgQ29udHJvbGxlciBOVDUuMAorCTIwMTAgIEFzdHJhQ2FtIERpZ2l0YWwgQ2FtZXJhCisJMjAyMCAgQXN0cmFDYW0gMTAwMAorCTIwMzAgIEFzdHJhQ2FtIDE4MDAgRGlnaXRhbCBDYW1lcmEKKzE2MDggIEluc2lkZSBPdXQgTmV0d29ya3MgW2hleF0KKwkwMDAxICBFZGdlUG9ydC80IFNlcmlhbCBQb3J0CisJMDAwMiAgRWRnZXBvcnQvOAorCTAwMDMgIFJhcGlkcG9ydC80CisJMDAwNCAgRWRnZXBvcnQvNAorCTAwMDUgIEVkZ2Vwb3J0LzIKKwkwMDA2ICBFZGdlcG9ydC80aQorCTAwMDcgIEVkZ2Vwb3J0LzJpCisJMDAwOCAgRWRnZXBvcnQvOAorCTAwMGMgIEVkZ2Vwb3J0LzQyMQorCTAwMGQgIEVkZ2Vwb3J0LzIxCisJMDAwZSAgRWRnZXBvcnQvNAorCTAwMGYgIEVkZ2Vwb3J0LzgKKwkwMDEwICBFZGdlcG9ydC8yCisJMDAxMSAgRWRnZXBvcnQvNAorCTAwMTIgIEVkZ2Vwb3J0LzQxNgorCTAwMTQgIEVkZ2Vwb3J0LzhpCisJMDAxOCAgRWRnZXBvcnQvNDEyCisJMDAxOSAgRWRnZXBvcnQvNDEyCisJMDAxYSAgRWRnZXBvcnQvMisyaQorCTAxMDEgIEVkZ2Vwb3J0LzQKKwkwMTA1ICBFZGdlcG9ydC8yCisJMDEwNiAgRWRnZXBvcnQvNGkKKwkwMTA3ICBFZGdlcG9ydC8yaQorCTAxMGMgIEVkZ2Vwb3J0LzQyMQorCTAxMGQgIEVkZ2Vwb3J0LzIxCisJMDExMCAgRWRnZXBvcnQvMgorCTAxMTEgIEVkZ2Vwb3J0LzQKKwkwMTEyICBFZGdlcG9ydC80MTYKKwkwMTE0ICBFZGdlcG9ydC84aQorCTAyMDEgIEVkZ2Vwb3J0LzQKKwkwMjAzICBSYXBpZHBvcnQvNAorCTAyMDQgIEVkZ2Vwb3J0LzQKKwkwMjA1ICBFZGdlcG9ydC8yCisJMDIwNiAgRWRnZXBvcnQvNGkKKwkwMjA3ICBFZGdlcG9ydC8yaQorCTAyMGMgIEVkZ2Vwb3J0LzQyMQorCTAyMGQgIEVkZ2Vwb3J0LzIxCisJMDIwZSAgRWRnZXBvcnQvNAorCTAyMGYgIEVkZ2Vwb3J0LzgKKwkwMjEwICBFZGdlcG9ydC8yCisJMDIxMSAgRWRnZXBvcnQvNAorCTAyMTIgIEVkZ2Vwb3J0LzQxNgorCTAyMTQgIEVkZ2Vwb3J0LzhpCisJMDIxNSAgRWRnZXBvcnQvMQorCTAyMTYgIEVQT1MvNDQKKwkwMjE3ICBFZGdlcG9ydC80MgorCTAyMWEgIEVkZ2Vwb3J0LzIrMmkKKwkwMjFiICBFZGdlcG9ydC8yYworCTAyMWMgIEVkZ2Vwb3J0LzIyMWMKKwkwMjFkICBFZGdlcG9ydC8yMmMKKwkwMjFlICBFZGdlcG9ydC8yMWMKKwkwMjFmICBFZGdlcG9ydC82MgorCTAyNDAgIEVkZ2Vwb3J0LzEKKwkwMjQxICBFZGdlcG9ydC8xaQorCTAyNDIgIEVkZ2Vwb3J0LzRzCisJMDI0MyAgRWRnZXBvcnQvOHMKKwkwMjQ0ICBFZGdlcG9ydC84CisJMDI0NSAgRWRnZXBvcnQvMjJjCisJMDMwMSAgV2F0Y2hwb3J0L1AKKwkwMzAyICBXYXRjaHBvcnQvTQorCTAzMDMgIFdhdGNocG9ydC9XCisJMDMwNCAgV2F0Y2hwb3J0L1QKKwkwMzA1ICBXYXRjaHBvcnQvSAorCTAzMDYgIFdhdGNocG9ydC9FCisJMDMwNyAgV2F0Y2hwb3J0L0wKKwkwMzA4ICBXYXRjaHBvcnQvUgorCTAzMDkgIFdhdGNocG9ydC9BCisJMDMwYSAgV2F0Y2hwb3J0L0QKKwkwMzBiICBXYXRjaHBvcnQvRAorCTAzMGMgIFBvd2VyIE1hbmFnZW1lbnQgUG9ydAorCTAzMGUgIFBvd2VyIE1hbmFnZW1lbnQgUG9ydAorCTAzMGYgIFdhdGNocG9ydC9HCisJMDMxMCAgV2F0Y2hwb3J0L1RjCisJMDMxMSAgV2F0Y2hwb3J0L0hjCisJMTQwMyAgTXVsdGlUZWNoIFN5c3RlbXMgTVQ0WDU2IE1vZGVtCisJMWExNyAgQWdpbGVudCBUZWNobm9sb2dpZXMgKEU2NDczKQorMTYxNCAgQW1vaSBFbGVjdHJvbmljcworCTA0MDQgIFdNQTkxMDkgVU1UUyBQaG9uZQorCTA2MDAgIFZvZGFmb25lIFZEQSBHUFMgLyBUb3NjaGliYSBQcm90ZWdlIEc3MTAKKwkwODA0ICBXUC1TMSBQaG9uZQorMTYxOSAgTCAmIEsgUHJlY2lzaW9uIFRlY2hub2xvZ3kgQ28uLCBMdGQuCisxNjIxICBXaW9uaWNzIFJlc2VhcmNoCisxNjI4ICBTdG9uZXN0cmVldCBPbmUsIEluYy4KKzE2MmEgIEFpcmdvIE5ldHdvcmtzIEluYy4KKzE2MmYgIFdpUXVlc3QgQ29tbXVuaWNhdGlvbnMsIEluYy4KKzE2MzEgIEdvb2QgV2F5IFRlY2hub2xvZ3kKKwk2MjAwICBHV1VTQjJFCisJYzAxOSAgUlQyNTczCisxNjQ1ICBFbnRyZWdhIFtoZXhdCisJMDAwMSAgMVMgU2VyaWFsIFBvcnQKKwkwMDAyICAyUyBTZXJpYWwgUG9ydAorCTAwMDMgIDFTMjUgU2VyaWFsIFBvcnQKKwkwMDA0ICA0UyBTZXJpYWwgUG9ydAorCTAwMDUgIEU0NSBFdGhlcm5ldCBba2xzaV0KKwkwMDA2ICBQYXJhbGxlbCBQb3J0CisJMDAwNyAgVTEtU0MyNSBTQ1NJCisJMDAwOCAgRXRoZXJuZXQKKwkwMDE2ICBCaS1kaXJlY3Rpb25hbCB0byBQYXJhbGxlbCBQcmludGVyIENvbnZlcnRlcgorCTAwODAgIDEgcG9ydCB0byBTZXJpYWwgQ29udmVydGVyCisJMDA4MSAgMSBwb3J0IHRvIFNlcmlhbCBDb252ZXJ0ZXIKKwkwMDkzICAxUzkgU2VyaWFsIFBvcnQKKwk4MDAwICBFWi1VU0IKKwk4MDAxICAxIHBvcnQgdG8gU2VyaWFsCisJODAwMiAgMnggU2VyaWFsIFBvcnQKKwk4MDAzICAxIHBvcnQgdG8gU2VyaWFsCisJODAwNCAgMlU0UyBzZXJpYWwvdXNiIGh1YgorCTgwMDUgIEV0aGVybmV0CisJODA4MCAgMSBwb3J0IHRvIFNlcmlhbAorCTgwODEgIDEgcG9ydCB0byBTZXJpYWwKKwk4MDkzICBQb3J0R2VhciBTZXJpYWwgUG9ydAorMTY0OSAgU29mVGVjIE1pY3Jvc3lzdGVtcworCTAxMDIgIHVEQVJUIEluLUNpcmN1aXQgRGVidWdnZXIKKwkwMjAwICBTcFlkZXIgVVNCU1BZREVSMDgKKzE2NGEgIENoaXBYCisxNjU3ICBTdHJ1Y2sgSW5ub3ZhdGl2ZSBTeXN0ZW1lIEdtYkgKKwkzMTUwICBTSVMzMTUwIFVTQjIuMCB0byBWTUUgaW50ZXJmYWNlCisxNjYwICBDcmVhdGl4IFBvbHltZWRpYSBHbWJICisxNjY4ICBBY3Rpb250ZWMgRWxlY3Ryb25pY3MsIEluYy4gW2hleF0KKwkwMDA5ICBHYXRld2F5CisJMDMzMyAgTW9kZW0KKwkwMzU4ICBJbnRlcm5ldFBob25lV2l6YXJkCisJMDQwNSAgR2F0ZXdheQorCTA0MDggIFByaXNtMi41IDgwMi4xMWIgQWRhcHRlcgorCTA0MTMgIEdhdGV3YXkKKwkwNDIxICBQcmlzbTIuNSA4MDIuMTFiIEFkYXB0ZXIKKwkwNDQxICBJQk0gSW50ZWdyYXRlZCBCbHVldG9vdGggSUkKKwkwNTAwICBCVE0yMDBCIEJsdWVUb290aCBBZGFwdGVyCisJMTA1MCAgODAyLjExZyBXaXJlbGVzcyBNaW5pIGFkYXB0ZXIKKwkxNDQxICBJQk0gSW50ZWdyYXRlZCBCbHVldG9vdGggSUkKKwkyNDQxICBCTURDLTIgSUJNIEJsdWV0b290aCBJSUkgdy41NmsKKwkzNDQxICBJQk0gSW50ZWdyYXRlZCBCbHVldG9vdGggSUlJCisJNjAxMCAgR2F0ZXdheQorCTYwOTcgIDgwMi4xMWIgV2lyZWxlc3MgQWRhcHRlcgorCTYxMDYgIFJPUEVYIEZyZWVMYW4gODAyLjExYgorCTc2MDUgIFVBVDEgV2lyZWxlc3MgRXRoZXJuZXQgQWRhcHRlcgorMTY2OSAgUGlLUk9OIEx0ZC4gW2hleF0KKwkxMDAxICB1TGFuMlVTQiBDb252ZXJ0ZXIgLSBQUzEgcHJvdG9jb2wKKzE2NzcgIENoaW5hIEh1YWRhIEludGVncmF0ZWQgQ2lyY3VpdCBEZXNpZ24gKEdyb3VwKSBDby4sIEx0ZC4gKENJREMgR3JvdXApCisxNjc5ICBUb3RhbCBQaGFzZQorCTIwMDEgIEJlYWdsZSBVU0IgMTIgUHJvdG9jb2wgQW5hbHl6ZXIKKzE2ODIgIE1heHdpc2UgUHJvZHVjdGlvbiBFbnRlcnByaXNlIEx0ZC4KKzE2ODQgIEdvZHNwZWVkIENvbXB1dGVyIENvcnAuCisxNjg1ICBEZWxvY2sKKwkwMjAwICBJbmZyYXJlZCBhZGFwdGVyCisxNjg2ICBaT09NIENvcnBvcmF0aW9uCisJMDA0NSAgSDQgRGlnaXRhbCBSZWNvcmRlcgorMTY4NyAgS2luZ21heCBEaWdpdGFsIEluYy4KKzE2OGMgIEF0aGVyb3MgQ29tbXVuaWNhdGlvbnMKKwkwMDAxICBBUjU1MjMKKwkwMDAyICBBUjU1MjMgKG5vIGZpcm13YXJlKQorMTY5MCAgQXNrZXkgQ29tcHV0ZXIgQ29ycC4gW2hleF0KKwkwMTAxICBDcmVhdGl2ZSBNb2RlbSBCbGFzdGVyIERFNTY3MAorCTAxMDIgIFYxNDU2IFZRRS1SMiBNb2RlbSBbY29uZXhhbnRdCisJMDEwMyAgMTQ1NiBWUUUtUjMgTW9kZW0gW2NvbmV4YW50XQorCTAxMDQgIEhDRiBWOTAgRGF0YSBGYXggUlRBRCBNb2RlbQorCTAxMDcgIEhDRiBWLjkwIERhdGEsRmF4LFJUQUQgTW9kZW0KKwkwMTA5ICBNYWdpY1hwcmVzcyBWLjkwIFBvY2tldCBNb2RlbSBbY29uZXhhbnRdCisJMDIwMyAgVm95YWdlciBBRFNMIE1vZGVtIExvYWRlcgorCTAyMDQgIFZveWFnZXIgQURTTCBNb2RlbQorCTAyMDUgIERTTCBNb2RlbQorCTAyMDYgIEdsb2JlU3BhbiBBRFNMIFdBTiBNb2RlbQorCTAyMDggIERTTCBNb2RlbQorCTAyMDkgIFZveWFnZXIgMTAwIEFEU0wgTW9kZW0KKwkwMjExICBHbG9iZXNwYW4gVmlyYXRhIEFEU0wgTEFOIE1vZGVtCisJMDIxMiAgRFNMIE1vZGVtCisJMDIxMyAgSE0xMjFkIERTTCBNb2RlbQorCTAyMTQgIEhNMTIxZCBEU0wgTW9kZW0KKwkwMjE1ICBWb3lhZ2VyIDEwNSBBRFNMIE1vZGVtCisJMDcwMSAgV0xBTgorCTA3MTAgIFNNQ1dVU0JULUcKKwkwNzExICBTTUNXVVNCVC1HIChubyBmaXJtd2FyZSkKKwkwNzEyICBBUjU1MjMKKwkwNzEzICBBUjU1MjMgKG5vIGZpcm13YXJlKQorCTA3MTUgIFZveWFnZXIgMTA1NSBMYXB0b3AgQWRhcHRlcgorCTA3MjIgIFJUMjU3MworCTA3MjYgIFdpLUZpIFdpcmVsZXNzIExBTiBBZGFwdGVyCisJMDkwMSAgVm95YWdlciAyMDUgQURTTCBSb3V0ZXIKKzE2OTYgIEhpdGFjaGkgVmlkZW8gYW5kIEluZm9ybWF0aW9uIFN5c3RlbSwgSW5jLgorMTY5NyAgVlRlYyBUZXN0LCBJbmMuCisxNmE1ICBTaGVuemhlbiBaaGVuZ2VyeWEgQ2FibGUgQ28uLCBMdGQuCisxNmE2ICBVbmlncmFmCisJMzAwMCAgVlRHLTN4eHggVmlkZW8gVGVzdCBHZW5lcmF0b3IgZmFtaWx5CisJNDAwMCAgVlRHLTR4eHggVmlkZW8gVGVzdCBHZW5lcmF0b3IgZmFtaWx5CisJNTAwMCAgVlRHLTV4eHggVmlkZW8gVGVzdCBHZW5lcmF0b3IgZmFtaWx5CisJNTAwMSAgVlRHLTV4eHggU3BlY2lhbCAodXBkYXRlKSBtb2RlIG9mIFZURy01eHh4IGZhbWlseQorMTZhYiAgR2xvYmFsIFN1biBUZWNobm9sb2d5CisJNzgwMSAgQVI1NTIzCisJNzgwMiAgQVI1NTIzIChubyBmaXJtd2FyZSkKKwk3ODExICBBUjU1MjMKKwk3ODEyICBBUjU1MjMgKG5vIGZpcm13YXJlKQorMTZhYyAgRG9uZ2d1YW4gQ2hpbmdMdW5nIFdpcmUgJiBDYWJsZSBDby4sIEx0ZC4KKzE2YzAgIFZPVEkKKwkwM2U4ICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDAKKwkwM2U5ICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDEKKwkwM2VhICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDIKKwkwM2ViICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDMKKwkwM2VjICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDQKKwkwM2VkICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDUKKwkwM2VlICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDYKKwkwM2VmICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDcKKwkwM2YwICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDgKKwkwM2YxICBmcmVlIGZvciBpbnRlcm5hbCBsYWIgdXNlIDEwMDkKKwkwNWRjICBVU0Jhc3AgQVZSIFByb2dyYW1tZXIKKwkwNWRkICBCbGFja2NhdFVTQjIKKwkwNzZiICBPcGVuUENEIDEzLjU2TUh6IFJGSUQgUmVhZGVyCisJMDc2YyAgT3BlblBJQ0MgMTMuNTZNSHogUkZJRCBTaW11bGF0b3IgKG5hdGl2ZSkKKwkwOGFjICBPcGVuQmVhY29uIFVTQiBzdGljaworMTZjYyAgc2lsZXggdGVjaG5vbG9neSwgSW5jLgorMTZkMyAgRnJvbnRsaW5lIFRlc3QgRXF1aXBtZW50LCBJbmMuCisxNmQ1ICBBbnlEQVRBIENvcnBvcmF0aW9uCisJNjUwMSAgQ0RNQSAyMDAwIDF4UlRUL0VWLURPIE1vZGVtCisxNmQ4ICBDTU9URUNIIENvLiwgTHRkLgorCTUxNDEgIENNT1RFQ0ggQ0RNQSBUZWNobm9sb2dpZXMgbW9kZW0KKwk1NTMzICBDQ1UtNTUwIENETUEgRVYtRE8gbW9kZW0KKwk1NTQzICBDRE1BIDIwMDAgMXhSVFQvMXhFVkRPIG1vZGVtCisJNjI4MCAgQ01PVEVDSCBDRE1BIFRlY2hub2xvZ2llcyBtb2RlbQorCTY4MDMgIENOVS02ODAgQ0RNQSBFVi1ETyBtb2RlbQorMTZkYyAgV2llbmVyLCBQbGVpbiAmIEJhdXMKKwkwMDAxICBDQworCTAwMGIgIFZNCisxNmRmICBLaW5nIEJpbGxpb24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCisxNmY1ICBGdXR1cmVsb2dpYyBJbmMuCisxNzA2ICBCbHVlVmlldyBUZWNobm9sb2dpZXMsIEluYy4KKzE3MDcgIEFSVElNSQorMTcwYiAgU3dpc3NvbmljCisJMDAxMSAgTUlESS1VU0IgMXgxCisxNzBkICBBdm5lcmEKKzE3MmYgIFdhbHRvcCBJbnRlcm5hdGlvbmFsIENvcnAuCisxNzMzICBDZWxsaW5rIFRlY2hub2xvZ3kgQ28uLCBMdGQKKwkwMTAxICBSRiBXaXJlbGVzcyBPcHRpY2FsIE1vdXNlIE9QLTcwMQorMTczNiAgQ0FOT04gSU1BR0lORyBTWVNURU0gVEVDSE5PTE9HSUVTIElOQy4KKzE3MzcgIExpbmtzeXMKKwkwMDM5ICBVU0IxMDAwCisxNzQwICBTZW5hbworCTIwMDAgIE5VQi04MzAxIDgwMi4xMWJnCisxNzQzICBHZW5lcmFsIEF0b21pY3MKKzE3NGMgIEFTTWVkaWEgVGVjaG5vbG9neSBJbmMuCisxNzRmICBTeW50ZWsKKwk1MjEyICBVU0IgMi4wIFVWQyBQQyBDYW1lcmEKKwk1YTExICBQQyBDYW1lcmEKKwk1YTMxICBTb25peCBVU0IgMi4wIENhbWVyYQorCTVhMzUgIFNvbml4IDEuM01QaXhlbCBVU0IgMi4wIENhbWVyYQorCTZhMzEgIFdlYiBDYW0gLSBBc3VzIEE4SiwgRjNTLCBGNVIsIFZYMlMsIFYxUworCTZhMzMgIFdlYiBDYW0gLSBBc3VzIEYzU0EsIEY5SiwgRjlTCisJNmE1MSAgMi4wTVBpeGVsIFdlYiBDYW0gLSBBc3VzIFo5NkosIFo5NlMsIFM5NlMKKwk2YTU0ICBXZWIgQ2FtCisJNmQ1MSAgMi4wTXBpeGVsIFdlYiBDYW0gLSBFdXJvY29tIEQ5MDBDCisJOGExMiAgU3ludGVrIDAuM01QaXhlbCBVU0IgMi4wIFVWQyBQQyBDYW1lcmEKKwk4YTMzICBTeW50ZWsgVVNCIDIuMCBVVkMgUEMgQ2FtZXJhCisJYTMxMSAgMS4zTVBpeGVsIFdlYiBDYW0gLSBBc3VzIEEzQSwgQTZKLCBBNkssIEE2TSwgQTZSLCBBNlQsIEE2ViwgQTdULCBBN3N2LCBBN1UKKwlhMzEyICAxLjNNUGl4ZWwgV2ViIENhbQorCWE4MjEgIFdlYiBDYW0gLSBQYWNrYXJkIEJlbGwgQlU0NSwgUEIgRWFzeW5vdGUgTVg2Ni0yMDhXCisJYWExMSAgV2ViIENhbQorMTc1OSAgTHVjaWRQb3J0IFRlY2hub2xvZ3ksIEluYy4KKzE3NzIgIFN5c3RlbSBMZXZlbCBTb2x1dGlvbnMsIEluYy4KKzE3NzYgIEFyb3dhbmEKKwk1MDFjICAzMDBLIENNT1MgQ2FtZXJhCisxNzgxICBNdWx0aXBsZSBWZW5kb3JzCisJMDgzZSAgTWV0YUdlZWsgV2ktU3B5CisJMDkzOCAgSWd1YW5hd29ya3MgVVNCIElSIFRyYW5zY2VpdmVyCisxNzgyICBTcHJlYWR0cnVtIENvbW11bmljYXRpb25zIEluYy4KKzE3ODQgIFRvcFNlZWQgVGVjaG5vbG9neSBDb3JwLgorMTc4OCAgU2hlblpoZW4gTGl0a2Nvbm4gVGVjaG5vbG9neSBDby4sIEx0ZC4KKzE3OTYgIFByaW50cmV4LCBJbmMuCisxNzk3ICBKQUxDTyBDTy4sIExURC4KKzE3YTQgIENvbmNlcHQyCisJMDAwMSAgUGVyZm9ybWFuY2UgTW9uaXRvciAzCisJMDAwMiAgUGVyZm9ybWFuY2UgTW9uaXRvciA0CisxN2E1ICBBZHZhbmNlZCBDb25uZWN0aW9uIFRlY2hub2xvZ3kgSW5jLgorMTdhNyAgTUlDT01TT0ZUIENPLiwgTFRELgorMTdiMyAgR3JleSBJbm5vdmF0aW9uCisJMDAwNCAgTGludXgtVVNCIE1pZGkgR2FkZ2V0CisxN2MzICBTaW5naW0gSW50ZXJuYXRpb25hbCBDb3JwLgorMTdjYyAgTmF0aXZlIEluc3RydW1lbnRzCisJMDgxNSAgQXVkaW8gS29udHJvbCAxCisJMTk0MCAgUmlnS29udHJvbDMKKwkxOTY5ICBSaWdLb250cm9sMgorCTE5NzggIEF1ZGlvIDggREoKKwk0NzExICBLb3JlIENvbnRyb2xsZXIKKwk0NzEyICBLb3JlIENvbnRyb2xsZXIgMgorMTdjZiAgSGlwIEhpbmcgQ2FibGUgJiBQbHVnIE1meS4gTHRkLgorMTdkMCAgU2FuZm9yZCBMLlAuCisxN2QzICBLb3JlYSBUZWNodHJvbiBDby4sIEx0ZC4KKzE3ZTkgIE5ld25oYW0gUmVzZWFyY2gKKwkwMDUxICBVU0IgVkdBIEFkYXB0b3IKKzE3ZWIgIENvcm5pY2UsIEluYy4KKzE3ZWYgIExlbm92bworCTM4MTUgIENoaXBzQm5rIDJHQiBVU0IgU3RpY2sKKwk0ODAyICBMZW5vdm8gVmMwMzIzK01JMTMxMF9TT0MgQ2FtZXJhCisxN2Y1ICBLLksuIFJvY2t5CisxN2Y2ICBVbmljb21wLCBJbmMKKzE4MjIgIFR3aW5oYW4KKwkzMjAxICBWaXNpb25EVFYgVVNCLVRlci9IQU1BIFVTQiBEVkItVCBkZXZpY2UgY29sZAorCTMyMDIgIFZpc2lvbkRUViBVU0ItVGVyL0hBTUEgVVNCIERWQi1UIGRldmljZSB3YXJtCisxODMxICBHd28gSmlubiBJbmR1c3RyaWVzIENvLiwgTHRkLgorMTgzMiAgSHVpemhvdSBTaGVuZ2h1YSBJbmR1c3RyaWFsIENvLiwgTHRkLgorMTg1NCAgTWVtb3J5IERldmljZXMgTHRkLgorMTg1YiAgQ29tcHJvCisJZDAwMCAgQ29tcHJvIFZpZGVvbWF0ZSBEVkItVTIwMDAgLSBEVkItVCBVU0IgY29sZAorCWQwMDEgIENvbXBybyBWaWRlb21hdGUgRFZCLVUyMDAwIC0gRFZCLVQgVVNCIHdhcm0KKzE4NjEgIFRlY2ggVGVjaG5vbG9neSBJbmR1c3RyaWFsIENvbXBhbnkKKzE4NjIgIFRlcmlkaWFuIFNlbWljb25kdWN0b3IgQ29ycC4KKzE4NzEgIEF2ZW8gVGVjaG5vbG9neSBDb3JwLgorMTg5NCAgVG9wc2VlZAorCTU2MzIgIEF0ZWsgVG90ZSBSZW1vdGUKKwk1NjQxICBUU0FNLTAwNCBQcmVzZW50YXRpb24gUmVtb3RlCisxODk3ICBFdmVydG9wIFdpcmUgQ2FibGUgQ28uCisxOGI0ICBlM0MgVGVjaG5vbG9naWVzCisJMTAwMSAgRFVUVjAwNworCTE2ODkgIERVVFYwMDkKKzE4YjYgIE1pa2tvbiBUZWNobm9sb2d5IExpbWl0ZWQKKzE4YjcgIFpvdGVrIEVsZWN0cm9uaWMgQ28uLCBMdGQuCisxOGM1ICBBTUlUCisJMDAwMiAgQ0ctV0xVU0IyR08KKzE4Y2QgIEVjYW1tCisJY2FmZSAgUGljbyBpTWFnZQorMThkNSAgU3RhcmxpbmUgSW50ZXJuYXRpb25hbCBHcm91cCBMaW1pdGVkCisxOGQ5ICBLYWJhCisJMDFhMCAgQi1OZXQgOTEgMDcKKzE4ZGQgIFBsYW5vbiBTeXN0ZW0gU29sdXRpb25zIEluYy4KKwkxMDAwICBEb2N1UGVuIFJDODAwCisxOGUzICBGaXRpcG93ZXIgSW50ZWdyYXRlZCBUZWNobm9sb2d5IEluYworCTkxMDIgIE11bHRpIGNhciByZWFkZXIKKzE4ZTggIFFjb20KKwk2MTk2ICBSVDI1NzMKKwk2MjI5ICBSVDI1NzMKKzE4ZWEgIE1hdHJveCBHcmFwaGljcywgSW5jLgorCTAwMDIgIER1YWxIZWFkMkdvIFtBbmFsb2cgRWRpdGlvbl0KKwkwMDA0ICBUcmlwbGVIZWFkMkdvIFtEaWdpdGFsIEVkaXRpb25dCisxOGZkICBGaW5lQXJjaCBJbmMuCisxOTBkICBNb3Rvcm9sYSBHU0cKKzE5MTQgIEFsY28gRGlnaXRhbCBEZXZpY2VzIExpbWl0ZWQKKzE5MTUgIExpbmtzeXMKKwkyMjMzICBXVVNCMTEgdjIuOCA4MDIuMTFiIEFkYXB0ZXIKKwkyMjM0ICBXVVNCNTRHIDgwMi4xMWcgQWRhcHRlcgorCTIyMzYgIFdVU0IxMSB2My4wIDgwMi4xMWIgQWRhcHRlcgorMTkyZiAgQXZhZ28gVGVjaG5vbG9naWVzLCBQdGUuCisxOTMwICBTaGVuemhlbiBYaWFuaGUgVGVjaG5vbG9neSBDby4sIEx0ZC4KKzE5MzEgIE5pbmdibyBCcm9hZCBUZWxlY29tbXVuaWNhdGlvbiBDby4sIEx0ZC4KKzE5NDEgIERyZWFtIExpbmsKKwk4MDIxICBVU0IgTWlzc2lsZSBMYXVuY2hlcgorMTk0OSAgTGFiMTI2CisxOTUxICBIeXBlcnN0b25lIEFHCisxOTUzICBJcm9ua2V5IEluYy4KKzE5NTQgIFJhZGlpZW50IFRlY2hub2xvZ2llcworMTk1ZCAgSXRyb24gVGVjaG5vbG9neSBpT05FCisJNzAwMiAgTGlicmEtUTExIElSIHJlbW90ZQorCTcwMDYgIExpYnJhLVEyNiAvIDEuMCBSZW1vdGUKKwk3Nzc3ICBTY29ycGl1cyB3aXJlbGVzcyBrZXlib2FyZAorMTk2NyAgQ0FTSU8gSElUQUNISSBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgQ28uLCBMdGQuCisxOTZiICBXaXNwcm8gVGVjaG5vbG9neSBJbmMuCisxOTcwICBEYW5lLUVsZWMgQ29ycC4gVVNBCisxOTc1ICBEb25nZ3VhbiBHdW5lZXRhbCBXaXJlICYgQ2FibGUgQ28uLCBMdGQuCisxOTc2ICBDaGlwc2JyYW5kIE1pY3JvZWxlY3Ryb25pY3MgKEhLKSBDby4sIEx0ZC4KKzE5NzcgIFQtTG9naWMKKwkwMTExICBUTDIwMyBNUDMgUGxheWVyIGFuZCBWb2ljZSBSZWNvcmRlcgorMTk4OSAgTnVjb25uIFRlY2hub2xvZ3kgQ29ycC4KKzE5OGYgIEJlY2VlbSBDb21tdW5pY2F0aW9ucyBJbmMuCisxOTkwICBBY3JvbiBQcmVjaXNpb24gSW5kdXN0cmlhbCBDby4sIEx0ZC4KKzE5OTUgIFRyaWxsaXVtIFRlY2hub2xvZ3kgUHR5LiBMdGQuCisJMzIwMiAgUkVDLUFEUFQtVVNCIChyZWNvcmRlcikKKwkzMjAzICBSRUMtQS1BRFBULVVTQiAocmVjb3JkZXIpCisxOTllICBUaGUgSW1hZ2luZyBTb3VyY2UgRXVyb3BlIEdtYkgKKwk4MTAxICBERnggMjFCVTA0IENhbWVyYQorMTk5ZiAgQmVuaWNhIENvcnBvcmF0aW9uCisxOWE4ICBCaWZvcnN0IFRlY2hub2xvZ3kgSW5jLgorMTlhYiAgQm9kZWxpbgorCTEwMDAgIFByb1Njb3BlIEhSCisxOWFmICBTIExpZmUKKwk2NjExICBDZWxlc3RpYSBWb0lQIFBob25lCisxOWI1ICBCICYgVyBHcm91cAorMTliNiAgSW5mb3RlY2ggTG9naXN0aWMsIExMQworMTljYSAgTWluZHRyaWJlCisJMDAwMSAgU2FuZGlvIDNEIEhJRCBNb3VzZQorMTljZiAgUGFycm90IFNBCisxOWQyICBPTkRBIENvbW11bmljYXRpb24gUy5wLkEuCisJMDAwMiAgRVQ1MDJIUy9NVDUwNVVQIFpURSBNRjYzMgorMTllMSAgV2VpRHVhbiBFbGVjdHJvbmljIEFjY2Vzc29yeSAoUy5aLikgQ28uLCBMdGQuCisxOWU4ICBJbmR1c3RyaWFsIFRlY2hub2xvZ3kgUmVzZWFyY2ggSW5zdGl0dXRlCisxOWVmICBQYWsgSGVuZyBUZWNobm9sb2d5IChTaGVuemhlbikgQ28uLCBMdGQuCisxOWY3ICBST0RFIE1pY3JvcGhvbmVzCisJMDAwMSAgUG9kY2FzdGVyCisxOWZmICBEeW5leAorCTAxMDIgIDEuM01QIFdlYmNhbQorCTAyMDEgIFJvY2tldGZpc2ggV2lyZWxlc3MgMi40RyBMYXNlciBNb3VzZQorMWEwOCAgQmVsbHdvb2QgSW50ZXJuYXRpb25hbCwgSW5jLgorMWEwYSAgVVNCLUlGIG5vbi13b3Jrc2hvcAorCWJhZGQgIFVTQiBPVEcgQ29tcGxpYW5jZSB0ZXN0IGRldmljZQorMWExMiAgS0VTIENvLiwgTHRkLgorMWEyNSAgQW1waGVub2wgRWFzdCBBc2lhIEx0ZC4KKzFhMmEgIFNlYWdhdGUgQnJhbmRlZCBTb2x1dGlvbnMKKzFhMzYgIEJpd2luIFRlY2hub2xvZ3kgTHRkLgorMWE0MCAgVEVSTUlOVVMgVEVDSE5PTE9HWSBJTkMuCisxYTQxICBBY3Rpb24gRWxlY3Ryb25pY3MgQ28uLCBMdGQuCisxYTQ0ICBWQVNDTyBEYXRhIFNlY3VyaXR5IEludGVybmF0aW9uYWwKKwkwMDAxICBEaWdpcGFzcyA5MDUgU21hcnRDYXJkIFJlYWRlcgorMWE0YSAgU2lsaWNvbiBJbWFnZQorMWE0YiAgU2FmZUJvb3QgSW50ZXJuYXRpb25hbCBCLlYuCisxYTYxICBBYmJvdHQgRGlhYmV0ZXMgQ2FyZQorMWE2YSAgU3BhbnNpb24gSW5jLgorMWE2ZCAgU2FtWW91bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzFhNmUgIEdsb2JhbCBVbmljaGlwIENvcnAuCisxYTZmICBTYWdlbSBPcmdhIEdtYkgKKzFhNzkgIEJheWVyIEhlYWx0aCBDYXJlIExMQworMWE3YiAgTHVtYmVyZyBDb25uZWN0ICBHbWJIICYgQ28uIEtHCisxYTg2ICBVbmtub3duCisJNzUyMyBITC0zNDAgVVNCLVNlcmlhbCBhZGFwdGVyCisxYTg5ICBEeW5hbGl0aCBTeXN0ZW1zIENvLiwgTHRkLgorMWE4YiAgU0dTIFRhaXdhbiBMdGQuCisxYTk4ICBMZWljYSBDYW1lcmEgQUcKKzFhYTQgIERhdGEgRHJpdmUgVGhydSwgSW5jLgorMWFhNSAgVUJlYWNvbiBUZWNobm9sb2dpZXMsIEluYy4KKzFhYTYgIGVGb3J0dW5lIFRlY2hub2xvZ3kgQ29ycC4KKzFhY2IgIFNhbGNvbXAgUGxjCisxYWQxICBEZXNheSBXaXJlIENvLiwgTHRkLgorMWFlNCAgaWMtZGVzaWduIFJlaW5oYXJkIEdvdHRpbmdlciBHbWJICisxYWU3ICBYLVRFTlNJT05TCisJMDM4MSAgVlMtRFZCLVQgMzgwVSAoYWY5MDE1IGJhc2VkKQorMWFlZCAgSGlnaCBUb3AgUHJlY2lzaW9uIEVsZWN0cm9uaWMgQ28uLCBMdGQuCisxYWVmICBDb25udGVjaCBFbGVjdHJvbmljIChTdXpob3UpIENvcnBvcmF0aW9uCisxYjA0ICBNZWlsaGF1cyBFbGVjdHJvbmljIEdtQkgKKwkwNjMwICBNRS02MzAKKwkwOTQwICBNRS05NAorCTA5NTAgIE1FLTk1CisJMDk2MCAgTUUtOTYKKwkxMDAwICBNRS0xMDAwCisJMTAwYSAgTUUtMTAwMAorCTEwMGIgIE1FLTEwMDAKKwkxNDAwICBNRS0xNDAwCisJMTQwYSAgTUUtMTQwMEEKKwkxNDBiICBNRS0xNDAwQgorCTE0MGMgIE1FLTE0MDBDCisJMTQwZCAgTUUtMTQwMEQKKwkxNDBlICBNRS0xNDAwRQorCTE0ZWEgIE1FLTE0MDBFQQorCTE0ZWIgIE1FLTE0MDBFQgorCTE2MDQgIE1FLTE2MDAvNFUKKwkxNjA4ICBNRS0xNjAwLzhVCisJMTYwYyAgTUUtMTYwMC8xMlUKKwkxNjBmICBNRS0xNjAwLzE2VQorCTE2OGYgIE1FLTE2MDAvMTZVOEkKKwk0NjEwICBNRS00NjEwCisJNDY1MCAgTUUtNDY1MAorCTQ2NjAgIE1FLTQ2NjAKKwk0NjYxICBNRS00NjYwSQorCTQ2NjIgIE1FLTQ2NjAKKwk0NjYzICBNRS00NjYwSQorCTQ2NzAgIE1FLTQ2NzAKKwk0NjcxICBNRS00NjcwSQorCTQ2NzIgIE1FLTQ2NzBTCisJNDY3MyAgTUUtNDY3MElTCisJNDY4MCAgTUUtNDY4MAorCTQ2ODEgIE1FLTQ2ODBJCisJNDY4MiAgTUUtNDY4MFMKKwk0NjgzICBNRS00NjgwSVMKKwk2MDA0ICBNRS02MDAwLzQKKwk2MDA4ICBNRS02MDAwLzgKKwk2MDBmICBNRS02MDAwLzE2CisJNjAxNCAgTUUtNjAwMEkvNAorCTYwMTggIE1FLTYwMDBJLzgKKwk2MDFmICBNRS02MDAwSS8xNgorCTYwMzQgIE1FLTYwMDBJU0xFLzQKKwk2MDM4ICBNRS02MDAwSVNMRS84CisJNjAzZiAgTUUtNjAwMElTTEUvMTYKKwk2MDQ0ICBNRS02MDAwLzQvRElPCisJNjA0OCAgTUUtNjAwMC84L0RJTworCTYwNGYgIE1FLTYwMDAvMTYvRElPCisJNjA1NCAgTUUtNjAwMEkvNC9ESU8KKwk2MDU4ICBNRS02MDAwSS84L0RJTworCTYwNWYgIE1FLTYwMDBJLzE2L0RJTworCTYwNzQgIE1FLTYwMDBJU0xFLzQvRElPCisJNjA3OCAgTUUtNjAwMElTTEUvOC9ESU8KKwk2MDdmICBNRS02MDAwSVNMRS8xNi9ESU8KKwk2MTA0ICBNRS02MTAwLzQKKwk2MTA4ICBNRS02MTAwLzgKKwk2MTBmICBNRS02MTAwLzE2CisJNjExNCAgTUUtNjEwMEkvNAorCTYxMTggIE1FLTYxMDBJLzgKKwk2MTFmICBNRS02MTAwSS8xNgorCTYxMzQgIE1FLTYxMDBJU0xFLzQKKwk2MTM4ICBNRS02MTAwSVNMRS84CisJNjEzZiAgTUUtNjEwMElTTEUvMTYKKwk2MTQ0ICBNRS02MTAwLzQvRElPCisJNjE0OCAgTUUtNjEwMC84L0RJTworCTYxNGYgIE1FLTYxMDAvMTYvRElPCisJNjE1NCAgTUUtNjEwMEkvNC9ESU8KKwk2MTU4ICBNRS02MTAwSS84L0RJTworCTYxNWYgIE1FLTYxMDBJLzE2L0RJTworCTYxNzQgIE1FLTYxMDBJU0xFLzQvRElPCisJNjE3OCAgTUUtNjEwMElTTEUvOC9ESU8KKwk2MTdmICBNRS02MTAwSVNMRS8xNi9ESU8KKwk2MjU5ICBNRS02MjAwSS85L0RJTworCTYzNTkgIE1FLTYzMDBJLzkvRElPCisJODEwYSAgTUUtODEwMEEKKwk4MTBiICBNRS04MTAwQgorCTgyMGEgIE1FLTgyMDBBCisJODIwYiAgTUUtODIwMEIKKzFiMjAgIE1TdGFyIFNlbWljb25kdWN0b3IsIEluYy4KKzFiMjIgIFdpTGlueCBDb3JwLgorMWIyNiAgQ2VsbGV4IFBvd2VyIFByb2R1Y3RzLCBJbmMuCisxYjI3ICBDdXJyZW50IEVsZWN0cm9uaWNzIEluYy4KKzFiMjggIE5BVklzaXMgSW5jLgorMWIzMiAgVWdvYmUgTGlmZSBGb3JtcywgSW5jLgorCTAwNjQgIFBsZW8gcm9ib3RpYyBkaW5vc2F1cgorMWIzNiAgVmlYUyBTeXN0ZW1zLCBJbmMuCisxYjNiICBpUGFzc2lvbiBUZWNobm9sb2d5IEluYy4KKwkyOTMzICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTM1ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTM2ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTM3ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTM4ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTM5ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTUwICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTUxICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTUyICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTUzICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTU1ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTU2ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTU3ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTU4ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTU5ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTYwICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTYxICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTYyICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTYzICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTY1ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTY2ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTY3ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTY4ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKwkyOTY5ICBQQyBDYW1lcmEvV2ViQ2FtIGNvbnRyb2xsZXIKKzFiM2YgIEdlbmVyYWxwbHVzIFRlY2hub2xvZ3kgSW5jLgorMWI0NyAgRW5lcmdpemVyIEhvbGRpbmdzLCBJbmMuCisJMDAwMSAgQ0hVU0IgRHVvIENoYXJnZXIgKE5pTUggQUEvQUFBIFVTQiBzbWFydCBjaGFyZ2VyKQorMWI0OCAgUGxhc3Ryb24gUHJlY2lzaW9uIENvLiwgTHRkLgorMWI1OSAgSy5TLiBUZXJtaW5hbHMgSW5jLgorMWI1YSAgQ2hhbyBaaG91IEthaSBZdWFuIEVsZWN0cmljIENvLiwgTHRkLgorMWI2NSAgVGhlIEhvbmcgS29uZyBTdGFuZGFyZHMgYW5kIFRlc3RpbmcgQ2VudHJlIEx0ZC4KKzFiNzIgIEFURVJHSSBURUNITk9MT0dZIENPLiwgTFRELgorMWI3NiAgTGVnZW5kIFNpbGljb24gQ29ycC4KKzFiODAgIEFmYXRlY2gKKwljODEwICBBRjkwMTUgQkRBIERldmljZQorMWI4NiAgRG9uZ2d1YW4gR3VhbnNoYW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorMWI4OCAgU2hlbk1pbmcgRWxlY3Ryb24gKERvbmcgR3VhbikgQ28uLCBMdGQuCisxYjhjICBBbHRpdW0gTGltaXRlZAorMWI4ZCAgZS1NT1ZFIFRlY2hub2xvZ3kgQ28uLCBMdGQuCisxYjhlICBBbWxvZ2ljLCBJbmMuCisxYjhmICBNQSBMQUJTLCBJbmMuCisxYjk2ICBOLVRyaWcKKwkwMDAxICBEdW9zZW5zZSBUcmFuc3BhcmVudCBFbGVjdHJvbWFnbmV0aWMgRGlnaXRpemVyCisxYjk4ICBZTWF4IENvbW11bmljYXRpb25zIENvcnAuCisxYjk5ICBTaGVuemhlbiBZdWFuY2h1YW4gRWxlY3Ryb25pYworMWJhMSAgSklOUSBDSEVSTiBFTlRFUlBSSVNFIENPLiwgTFRELgorMWJhMiAgTGl0ZSBNZXRhbHMgJiBQbGFzdGljIChTaGVuemhlbikgQ28uLCBMdGQuCisxYmE0ICBFbWJlciBDb3Jwb3JhdGlvbgorCTAwMDEgIEluU2lnaHQgVVNCIExpbmsKKzFiYTggIENoaW5hIFRlbGVjb21tdW5pY2F0aW9uIFRlY2hub2xvZ3kgTGFicworMWJhZCAgSGFybW9uaXggTXVzaWMKKwkwMDAyICBHdWl0YXIgZm9yIFhib3ggMzYwCisJMDAwMyAgRHJ1bSBLaXQgZm9yIFhib3ggMzYwCisxYmFlICBWdXppeCBDb3Jwb3JhdGlvbgorCTAwMDIgIFZSOTIwIEltbWVyc2l2ZSBFeWV3ZWFyCisxYmJiICBUICYgQSBNb2JpbGUgUGhvbmVzCisxYmM0ICBGb3JkIE1vdG9yIENvLgorMWJjNSAgQVZJWEUgVGVjaG5vbG9neSAoQ2hpbmEpIEx0ZC4KKzFiY2UgIENvbnRhYyBDYWJsZSBJbmR1c3RyaWFsIExpbWl0ZWQKKzFiY2YgIFN1bnBsdXMgSW5ub3ZhdGlvbiBUZWNobm9sb2d5IEluYy4KKzFiZDAgIEhhbmd6aG91IFJpeXVlIEVsZWN0cm9uaWMgQ28uLCBMdGQuCisxYmRlICBQLVRXTyBJTkRVU1RSSUVTLCBJTkMuCisxYmVmICBTaGVuemhlbiBUb25neXVhbiBOZXR3b3JrLUNvbW11bmljYXRpb24gQ2FibGVzIENvLiwgTHRkCisxYmYwICBSZWFsVmlzaW9uIEluYy4KKzFiZjUgIEV4dHJhbmV0IFN5c3RlbXMgSW5jLgorMWJmNiAgT3JpZW50IFNlbWljb25kdWN0b3IgRWxlY3Ryb25pY3MsIEx0ZC4KKzFiZmQgIFRvdWNoUGFjaworCTE2ODggIFJlc2lzdGl2ZSBUb3VjaCBTY3JlZW4KKzFjMDIgIEtyZXRvbiBDb3Jwb3JhdGlvbgorMWMwNCAgUU5BUCBTeXN0ZW0gSW5jLgorMWMwZCAgUmVsbSBXaXJlbGVzcworMWMxMCAgTGFudGVycmEgSW5kdXN0cmlhbCBDby4sIEx0ZC4KKzFjMTMgIEFMRUNUUk9OSUMgTElNSVRFRAorMWMxYSAgRGF0ZWwgRWxlY3Ryb25pY3MgTHRkLgorMWMxYiAgVm9sa3N3YWdlbiBvZiBBbWVyaWNhLCBJbmMuCisxYzFmICBHb2xkdmlzaCBTLkEuCisxYzIwICBGdWppIEVsZWN0cmljIERldmljZSBUZWNobm9sb2d5IENvLiwgTHRkLgorMWMyMSAgQURETU0gTExDCisxYzIyICBaSE9OR1NIQU4gQ0hJQU5HIFlVIEVMRUNUUklDIENPLiwgTFRELgorMWMyNiAgU2hhbmdoYWkgSGFpeWluZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KKzFjMjcgIEh1aVlhbmcgRCAmIFMgQ2FibGUgQ28uLCBMdGQuCisxYzMxICBMUyBDYWJsZSBMdGQuCisxYzM3ICBBdXRob3JpemVyIFRlY2hub2xvZ2llcywgSW5jLgorMWMzZCAgTk9OSU4gTUVESUNBTCBJTkMuCisxYzNlICBXZXAgUGVyaXBoZXJhbHMKKzFjNDkgIENoZXJuZyBXZWVpIFRlY2hub2xvZ3kgQ29ycC4KKzFjNGYgIFNpR21hIE1pY3JvCisJMzAwMCAgTWljcm8gVVNCIFdlYiBDYW1lcmEKKzFjNmIgIFBoaWxpcHMgJiBMaXRlLU9OIERpZ2l0YWwgU29sdXRpb25zIENvcnBvcmF0aW9uCisxYzZjICBTa3lkaWdpdGFsIEluYy4KKzFjNzcgIEthZXRhdCBJbmR1c3RyaWFsIENvLiwgTHRkLgorMWM3OCAgRGF0YXNjb3BlIENvcnAuCisxYzc5ICBVbmlnZW4gQ29ycG9yYXRpb24KKzFjN2EgIExpZ2hUdW5pbmcgVGVjaG5vbG9neSBJbmMuCisxYzdiICBMVVhTSEFSRSBQUkVDSVNJT04gSU5EVVNUUlkgKFNIRU5aSEVOKSBDTy4sIExURC4KKzFjODcgIDJOIFRFTEVLT01VTklLQUNFIGEucy4KKzFjODggIFNvbWFnaWMsIEluYy4KKzFjODkgIEhPTkdLT05HIFdFSURJREEgRUxFQ1RST04gTElNSVRFRAorMWM4ZSAgQVNUUk9OIElOVEVSTkFUSU9OQUwgQ09SUC4KKzFjOTggIEFMUElORSBFTEVDVFJPTklDUywgSU5DLgorMWNhMCAgQUNDQVJJTyBJbmMuCisxY2FjICBLaW5zdG9uZQorCWEzMzIgIEM4IFdlYmNhbQorCWIyODggIEMxOCBXZWJjYW0KKzFjYjMgIEFjZXMgRWxlY3Ryb25pYyBDby4sIEx0ZC4KKzFjYjQgIE9QRVggQ09SUE9SQVRJT04KKzFjYmUgIEx1bWluYXJ5IE1pY3JvIEluYy4KKzFjYmYgIEZPUlRBVCBTS1lNQVJLIElORFVTVFJJQUwgQ09NUEFOWQorMWNjMCAgUGxhbnRTZW5zZQorMWNjYSAgTmV4dFdhdmUgQnJvYWRiYW5kIEluYy4KKzFjY2QgIEJvZGF0b25nIFRlY2hub2xvZ3kgKFNoZW56aGVuKSBDby4sIEx0ZC4KKzFjZDQgIGFkcCBjb3Jwb3JhdGlvbgorMWNkNSAgRmlyZWNvbW1zIEx0ZC4KKzFjZDYgIEFudG9uaW8gUHJlY2lzZSBQcm9kdWN0cyBNYW51ZmFjdG9yeSBMdGQuCisxY2RlICBUZWxlY29tbXVuaWNhdGlvbnMgVGVjaG5vbG9neSBBc3NvY2lhdGlvbiAoVFRBKQorMWNkZiAgV29uVGVuIFRlY2hub2xvZ3kgQ28uLCBMdGQuCisxY2UwICBFRElNQVggVEVDSE5PTE9HWSBDTy4sIExURC4KKzFjZTEgIEFtcGhlbm9sIEtBRQorMWNmYyAgQU5ERVMgVEVDSE5PTE9HWSBDT1JQT1JBVElPTgorMWNmZCAgRmxleHRyb25pY3MgRGlnaXRhbCBEZXNpZ24gSmFwYW4sIExURC4KKzFkMDggIE5JTkdCTyBIRU5URUsgRFJBR09OIEVMRUNUUk9OSUNTIENPLiwgTFRELgorMWQwOSAgVGVjaEZhaXRoIFdpcmVsZXNzIFRlY2hub2xvZ3kgTGltaXRlZAorMWQwYSAgSm9obnNvbiBDb250cm9scywgSW5jLiBUaGUgQXV0b21vdGl2ZSBCdXNpbmVzcyBVbml0CisxZDBiICBIQU4gSFVBIENBQkxFICYgV0lSRSBURUNITk9MT0dZIChKLlguKSBDTy4sIExURC4KKzFkMTQgIEFMUEhBLVNBVCBURUNITk9MT0dZIExJTUlURUQKKzFkMWYgIERpb3N0ZWNoIENvLiwgTHRkLgorMWQyMCAgU0FNVEFDSyBJTkMuCisxZDUwICBPcGVuTW9rbywgSW5jLgorMWQ1YiAgU21hcnRyb25peCwgSW5jLgorMWQ2YiAgTGludXggRm91bmRhdGlvbgorCTAwMDEgIDEuMSByb290IGh1YgorCTAwMDIgIDIuMCByb290IGh1YgorCTAwMDMgIDMuMCByb290IGh1YgorCTAxMDAgIFBUUCBHYWRnZXQKKwkwMTAxICBBdWRpbyBHYWRnZXQKKzFlMWYgIElOVklBCisxZTI5ICBGZXN0byBBRyAmIENvLiBLRworCTAxMDEgIENQWCBBZGFwdGVyCisJMDQwMSAgaUwzLVRQCisxZTQxICBDbGV2ZXJzY29wZQorMWU2OCAgVHJla1N0b3IgR21iSCAmIENvLiBLRworCTAwMWIgIERhdGFTdGF0aW9uIG1heGkgZy51CisxZWJiICBOdUNPUkUgVGVjaG5vbG9neSwgSW5jLgorMjAwMSAgRC1MaW5rIENvcnAuIFtoZXhdCisJMDAwMSAgRFdMLTEyMCBXSVJFTEVTUyBBREFQVEVSCisJMDIwMSAgREhOLTEyMCAxME1iIEhvbWUgUGhvbmVsaW5lIEFkYXB0ZXIKKwkxYTAwICAxMC8xMDAgRXRoZXJuZXQKKwkyMDBjICAxMC8xMDAgRXRoZXJuZXQKKwkzMjAwICBEV0wtMTIwIDgwMi4xMWIgKEF0bWVsIFJGTUQ1MDNBKSBbdXNidm5ldHJdCisJMzUwMCAgRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zIFdMQU4gY2FyZCBXTC0xNjIKKwkzNzAwICBEV0wtMTIyIDgwMi4xMWIKKwkzNzAxICBEV0wtRzEyMCBTcGlubmFrZXIgODAyLjExYgorCTM3MDIgIERXTC0xMjAgcmV2IEYKKwkzNzAzICBEV0wtMTIyIDgwMi4xMWIKKwkzNzA0ICBEV0wtRzEyMiA4MDIuMTFnIHJldi4gQTIKKwkzNzA1ICBBaXJQbHVzIEcgRFdMLUcxMjAgV2lyZWxlc3MgQWRhcHRlcihyZXYuQykKKwkzNzYxICBJRUVFIDgwMi4xMWcgVVNCMi4wIFdpcmVsZXNzIE5ldHdvcmsgQWRhcHRlci1QTgorCTNhMDAgIERXTC1BRzEzMgorCTNhMDEgIERXTC1BRzEzMiAobm8gZmlybXdhcmUpCisJM2EwMiAgRFdMLUcxMzIKKwkzYTAzICBEV0wtRzEzMiAobm8gZmlybXdhcmUpCisJM2EwNCAgRFdMLUFHMTIyCisJM2EwNSAgRFdMLUFHMTIyIChubyBmaXJtd2FyZSkKKwkzYTgwICBBaXJQbHVzIFh0cmVtZSBHIERXTC1HMTMyIFdpcmVsZXNzIEFkYXB0ZXIKKwkzYTgxICBwcmVkYXRvciBCb290bG9hZGVyIERvd25sb2FkCisJM2E4MiAgQWlyUHJlbWllciBBRyBEV0wtQUcxMzIgV2lyZWxlc3MgQWRhcHRlcgorCTNhODMgIHByZWRhdG9yIEJvb3Rsb2FkZXIgRG93bmxvYWQKKwkzYjAwICBBaXJQbHVzIERXTC0xMjArIFdpcmVsZXNzIEFkYXB0ZXIKKwkzYjAxICBXTEFOIEJvb3QgRGV2aWNlCisJM2MwMCAgRFdMLUcxMjIgODAyLjExZyByZXYuIEIxIFtyYWxpbmtdCisJM2MwMSAgQWlyUGx1cyBBRyBEV0wtQUcxMjIgV2lyZWxlc3MgQWRhcHRlcgorCTNjMDIgIEFpclBsdXMgRyBEV0wtRzEyMiBXaXJlbGVzcyBBZGFwdGVyCisJM2MwNSAgRFVCLUUxMDAgRmFzdCBFdGhlcm5ldCBbYXNpeF0KKwk0MDAwICBEU0ItNjUwQyBFdGhlcm5ldCBba2xzaV0KKwk0MDAxICBEU0ItNjUwVFggRXRoZXJuZXQgW3BlZ2FzdXNdCisJNDAwMiAgRFNCLTY1MFRYIEV0aGVybmV0IFtwZWdhc3VzXQorCTQwMDMgIERTQi02NTBUWC1QTkEgRXRoZXJuZXQgW3BlZ2FzdXNdCisJNDAwYiAgMTAvMTAwIEV0aGVybmV0CisJNDEwMiAgMTAvMTAwIEV0aGVybmV0CisJNTEwMCAgRFNMLTIwMCBBRFNMIEFUTSBNb2RlbQorCTUxMDIgIERTTC0yMDAgQURTTCBMb2FkZXIKKwk1YjAwICBSZW1vdGUgTkRJUyBOZXR3b3JrIERldmljZQorCTk0MTQgIENhYmxlIE1vZGVtCisJOWIwMCAgQnJvYWRiYW5kIENhYmxlIE1vZGVtIFJlbW90ZSBORElTIERldmljZQorCWFiYzEgIERTQi02NTAgRXRoZXJuZXQgW3BlZ2FzdXNdCisJZjAxMyAgRExpbmsgNyBwb3J0IFVTQjIuMCBIdWIKKwlmMTBkICBBY2NlbnQgQ29tbXVuaWNhdGlvbnMgTW9kZW0KKwlmMTEwICBEVUItQVYzMDAgQS9WIENhcHR1cmUKKwlmMTExICBEQlQtMTIyIEJsdWV0b290aCBhZGFwdGVyCisJZjExMiAgRFVCLVQyMTAgQXVkaW8gRGV2aWNlCisJZjExNiAgRm9ybW9zYSAyCisJZjExNyAgRm9ybW9zYSAzCisJZjExOCAgRm9ybW9zYSA0CisyMDE5ICBQTEFORVgKKwkzMjIwICBHVy1VUzExUyBXTEFOCisJNTMwMyAgR1ctVVM1NEdYUyA4MDIuMTFiZworCTUzMDQgIEdXVVMzMDAgODAyLjExbgorCWFiMDEgIEdXLVVTNTRIUAorCWFiNTAgIEdXLVVTNTRNaW5pMgorCWMwMDIgIEdXLVVTNTRTRworCWMwMDcgIEdXLVVTNTRHWkwKKwllZDAyICBHVy1VU01NCisyMDQwICBIYXVwcGF1Z2UKKwk0NzAwICBXaW5UViBOb3ZhLVMtVVNCMgorCTY1MDIgIFdpblRWIEhWUi05MDAKKwk2NTAzICBXaW5UViBIVlItOTMwCisJNjUxMyAgV2luVFYgSFZSLTk4MAorCTcwNTAgIE5vdmEtVCBTdGljaworCTcwNjAgIE5vdmEtVCBTdGljayAyCisJNzA3MCAgTm92YS1UIFN0aWNrIDMKKwk5MzAwICBXaW5UViBOT1ZBLVQgVVNCMiAoY29sZCkKKwk5MzAxICBXaW5UViBOT1ZBLVQgVVNCMiAod2FybSkKKzIxMDEgIEFjdGlvblN0YXIKKwkwMjAxICBTSUlHIDQtdG8tMiBQcmludGVyIFN3aXRjaAorMjE2MiAgQ3JlYXRpdmUgKD8pCisJMjAzMSAgTmV0d29yayBCbGFzdGVyIFdpcmVsZXNzIEFkYXB0ZXIKKwk1MDBjICBERTU3NzEgTW9kZW0gQmxhc3RlcgorCTgwMDEgIEJyb2FkeGVudCBCcml0ZVBvcnQgRFNMIEJyaWRnZSA4MDEwVQorMjIyMiAgTWFjQWxseQorCTAwMDQgIGlXZWJLZXkgS2V5Ym9hcmQKKwk0MDUwICBBaXJTdGljayBqb3lzdGljaworMjIzMyAgUmFkaW9TaGFjayBDb3Jwb3JhdGlvbgorCTYzMjMgIFVTQiBFbGVjdHJvbmljIFNjYWxlCisyMmI4ICBNb3Rvcm9sYSBQQ1MKKwkwMDAxICBXYWxseSAyLjIgY2hpcHNldAorCTAwMDIgIFdhbGx5IDIuNCBjaGlwc2V0CisJMDAwNSAgVi42MGMvVi42MGkgR1NNIFBob25lCisJMDg1MCAgQmx1ZXRvb3RoIERldmljZQorCTEwMDEgIFBhdHJpb3QgMS4wIChHU00pIGNoaXBzZXQKKwkxMDAyICBQYXRyaW90IDIuMCBjaGlwc2V0CisJMTAwNSAgVDI4MGUgR1NNL0dQUlMgUGhvbmUKKwkxMTAxICBQYXRyaW90IDEuMCAoVERNQSkgY2hpcHNldAorCTE4MDEgIFJhaW5ib3cgY2hpcHNldCBmbGFzaAorCTIwMzUgIEJsdWV0b290aCBEZXZpY2UKKwkyODA1ICBHU00gTW9kZW0KKwkyODIxICBUNzIwIEdTTSBQaG9uZQorCTI4MjIgIFYuMTIwZSBHU00gUGhvbmUKKwkyODIzICBGbGFzaCBJbnRlcmZhY2UKKwkyYTAxICBNU002MDUwIGNoaXBzZXQKKwkyYTAyICBDRE1BIG1vZGVtCisJMmEwMyAgTVNNNjA1MCBjaGlwc2V0IGZsYXNoCisJMmEyMSAgVjcxMCBHU00gUGhvbmUgKFAySykKKwkyYTIyICBWNzEwIEdTTSBQaG9uZSAoQVQpCisJMmEyMyAgTVNNNjEwMCBjaGlwc2V0IGZsYXNoCisJMmE0MSAgTVNNNjMwMCBjaGlwc2V0CisJMmE0MiAgVXNiIE1vZGVtCisJMmE0MyAgTVNNNjMwMCBjaGlwc2V0IGZsYXNoCisJMmE2MSAgRTgxNSBHU00gUGhvbmUgKFAySykKKwkyYTYyICBFODE1IEdTTSBQaG9uZSAoQVQpCisJMmE2MyAgTVNNNjUwMCBjaGlwc2V0IGZsYXNoCisJMmE4MSAgTVNNNjAyNSBjaGlwc2V0CisJMmE4MyAgTVNNNjAyNSBjaGlwc2V0IGZsYXNoCisJMmFjMSAgTVNNNjEwMCBjaGlwc2V0CisJMmFjMyAgTVNNNjEwMCBjaGlwc2V0IGZsYXNoCisJMzAwMSAgQTgzNS9FMTAwMCBHU00gUGhvbmUgKFAySykKKwkzMDAyICBBODM1L0UxMDAwIEdTTSBQaG9uZSAoQVQpCisJMzgwMSAgQzM1MEwvQzQ1MCAoUDJLKQorCTM4MDIgIEMzMzAvQzM1MEwvQzQ1MC9FWlggR1NNIFBob25lIChBVCkKKwkzODAzICBOZXB0dW5lIExUIGNoaXBzZXQgZmxhc2gKKwk0MDAxICBPTUFQIDEuMCBjaGlwc2V0CisJNDAwMiAgQTkyMC9BOTI1IFVNVFMgUGhvbmUKKwk0MDAzICBPTUFQIDEuMCBjaGlwc2V0IGZsYXNoCisJNDAwOCAgT01BUCAxLjAgY2hpcHNldCBSREwKKwk0MjA0ICBNUHgyMDAgU21hcnRwaG9uZQorCTQyMTQgIE1QYyBHU00KKwk0MjI0ICBNUHgyMjAgU21hcnRwaG9uZQorCTQyMzQgIE1QYyBDRE1BCisJNDI0NCAgTVB4MTAwIFNtYXJ0cGhvbmUKKwk0ODAxICBOZXB0dW5lIExUUyBjaGlwc2V0CisJNDgwMyAgTmVwdHVuZSBMVFMgY2hpcHNldCBmbGFzaAorCTQ4MTAgIFRyaXBsZXQgR1NNIFBob25lIChzdG9yYWdlKQorCTQ5MDEgIFRyaXBsZXQgR1NNIFBob25lIChQMkspCisJNDkwMiAgVHJpcGxldCBHU00gUGhvbmUgKEFUKQorCTQ5MDMgIE5lcHR1bmUgTFRFIGNoaXBzZXQgZmxhc2gKKwk0YTAxICBOZXB0dW5lIExUWCBjaGlwc2V0CisJNGEwMyAgTmVwdHVuZSBMVFggY2hpcHNldCBmbGFzaAorCTRhMzIgIEw2LWltb2RlIFBob25lCisJNTgwMSAgTmVwdHVuZSBVTFMgY2hpcHNldAorCTU4MDMgIE5lcHR1bmUgVUxTIGNoaXBzZXQgZmxhc2gKKwk1OTAxICBOZXB0dW5lIFZMVCBjaGlwc2V0CisJNTkwMyAgTmVwdHVuZSBWTFQgY2hpcHNldCBmbGFzaAorCTYwMDEgIERhbGhhcnQgRVpYCisJNjAwMyAgRGFsaGFydCBmbGFzaAorCTYwMDQgIEVaWCBHU00gUGhvbmUgKENEQyBOZXQpCisJNjAwNiAgTU9UT1JPS1IgRTYKKwk2MDA4ICBEYWxoYXJ0IFJETAorCTYwMDkgIEVaWCBHU00gUGhvbmUgKFAySykKKwk2MDBhICBEYWxoYXJ0IEVaWCBjb25maWcgMTcKKwk2MDBiICBEYWxoYXJ0IEVaWCBjb25maWcgMTgKKwk2MDBjICBFWlggR1NNIFBob25lIChVU0JMQU4pCisJNjAyMSAgSlVJWCBjaGlwc2V0CisJNjAyMyAgSlVJWCBjaGlwc2V0IGZsYXNoCisJNjAyNiAgRmxhc2ggUkFNIERvd25sb2FkZXIvbWluaU9TCisJNjAyNyAgVVNCTEFOCisJNjA0YyAgRVpYIEdTTSBQaG9uZSAoU3RvcmFnZSkKKwk2MTAxICBUYWxvbiBpbnRlZ3JhdGVkIGNoaXBzZXQKKwk2NDAxICBBcmdvbiBjaGlwc2V0CisJNjQwMyAgQXJnb24gY2hpcHNldCBmbGFzaAorCTY0MTUgIFJPS1IgWjYgKE1UUCBtb2RlKQorCTY2MDQgIFdhc2hpbmd0b24gQ0RNQSBQaG9uZQorCTY2MzEgIENEQyBNb2RlbQorCTcwMDEgIFEgU21hcnRwaG9uZQorMjJiOSAgZVR1cmJvVG91Y2ggVGVjaG5vbG9neSwgSW5jLgorMjJiYSAgVGVjaG5vbG9neSBJbm5vdmF0aW9uIEhvbGRpbmdzLCBMdGQKKzIzMDQgIFBpbm5hY2xlIFN5c3RlbXMsIEluYy4gW2hleF0KKwkwMTA5ICBTdHVkaW8gUENUViBVU0IgKFNFQ0FNKQorCTAxMTAgIFN0dWRpbyBQQ1RWIFVTQiAoUEFMKQorCTAxMTEgIE1pcm8gUENUViBVU0IKKwkwMTEyICBTdHVkaW8gUENUViBVU0IgKE5UU0MpIHdpdGggRk0gcmFkaW8KKwkwMjAxICBTeXN0ZW1zIE1vdmllQm94IERldmljZQorCTAyMDQgIE1vdmllQm94IFVTQl9CCisJMDIwNSAgRFZDIDE1MEIKKwkwMjA2ICBTeXN0ZW1zIE1vdmllQm94IERlbHV4ZSBEZXZpY2UKKwkwMjA3ICBEYXp6bGUgRFZDOTAgVmlkZW8gRGV2aWNlCisJMDIwOCAgU3R1ZGlvIFBDVFYgVVNCMgorCTAyMGUgIFBDVFYgMjAwZQorCTAyMGYgIFBDVFYgNDAwZSBCREEgRGV2aWNlCisJMDIxMCAgU3R1ZGlvIFBDVFYgVVNCIChQQUwpIHdpdGggRk0gcmFkaW8KKwkwMjEyICBTdHVkaW8gUENUViBVU0IgKE5UU0MpCisJMDIxMyAgNTAwLVVTQiBEZXZpY2UKKwkwMjE0ICBTdHVkaW8gUENUViBVU0IgKFBBTCkgd2l0aCBGTSByYWRpbworCTAyMTYgIFBDVFYgNjBlCisJMDIxOSAgUENUViAyNjBlCisJMDIxYSAgRGF6emxlIERWQzEwMCBBdWRpbyBEZXZpY2UKKwkwMjFiICBEYXp6bGUgRFZDMTMwL0RWQzE3MAorCTAyMWQgIERhenpsZSBEVkMxMzAKKwkwMjFlICBEYXp6bGUgRFZDMTcwCisJMDIxZiAgUENUViBTYXQgSERUViBQcm8gQkRBIERldmljZQorCTAyMjIgIFBDVFYgU2F0IFBybyBCREEgRGV2aWNlCisJMDIyMyAgRGF6emxlVFYgU2F0IEJEQSBEZXZpY2UKKwkwMjI2ICBQQ1RWIDMzMGUKKwkwMjI3ICBQQ1RWIGZvciBNYWMsIEhEIFN0aWNrCisJMDIyOCAgUENUViBEVkItVCBGbGFzaCBTdGljaworCTAyMmEgIFBDVFYgMTYwZQorCTAyMmIgIFBDVFYgNzFlCisJMDIzMiAgUENUViAxNzBlCisJMDIzNyAgUENUViBuYW5vIHN0aWNrCisJMDMwMCAgU3R1ZGlvIExpbnggVmlkZW8gaW5wdXQgY2FibGUgKE5UU0MpCisJMDMwMSAgU3R1ZGlvIExpbnggVmlkZW8gaW5wdXQgY2FibGUgKFBBTCkKKwkwMzAyICBEYXp6bGUgRFZDMTIwCisJMDQxOSAgUENUViBCdW5nZWUgVVNCIChQQUwpIHdpdGggRk0gcmFkaW8KKwkwNjFkICBQQ1RWIERlbHV4ZSAoTlRTQykgRGV2aWNlCisJMDYxZSAgUENUViBEZWx1eGUgKFBBTCkgRGV2aWNlCisyMzE4ICBTaGluaW5nIFRlY2hub2xvZ2llcywgSW5jLiBbaGV4XQorCTAwMTEgIENpdGlESVNLIEpyLiBJREUgRW5jbG9zdXJlCisyMzc1ICBEaWdpdEBsd2F5LCBJbmMuCisJMDAwMSAgRGlnaXRhbCBBdWRpbyBQbGF5ZXIKKzI0MDYgIFNBTkhPIERpZ2l0YWwgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCisJNjY4OCAgUEQ3WCBQb3J0YWJsZSBTdG9yYWdlCisyNDc4ICBUcmlwcC1MaXRlCisJMjAwOCAgVTIwOS0wMDAtUiBTZXJpYWwgUG9ydAorMjYzMiAgVHdpbk1PUworCTMyMDkgIDctaW4tMSBDYXJkIFJlYWRlcgorMjY1MCAgRWxlY3Ryb25pY3MgRm9yIEltYWdpbmcsIEluYy4gW2hleF0KKzI3MzAgIENpdGl6ZW4KKwkyMDBmICBDVC1TMzEwIExhYmVsIHByaW50ZXIKKzI3MzUgIERpZ2l0YWxXYXkKKwkwMDAzICBNUElPIEhTMTAwCisJMTAwMSAgTVBJTyBGWTIwMAorCTEwMDIgIE1QSU8gRkwxMDAKKwkxMDAzICBNUElPIEZEMTAwCisJMTAwNCAgTVBJTyBIRDIwMAorCTEwMDUgIE1QSU8gSEQzMDAKKwkxMDA2ICBNUElPIEZHMTAwCisJMTAwNyAgTVBJTyBGRzEzMAorCTEwMDggIE1QSU8gRlkzMDAKKwkxMDA5ICBNUElPIEZZNDAwCisJMTAwYSAgTVBJTyBGTDMwMAorCTEwMGIgIE1QSU8gSFMyMDAKKwkxMDBjICBNUElPIEZMMzUwCisJMTAwZCAgTVBJTyBGWTUwMAorCTEwMGUgIE1QSU8gRlk1MDAKKwkxMDBmICBNUElPIEZZNjAwCisJMTAxMiAgTVBJTyBGTDQwMAorCTEwMTMgIE1QSU8gSEQ0MDAKKwkxMDE0ICBNUElPIEhENDAwCisJMTAxNiAgTVBJTyBGWTcwMAorCTEwMTcgIE1QSU8gRlk3MDAKKwkxMDE4ICBNUElPIEZZODAwCisJMTAxOSAgTVBJTyBGWTgwMAorCTEwMWEgIE1QSU8gRlk5MDAKKwkxMDFiICBNUElPIEZZOTAwCisJMTAyYiAgTVBJTyBGTDUwMAorCTEwMmMgIE1QSU8gRkw1MDAKKwkxMDNmICBNUElPIEZZNTcwCisJMTA0MCAgTVBJTyBGWTU3MAorCTEwNDEgIE1QSU8gRlk2NzAKKwkxMDQyICBNUElPIEZZNjcwCisJMTA0MyAgSENUIEhNRC0xODBBCisJMTA0NCAgSENUIEhNRC0xODBBCisyNzcwICBOSEosIEx0ZAorCTBhMDEgIFNjYW5KZXQgNDYwMCBzZXJpZXMKKwk5MDVjICBDaGUtRXogU25hcCBTTkFQLVUvRGlnaWdyOC9Tb3VuZHN0YXIgVERDLTM1CisJOTA2MCAgQTEzMAorCTkxMjAgIENoZS1leiEgU25hcCAvIGlDbGljayBUaW55IFZHQSBEaWdpdGFsIENhbWVyYQorCTkxMzAgIFRDRyA1MDEKKwk5MTNjICBBcmd1cyBEQy0xNzMwCisJOTE1MCAgTWluaSBDYW0KKwk5MTUzICBpQ2xpY2sgNVgKKwk5MTVkICBDeWJlcnBpeCBTLTIxMFMgLyBMaXR0bGUgVGlrZXMgTXkgUmVhbCBEaWdpdGFsIENhbWVyYQorCTkzMGIgIENDRCBXZWJjYW0oUEMzNzBSKQorCTkzMGMgIENDRCBXZWJjYW0oUEMzNzBSKQorMjgyMSAgVW5rbm93bgorCTMzMDAgIFdpcmVsZXNzIEFkYXB0ZXIKKzI4OTkgIFRvcHRyb25pYyBJbmR1c3RyaWFsIENvLiwgTHRkCisJMDEyYyBDYW1lcmEgRGV2aWNlCisyYzAyICBQbGFuZXggQ29tbXVuaWNhdGlvbnMKKwkxNGVhICBHVy1VUzExSCBXTEFOCisyZmIyICBGdWppdHN1LCBMdGQKKzMxMjUgIEVhZ2xldHJvbgorCTAwMDEgIFRyYWNrZXJQb2QgQ2FtZXJhIFN0YW5kCiszMTc2ICBXaGFuYW0gRWxlY3Ryb25pY3MgQ28uLCBMdGQKKzMyNzUgIFZpZHpNZWRpYSBQdGUgTHRkCisJNGZiMSAgTW9uc3RlclRWIFAySAorMzMzNCAgQUVJCisJMTcwMSAgRmFzdCBFdGhlcm5ldAorMzM0MCAgWWFrdW1vCisJMDQzYSAgTWlvIEE3MDEgRGlnaVdhbGtlciBQUENQaG9uZQorCTBlM2EgIFBvY2tldCBQQyAzMDAgR1BTIFNMIC8gVHlwaG9vbiBNeUd1aWRlIDM1MDAKKwlhMGEzICBkZWx0YVggNSBCVCAoRCkgUERBCiszNTA0ICBNaWNybyBTdGFyCisJZjExMCAgU2VjdXJpdHkgS2V5CiszNTM4ICBQb3dlciBRdW90aWVudCBJbnRlcm5hdGlvbmFsIENvLiwgTHRkCisJMDAwMSAgVHJhdmVsIEZsYXNoCisJMDAxNSAgTWFzcyBTdG9yZ2UgRGV2aWNlCisJMDAyMiAgSGktU3BlZWQgTWFzcyBTdG9yYWdlIERldmljZQorCTAwNDIgIENvb2wgRHJpdmUgVTMzOSBGbGFzaCBEaXNrCisJMDA1NCAgRmxhc2ggRHJpdmUgKDJHQikKKzM1NzkgIERJVkEKKwk2OTAxICBNZWRpYSBSZWFkZXIKKzM2MzYgIEluVmlicm8KKzM4MzggIFdFTQorCTAwMDEgIDUtaW4tMSBDYXJkIFJlYWRlcgorMzkyMyAgTmF0aW9uYWwgSW5zdHJ1bWVudHMgQ29ycC4KKwkxMmMwICBEQVFQYWQtNjAyMEUKKwkxMmQwICBEQVFQYWQtNjUwNworCTEyZTAgIE5JIDQzNTAKKwkxMmYwICBOSSA1MTAyCisJMTc1MCAgREFRUGFkLTY1MDgKKwkxN2IwICBVU0ItSVNBLUJyaWRnZQorCTE4MjAgIERBUVBhZC02MDIwRSAoNjggcGluIEkvTykKKwkxODMwICBEQVFQYWQtNjAyMEUgKEJOQykKKwkxZjAwICBEQVFQYWQtNjAyNEUKKwkxZjEwICBEQVFQYWQtNjAyNEUKKwkxZjIwICBEQVFQYWQtNjAyNUUKKwkxZjMwICBEQVFQYWQtNjAyNUUKKwkxZjQwICBEQVFQYWQtNjAzNkUKKwkxZjUwICBEQVFQYWQtNjAzNkUKKwkyZjgwICBEQVFQYWQtNjA1MkUKKwkyZjkwICBEQVFQYWQtNjA1MkUKKwk3MDNjICBVU0ItNDg1IFJTNDg1IENhYmxlCisJNzI1NCAgTkkgTUlPIChkYXRhIGFjcXVpc2l0aW9uIGNhcmQpIGZpcm13YXJlIHVwZGF0ZXIKKwk3MjllICBVU0ItNjI1MSAoT0VNKSBkYXRhIGFjcXVpc2l0aW9uIGNhcmQKKzQwYmIgIEktTyBEYXRhCisJMGEwOSAgVVNCMi4wLVNDU0kgQnJpZGdlIFVTQjItU0MKKzQxMDEgIGktcm9ja3MKKwkxMzAxICBJUi0yNTEwIHVzYiBwaG9uZQorNDEwMiAgaVJpdmVyLCBMdGQuCisJMTAwMSAgaUZQLTEwMCBzZXJpZXMgbXAzIHBsYXllcgorCTEwMDMgIGlGUC0zMDAgc2VyaWVzIG1wMyBwbGF5ZXIKKwkxMDA1ICBpRlAtNTAwIHNlcmllcyBtcDMgcGxheWVyCisJMTAwNyAgaUZQLTcwMCBzZXJpZXMgbXAzL29nZyB2b3JiaXMgcGxheWVyCisJMTAwOCAgaUZQLTgwMCBzZXJpZXMgbXAzL29nZyB2b3JiaXMgcGxheWVyCisJMTAwYSAgaUZQLTEwMDAgc2VyaWVzIG1wMy9vZ2cgdm9yYmlzIHBsYXllcgorCTEwMTQgIFQyMCBzZXJpZXMgbXAzL29nZyB2b3JiaXMgcGxheWVyICh1bXMgZmlybXdhcmUpCisJMTEwMSAgaUZQLTEwMCBzZXJpZXMgbXAzIHBsYXllciAodW1zIGZpcm13YXJlKQorCTExMDMgIGlGUC0zMDAgc2VyaWVzIG1wMyBwbGF5ZXIgKHVtcyBmaXJtd2FyZSkKKwkxMTA1ICBpRlAtNTAwIHNlcmllcyBtcDMgcGxheWVyICh1bXMgZmlybXdhcmUpCisJMTExMyAgVDEwIChhbHRlcm5hdGUpCisJMTExNyAgVDEwCisJMTExOSAgVDMwIHNlcmllcyBtcDMvb2dnL3dtYSBwbGF5ZXIKKwkyMDAyICBIMTAgNkdCCisJMjEwMSAgSDEwIDIwR0IgKG10cCkKKwkyMTAyICBIMTAgNUdCIChtdHApCisJMjEwNSAgSDEwIDUvNkdCIChtdHApCis0MTNjICBEZWxsIENvbXB1dGVyIENvcnAuCisJMDA1OCAgUG9ydCBSZXBsaWNhdG9yCisJMTAwMSAgS2V5Ym9hcmQgSHViCisJMTAwMiAgS2V5Ym9hcmQgSHViCisJMjAwMSAgS2V5Ym9hcmQgSElEIFN1cHBvcnQKKwkyMDAyICBTSy04MTI1IEtleWJvYXJkCisJMjAwMyAgS2V5Ym9hcmQKKwkyMDA1ICBSVDdENTAgS2V5Ym9hcmQKKwkyMTAwICBTSy0zMTA2IEtleWJvYXJkCisJMjEwMSAgU21hcnRDYXJkIFJlYWRlciBLZXlib2FyZAorCTIxMDUgIE1vZGVsIEwxMDAgS2V5Ym9hcmQKKwkyNTAwICBEUkFDNCBSZW1vdGUgQWNjZXNzIENhcmQKKwkzMDEwICBPcHRpY2FsIFdoZWVsIE1vdXNlCisJMzAxMiAgT3B0aWNhbCBXaGVlbCBNb3VzZQorCTMwMTYgIE9wdGljYWwgNS1CdXR0b24gV2hlZWwgTW91c2UKKwkzMjAwICBNb3VzZQorCTQwMDEgIEF4aW0gWDUKKwk0MDAyICBBeGltIFgzCisJNDAwMyAgQXhpbSBYMzAKKwk0MDA0ICBBeGltIFN5bmMKKwk0MDA1ICBBeGltIFN5bmMKKwk0MDA2ICBBeGltIFN5bmMKKwk0MDA3ICBBeGltIFN5bmMKKwk0MDA4ICBBeGltIFN5bmMKKwk0MDA5ICBBeGltIFN5bmMKKwk0MDExICBBeGltIFg1MXYKKwk1MTAzICBBSU8gUHJpbnRlciBBOTQwCisJNTEwNSAgQUlPIFByaW50ZXIgQTkyMAorCTUxMDcgIEFJTyBQcmludGVyIEE5NjAKKwk1MTA5ICBQaG90byBBSU8gUHJpbnRlciA5MjIKKwk1MTEwICBQaG90byBBSU8gUHJpbnRlciA5NjIKKwk1MTExICBQaG90byBBSU8gUHJpbnRlciA5NDIKKwk1MTEyICBQaG90byBBSU8gUHJpbnRlciA5MjQKKwk1MTEzICBQaG90byBBSU8gUHJpbnRlciA5NDQKKwk1MTE0ICBQaG90byBBSU8gUHJpbnRlciA5NjQKKwk1MTE1ICBQaG90byBBSU8gUHJpbnRlciA5MjYKKwk1MTE2ICBBSU8gUHJpbnRlciA5NDYKKwk1MTE3ICBQaG90byBBSU8gUHJpbnRlciA5NjYKKwk1MTE4ICBBSU8gODEwCisJNTEyNCAgTGFzZXIgTUZQIDE4MTUKKwk1MTI4ICBQaG90byBBSU8gOTI4CisJNTIwMCAgTGFzZXIgUHJpbnRlcgorCTUyMDIgIFByaW50aW5nIFN1cHBvcnQKKwk1MjAzICBQcmludGluZyBTdXBwb3J0CisJNTIxMCAgUHJpbnRpbmcgU3VwcG9ydAorCTUyMTEgIFByaW50aW5nIFN1cHBvcnQKKwk1MjIwICBMYXNlciBNRlAgMTYwMG4KKwk1MjI1ICBQcmludGluZyBTdXBwb3J0CisJNTIyNiAgUHJpbnRpbmcgU3VwcG9ydAorCTUzMDAgIExhc2VyIFByaW50ZXIKKwk1NDAwICBMYXNlciBQcmludGVyCisJNTQwMSAgTGFzZXIgUHJpbnRlcgorCTU2MDEgIExhc2VyIFByaW50ZXIgMzEwMGNuCisJNTYwMiAgTGFzZXIgUHJpbnRlciAzMDAwY24KKwk1NjMxICBMYXNlciBQcmludGVyIDUxMDBjbgorCTU5MDUgIFByaW50aW5nIFN1cHBvcnQKKwk4MDAwICBCQzAyIEJsdWV0b290aCBBZGFwdGVyCisJODAxMCAgVHJ1ZU1vYmlsZSBCbHVldG9vdGggTW9kdWxlIGluCisJODEwMCAgVHJ1ZU1vYmlsZSAxMTgwIDgwMi4xMWIgQWRhcHRlcgorCTgxMDIgIFRydWVNb2JpbGUgMTMwMCBVU0IyLjAgV0xBTiBDYXJkCisJODEwMyAgV2lyZWxlc3MgMzUwIEJsdWV0b290aAorCTgxMDQgIFdpcmVsZXNzIDE0NTAgRHVhbC1iYW5kICg4MDIuMTFhL2IvZykgVVNCMi4wIEFkYXB0ZXIKKwk4MTA1ICBVMiBpbiBISUQgLSBEcml2ZXIKKwk4MTA2ICBXaXJlbGVzcyAzNTAgQmx1ZXRvb3RoIEludGVybmFsIENhcmQgaW4KKwk4MTEwICBXaXJlbGVzcyAzeHggQmx1ZXRvb3RoIEludGVybmFsIENhcmQKKwk4MTExICBXaXJlbGVzcyAzeHggQmx1ZXRvb3RoIEludGVybmFsIENhcmQgaW4KKwk4MTE0ICBXaXJlbGVzcyA1NzAwIE1vYmlsZSBCcm9hZGJhbmQgKENETUEgRVYtRE8pIE1pbmljYXJkIE1vZGVtCisJODExNSAgV2lyZWxlc3MgNTUwMCBNb2JpbGUgQnJvYWRiYW5kICgzRyBIU0RQQSkgTWluaWNhcmQgTW9kZW0KKwk4MTE2ICBXaXJlbGVzcyA1NTA1IE1vYmlsZSBCcm9hZGJhbmQgKDNHIEhTRFBBKSBNaW5pY2FyZCBNb2RlbQorCTgxMTcgIFdpcmVsZXNzIDU3MDAgTW9iaWxlIEJyb2FkYmFuZCAoQ0RNQSBFVi1ETykgRXhwcmVzc2NhcmQgTW9kZW0KKwk4MTE4ICBXaXJlbGVzcyA1NTEwIE1vYmlsZSBCcm9hZGJhbmQgKDNHIEhTRFBBKSBFeHByZXNzY2FyZCBTdGF0dXMgUG9ydAorCTgxMjAgIEJsdWV0b290aCBhZGFwdGVyCisJODEyMSAgRWFzdGZvbGQgaW4gSElECisJODEyMiAgRWFzdGZvbGQgaW4gREZVCisJODEyMyAgZUhvbWUgSW5mcmFyZWQgUmVjZWl2ZXIKKwk4MTI0ICBlSG9tZSBJbmZyYXJlZCBSZWNlaXZlcgorCTgxMjYgIFdpcmVsZXNzIDM1NSBCbHVldG9vdGgKKwk4MTI3ICBXaXJlbGVzcyAzNTUgTW9kdWxlIHdpdGggQmx1ZXRvb3RoIDIuMCArIEVEUiBUZWNobm9sb2d5LgorCTgxMjggIFdpcmVsZXNzIDU3MDAtU3ByaW50IE1vYmlsZSBCcm9hZGJhbmQgKENETUEgRVYtRE8pIE1pbmktQ2FyZCBTdGF0dXMgUG9ydAorCTgxMjkgIFdpcmVsZXNzIDU3MDAtVGVsdXMgTW9iaWxlIEJyb2FkYmFuZCAoQ0RNQSBFVi1ETykgTWluaS1DYXJkIFN0YXR1cyBQb3J0CisJODEzMSAgV2lyZWxlc3MgMzYwIEJsdWV0b290aCAyLjAgKyBFRFIgbW9kdWxlLgorCTgxMzMgIFdpcmVsZXNzIDU3MjAgVlpXIE1vYmlsZSBCcm9hZGJhbmQgKEVWRE8gUmV2LUEpIE1pbmljYXJkIEdQUyBQb3J0CisJODEzNCAgV2lyZWxlc3MgNTcyMCBTcHJpbnQgTW9iaWxlIEJyb2FkYmFuZCAoRVZETyBSZXYtQSkgTWluaWNhcmQgU3RhdHVzIFBvcnQKKwk4MTM1ICBXaXJlbGVzcyA1NzIwIFRFTFVTIE1vYmlsZSBCcm9hZGJhbmQgKEVWRE8gUmV2LUEpIE1pbmljYXJkIERpYWdub3N0aWNzIFBvcnQKKwk4MTM2ICBXaXJlbGVzcyA1NTIwIENpbmd1bGFyIE1vYmlsZSBCcm9hZGJhbmQgKDNHIEhTRFBBKSBNaW5pY2FyZCBEaWFnbm9zdGljcyBQb3J0CisJODEzNyAgV2lyZWxlc3MgNTUyMCBWb2RhIEwgTW9iaWxlIEJyb2FkYmFuZCAoM0cgSFNEUEEpIE1pbmljYXJkIFN0YXR1cyBQb3J0CisJODEzOCAgV2lyZWxlc3MgNTUyMCBWb2RhIEkgTW9iaWxlIEJyb2FkYmFuZCAoM0cgSFNEUEEpIE1pbmljYXJkIEVBUC1TSU0gUG9ydAorCTgxNDAgIFdpcmVsZXNzIDM2MCBCbHVldG9vdGgKKwk4MTQyICBNb2JpbGUgMzYwIGluIERGVQorCTgxNTYgIFdpcmVsZXNzIDM3MCBCbHVldG9vdGggTWluaS1jYXJkCisJODE1NyAgSW50ZWdyYXRlZCBLZXlib2FyZAorCTgxNTggIEludGVncmF0ZWQgVG91Y2hwYWQgLyBUcmFja3N0aWNrCisJODUwMSAgQmx1ZXRvb3RoIEFkYXB0ZXIKKwlhMDAxICBIdWIKKwlhMDA1ICBJbnRlcm5hbCAyLjAgSHViCisJYTcwMCAgSHViIChpbiAxOTA1RlAgTENEIE1vbml0b3IpCis0MTQ2ICBVU0Jlc3QgVGVjaG5vbG9neQorCTkyODEgIElvbWVnYSBNaWNybyBNaW5pIDEyOE1CIEZsYXNoIERyaXZlCisJYmEwMSAgSW50dWl4IEZsYXNoIERyaXZlCis0MjQyICBVU0IgRGVzaWduIGJ5IEV4YW1wbGUKKwk0MjAxICBCdXR0b25zIGFuZCBMaWdodHMgSElEIGRldmljZQorCTQyMjAgIEVjaG8gMSBDYW1lcmEKKzQzNDggIFdpbkNoaXBIZWFkCisJNTUyMyAgVVNCLT5SUyAyMzIgYWRhcHRlciB3aXRoIFByb2xpZmVjIFBMIDIzMDMgY2hpcHNldAorCTU1MzcgIDEzLjU2TWh6IFJGSUQgQ2FyZCBSZWFkZXIgYW5kIFdyaXRlcgorCTU1ODQgIENIMzR4IHByaW50ZXIgYWRhcHRlciBjYWJsZQorNDU3MiAgU2h1dHRsZSwgSW5jLgorCTQ1NzIgIFNodXR0bGUgUE4zMSBSZW1vdGUKKzQ1ODYgIFBhbnJhbQorCTEwMjYgIENyeXN0YWwgQmFyIEZsYXNoIERyaXZlCis0NjcwICBFTVMgUHJvZHVjdGlvbgorCTkzOTQgIEdhbWUgQ3ViZSBVU0IgTWVtb3J5IEFkYXB0b3IgNjRNCis0NzUyICBNaWRpdGVjaAorCTAwMTEgIE1pZGlzdGFydC0yCis0NzY2ICBBY2VlY2EKKwkwMDAxICBNRVoxMDAwIFJEQQorNDg1NSAgTWVtb3JleAorCTcyODggIFVsdHJhIFRyYXZlbGRyaXZlIDE2MEcgMi41IiBIREQKKzQ5NzEgIFNpbXBsZVRlY2gKKwljYjAxICBTUC1VMjUvMTIwRworNTAzMiAgR3JhbmR0ZWMKKwkwYmI4ICBHcmFuZHRlYyBVU0IxLjEgRFZCLVQgKGNvbGQpCisJMGJiOSAgR3JhbmR0ZWMgVVNCMS4xIERWQi1UICh3YXJtKQorCTBmYTAgIEdyYW5kdGVjIFVTQjEuMSBEVkItVCAoY29sZCkKKwkwZmExICBHcmFuZHRlYyBVU0IxLjEgRFZCLVQgKHdhcm0pCis1MDQxICBMaW5rc3lzICg/KQorCTIyMzQgIFdVU0I1NEcgODAyLjExZyBBZGFwdGVyCis1MGMyICBBdmVyYXRlYyAoPykKKwk0MDEzICBXTEFOIEFkYXB0ZXIKKzUxNzMgIFN3ZWV4CisJMTgwOSAgWkQxMjExCis1MzQ1ICBPd29uCisJMTIzNCAgUERTNjA2MlQgT3NjaWxsb3Njb3BlCis1NDRkICBUcmFuc21ldGEgQ29ycC4KKzU1NDMgIFVDLUxvZ2ljIFRlY2hub2xvZ3kgQ29ycC4KKwkwMDAyICBTdXBlclBlbiBXUDMzMjVVIFRhYmxldAorCTAwMDMgIEdlbml1cyBNb3VzZVBlbiA0eDMgVGFibGV0L0FxdWlsYSBMMSBUYWJsZXQKKwkwMDA0ICBHZW5pdXMgTW91c2VQZW4gNXg0IFRhYmxldAorCTAwMDUgIEdlbml1cyBNb3VzZVBlbiA4eDYgVGFibGV0CisJMDA0MSAgR2VuaXVzIFBlblNrZXRjaCA2eDggVGFibGV0CisJMDA0MiAgR2VuaXVzIFBlblNrZXRjaCAxMng5IFRhYmxldAorNTVhYSAgT25TcGVjIEVsZWN0cm9uaWMsIEluYy4KKwkwMDE1ICBIYXJkIERyaXZlCisJMDEwMiAgU3VwZXJEaXNrCisJMDEwMyAgSURFIEhhcmQgRHJpdmUKKwkwMjAxICBEREkgdG8gUmVhZGVyLTE5CisJMTIzNCAgQVRBUEkgQnJpZGdlCisJYTEwMyAgU2FuZGlzayBTRERSLTU1IFNtYXJ0TWVkaWEgQ2FyZCBSZWFkZXIKKwliMDAwICBVU0IgdG8gQ29tcGFjdEZsYXNoIENhcmQgUmVhZGVyCisJYjAwNCAgT25TcGVjIE1NQy9TRCBSZWFkZXIvV3JpdGVyCisJYjAwYiAgVVNCIHRvIE1lbW9yeSBTdGljayBDYXJkIFJlYWRlcgorCWIwMGMgIFVTQiB0byBTbWFydE1lZGlhIENhcmQgUmVhZGVyCisJYjAxMiAgTWl0c3VtaSBGQTQwMk0gOC1pbi0yIENhcmQgUmVhZGVyCisJYjIwMCAgQ29tcGFjdCBGbGFzaCBSZWFkZXIKKwliMjA0ICBNTUMvIFNEIFJlYWRlcgorCWIyMDcgIE1lbW9yeSBTdGljayBSZWFkZXIKKzU5ODYgIEFjZXIsIEluYworCTAxMDAgIE9yYmljYW0KKwkwMTAxICBVU0IyLjAgQ2FtZXJhCisJMDEwMiAgQ3J5c3RhbCBFeWUgV2ViY2FtCisJMDIwMCAgT3JiaUNhbQorNWE1NyAgWmlud2VsbAorCTAyNjAgIFJUMjU3MAorNjE4OSAgU2l0ZWNvbQorCTE4MmQgIFVTQiAyLjAgRXRoZXJuZXQKKwkyMDY4ICBVU0IgdG8gc2VyaWFsIGNhYmxlICh2MikKKzYyNTMgIFR3aW5IYW4gVGVjaG5vbG9neSBDby4sIEx0ZAorCTAxMDAgIElyIHJlY2l2ZXIgZi4gcmVtb3RlIGNvbnRyb2wKKzYzNmMgIENvcmVMb2dpYywgSW5jLgorNjU0NyAgQXJrbWljcm8gVGVjaG5vbG9naWVzIEluYy4KKwkwMjMyICBBUkszMTE2IFNlcmlhbAorNjY2NiAgUHJvdG90eXBlIHByb2R1Y3QgVmVuZG9yIElECisJMDY2NyAgV2lzZUdyb3VwIFNtYXJ0IEpveSBQU1gsIFBTLVBDIFNtYXJ0IEpveVBhZAorCTI2NjcgIEpDT1AgQmx1ZVogU21hcnRjYXJkIHJlYWRlcgorCTg4MDQgIFdpc2VHcm91cCBTdXBlckpveSBCb3ggNQorNjg5MSAgM0NvbQorCWE3MjcgIDNDUlVTQjEwMDc1IDgwMi4xMWJnCis2OTkzICBGcmVzaHRlbAorCWIwMDEgIEZULTEwMiBWb0lQIFVTQiBQaG9uZQorNmE3NSAgU2hhbmdoYWkgSnVqbyBFbGVjdHJvbmljcyBDby4sIEx0ZAorNzEwNCAgQ01FIChDZW50cmFsIE11c2ljIENvLikKKwkyMjAyICBVRjUvVUY2L1VGNy9VRjggTUlESSBNYXN0ZXIgS2V5Ym9hcmQKKzgwODYgIEludGVsIENvcnAuCisJMDAwMSAgQW55UG9pbnQgKFRNKSBIb21lIE5ldHdvcmsgMS42IE1icHMgV2lyZWxlc3MgQWRhcHRlcgorCTAxMDAgIFBlcnNvbmFsIEF1ZGlvIFBsYXllciAzMDAwCisJMDEwMSAgUGVyc29uYWwgQXVkaW8gUGxheWVyIDMwMDAKKwkwMTEwICBFYXN5IFBDIENhbWVyYQorCTAxMjAgIFBDIENhbWVyYSBDUzEyMAorCTAyMDAgIEFueVBvaW50KFRNKSBXaXJlbGVzcyBJSSBOZXR3b3JrIDExTWJwcyBBZGFwdGVyCisJMDQzMSAgSW50ZWwgUHJvIFZpZGVvIFBDIENhbWVyYQorCTA1MTAgIERpZ2l0YWwgTW92aWUgQ3JlYXRvcgorCTA2MzAgIFBvY2tldCBQQyBDYW1lcmEKKwkwNzgwICBDUzc4MCBNaWNyb3Bob25lIElucHV0CisJMDdkMyAgQkxPQiBib290IGxvYWRlciBmaXJtd2FyZQorCTBkYWQgIENoZXJyeSBNaW5pYXR1cmVDYXJkIEtleWJvYXJkCisJMTAxMCAgQW55UG9pbnQoVE0pIEhvbWUgTmV0d29yayAxMCBNYnBzIFBob25lbGluZSBBZGFwdGVyCisJMTEwYSAgQmx1ZXRvb3RoIENvbnRyb2xsZXIgZnJvbSAoRXJpY3Nzb24gUDRBKQorCTExMGIgIEJsdWV0b290aCBDb250cm9sbGVyIGZyb20gKEludGVsL0NTUikKKwkxMTEwICBQUk8vV2lyZWxlc3MgTEFOIE1vZHVsZQorCTExMTEgIFBSTy9XaXJlbGVzcyAyMDExQiA4MDIuMTFiIEFkYXB0ZXIKKwkxMTM0ICBIb2xsaXN0ZXIgTW9iaWxlIE1vbml0b3IKKwkxMjM0ICBQcm90b3R5cGUgUmVhZGVyL1dyaXRlcgorCTMxMDAgIFBSTy9EU0wgMzIyMCBNb2RlbSAtIFdBTgorCTMxMDEgIFBSTy9EU0wgMzIyMCBNb2RlbQorCTMyNDAgIEFueVBvaW50wq4gMzI0MCBNb2RlbSAtIFdBTgorCTMyNDEgIEFueVBvaW50wq4gMzI0MCBNb2RlbQorCTg2MDIgIE1pbmlhdHVyZSBDYXJkIFNsb3QKKwk5MzAzICBJbnRlbCA4eDkzMEh4IEh1YgorCTk4OTAgIDgyOTMwIFRlc3QgQm9hcmQKKwliZWVmICBTQ00gTWluaWF0dXJlIENhcmQgUmVhZGVyL1dyaXRlcgorCWMwMTMgIFdpcmVsZXNzIEhJRCBTdGF0aW9uCisJZjAwMSAgWFNjYWxlIFBYQTI3eCBCdWx2ZXJkZSBmbGFzaAorODM0MSAgRUdPIFN5c3RlbXMsIEluYy4KKwkyMDAwICBGbGFzaGRpc2sKKzkwMTYgIFNpdGVjb20KKwkxODJkICBXTC0wMjIgODAyLjExYiBBZGFwdGVyCis5NzEwICBNb3NDaGlwIFNlbWljb25kdWN0b3IKKwk3NzAzICBNQ1M3NzAzIFNlcmlhbCBQb3J0IEFkYXB0ZXIKKwk3NzA1ICBQcmludGVyIGNhYmxlCisJNzcxNSAgUHJpbnRlciBjYWJsZQorCTc3ODAgIE1TNzc4MCA0TWJwcyBGYXN0IElSREEgQWRhcHRlcgorCTc4MzAgIE1DUzc4MzAgRXRoZXJuZXQKKzk5ZmEgIEdyYW5kdGVjCisJODk4OCAgVi5jYXAgQ2FtZXJhIERldmljZQorYTYwMCAgQXNpeAorCWUxMTAgIE9LMVpJQSBEYXZhYyA0LngKK2E3MjcgIDNDb20KKwk2ODkzICBBUjU1MjMKKwk2ODk1ICBBUjU1MjMKKwk2ODk3ICBBUjU1MjMKK2FiY2QgIFVua25vd24KKwljZGVlICBQZXRjYW0KK2MyNTEgIEtlaWwgU29mdHdhcmUsIEluYy4KKwkyNzEwICBVTGluaworZDIwOSAgVWx0aW1hcmMKKwkwMzAxICBJLVBBQyBBcmNhZGUgQ29udHJvbCBJbnRlcmZhY2UKK2ViMDMgIE1ha2luZ1RoaW5ncworCTA5MjAgIE1ha2UgQ29udHJvbGxlciBLaXQKK2ViMWEgIGVNUElBIFRlY2hub2xvZ3ksIEluYy4KKwkxN2RlICBLV29ybGQgVi1TdHJlYW0gWFBFUlQgRFRWIC0gRFZCLVQgVVNCIGNvbGQKKwkxN2RmICBLV29ybGQgVi1TdHJlYW0gWFBFUlQgRFRWIC0gRFZCLVQgVVNCIHdhcm0KKwkyNzEwICBTaWx2ZXJDcmVzdCBXZWJjYW0KKwkyNzUwICBFQ1MgRWxpdGVncm91cCBHMjIwIGludGVncmF0ZWQgV2ViY2FtCisJMjc2MSAgRWVlUEMgNzAxIGludGVncmF0ZWQgV2ViY2FtCisJMjgwMCAgVGVycmF0ZWMgQ2luZXJneSAyMDAKKwkyODAxICBHcmFiQmVlWCsgVmlkZW8gRW5jb2RlcgorCTI4NzAgIFBpbm5hY2xlIFBDVFYgU3RpY2sKKwk1MGEzICBHYWRtZWkgVVRWMzgwIFRWIEJveAorCTUwYTYgIEdhZG1laSBVVFYzMzAgVFYgQm94CitmMDAzICBIZXdsZXR0IFBhY2thcmQKKwk2MDAyICBQaG90b1NtYXJ0IEM1MDAKKworIyBMaXN0IG9mIGtub3duIGRldmljZSBjbGFzc2VzLCBzdWJjbGFzc2VzIGFuZCBwcm90b2NvbHMKKworIyBTeW50YXg6CisjIEMgY2xhc3MgIGNsYXNzX25hbWUKKyMJc3ViY2xhc3MgIHN1YmNsYXNzX25hbWUJCQk8LS0gc2luZ2xlIHRhYgorIwkJcHJvdG9jb2wgIHByb3RvY29sX25hbWUJCTwtLSB0d28gdGFicworCitDIDAwICAoRGVmaW5lZCBhdCBJbnRlcmZhY2UgbGV2ZWwpCitDIDAxICBBdWRpbworCTAxICBDb250cm9sIERldmljZQorCTAyICBTdHJlYW1pbmcKKwkwMyAgTUlESSBTdHJlYW1pbmcKK0MgMDIgIENvbW11bmljYXRpb25zCisJMDEgIERpcmVjdCBMaW5lCisJMDIgIEFic3RyYWN0IChtb2RlbSkKKwkJMDAgIE5vbmUKKwkJMDEgIEFULWNvbW1hbmRzICh2LjI1dGVyKQorCQkwMiAgQVQtY29tbWFuZHMgKFBDQ0ExMDEpCisJCTAzICBBVC1jb21tYW5kcyAoUENDQTEwMSArIHdha2V1cCkKKwkJMDQgIEFULWNvbW1hbmRzIChHU00pCisJCTA1ICBBVC1jb21tYW5kcyAoM0cpCisJCTA2ICBBVC1jb21tYW5kcyAoQ0RNQSkKKwkJZmUgIERlZmluZWQgYnkgY29tbWFuZCBzZXQgZGVzY3JpcHRvcgorCQlmZiAgVmVuZG9yIFNwZWNpZmljIChNU0ZUIFJORElTPykKKwkwMyAgVGVsZXBob25lCisJMDQgIE11bHRpLUNoYW5uZWwKKwkwNSAgQ0FQSSBDb250cm9sCisJMDYgIEV0aGVybmV0IE5ldHdvcmtpbmcKKwkwNyAgQVRNIE5ldHdvcmtpbmcKKwkwOCAgV2lyZWxlc3MgSGFuZHNldCBDb250cm9sCisJMDkgIERldmljZSBNYW5hZ2VtZW50CisJMGEgIE1vYmlsZSBEaXJlY3QgTGluZQorCTBiICBPQkVYCisJMGMgIEV0aGVybmV0IEVtdWxhdGlvbgorCQkwNyAgRXRoZXJuZXQgRW11bGF0aW9uIChFRU0pCitDIDAzICBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlCisJMDAgIE5vIFN1YmNsYXNzCisJCTAwICBOb25lCisJCTAxICBLZXlib2FyZAorCQkwMiAgTW91c2UKKwkwMSAgQm9vdCBJbnRlcmZhY2UgU3ViY2xhc3MKKwkJMDAgIE5vbmUKKwkJMDEgIEtleWJvYXJkCisJCTAyICBNb3VzZQorQyAwNSAgUGh5c2ljYWwgSW50ZXJmYWNlIERldmljZQorQyAwNiAgSW1hZ2luZworCTAxICBTdGlsbCBJbWFnZSBDYXB0dXJlCisJCTAxICBQaWN0dXJlIFRyYW5zZmVyIFByb3RvY29sIChQSU1BIDE1NDcwKQorQyAwNyAgUHJpbnRlcgorCTAxICBQcmludGVyCisJCTAwICBSZXNlcnZlZC9VbmRlZmluZWQKKwkJMDEgIFVuaWRpcmVjdGlvbmFsCisJCTAyICBCaWRpcmVjdGlvbmFsCisJCTAzICBJRUVFIDEyODQuNCBjb21wYXRpYmxlIGJpZGlyZWN0aW9uYWwKKwkJZmYgIFZlbmRvciBTcGVjaWZpYworQyAwOCAgTWFzcyBTdG9yYWdlCisJMDEgIFJCQyAodHlwaWNhbGx5IEZsYXNoKQorCQkwMCAgQ29udHJvbC9CdWxrL0ludGVycnVwdAorCQkwMSAgQ29udHJvbC9CdWxrCisJCTUwICBCdWxrIChaaXApCisJMDIgIFNGRi04MDIwaSwgTU1DLTIgKEFUQVBJKQorCTAzICBRSUMtMTU3CisJMDQgIEZsb3BweSAoVUZJKQorCQkwMCAgQ29udHJvbC9CdWxrL0ludGVycnVwdAorCQkwMSAgQ29udHJvbC9CdWxrCisJCTUwICBCdWxrIChaaXApCisJMDUgIFNGRi04MDcwaQorCTA2ICBTQ1NJCisJCTAwICBDb250cm9sL0J1bGsvSW50ZXJydXB0CisJCTAxICBDb250cm9sL0J1bGsKKwkJNTAgIEJ1bGsgKFppcCkKK0MgMDkgIEh1YgorCTAwICBVbnVzZWQKKwkJMDAgIEZ1bGwgc3BlZWQgKG9yIHJvb3QpIGh1YgorCQkwMSAgU2luZ2xlIFRUCisJCTAyICBUVCBwZXIgcG9ydAorQyAwYSAgQ0RDIERhdGEKKwkwMCAgVW51c2VkCisJCTMwICBJLjQzMCBJU0ROIEJSSQorCQkzMSAgSERMQworCQkzMiAgVHJhbnNwYXJlbnQKKwkJNTAgIFEuOTIxTQorCQk1MSAgUS45MjEKKwkJNTIgIFEuOTIxVE0KKwkJOTAgIFYuNDJiaXMKKwkJOTEgIFEuOTMyIEV1cm9JU0ROCisJCTkyICBWLjEyMCBWLjI0IHJhdGUgSVNETgorCQk5MyAgQ0FQSSAyLjAKKwkJZmQgIEhvc3QgQmFzZWQgRHJpdmVyCisJCWZlICBDREMgUFVGCisJCWZmICBWZW5kb3Igc3BlY2lmaWMKK0MgMGIgIENoaXAvU21hcnRDYXJkCitDIDBkICBDb250ZW50IFNlY3VyaXR5CitDIDBlICBWaWRlbworCTAwICBVbmRlZmluZWQKKwkwMSAgVmlkZW8gQ29udHJvbAorCTAyICBWaWRlbyBTdHJlYW1pbmcKKwkwMyAgVmlkZW8gSW50ZXJmYWNlIENvbGxlY3Rpb24KK0MgZGMgIERpYWdub3N0aWMKKwkwMSAgUmVwcm9ncmFtbWFibGUgRGlhZ25vc3RpY3MKKwkJMDEgIFVTQjIgQ29tcGxpYW5jZQorQyBlMCAgV2lyZWxlc3MKKwkwMSAgUmFkaW8gRnJlcXVlbmN5CisJCTAxICBCbHVldG9vdGgKKwkJMDIgIFVsdHJhIFdpZGVCYW5kIFJhZGlvIENvbnRyb2wKKwkJMDMgIFJORElTCisJMDIgIFdpcmVsZXNzIFVTQiBXaXJlIEFkYXB0ZXIKKwkJMDEgIEhvc3QgV2lyZSBBZGFwdGVyIENvbnRyb2wvRGF0YSBTdHJlYW1pbmcKKwkJMDIgIERldmljZSBXaXJlIEFkYXB0ZXIgQ29udHJvbC9EYXRhIFN0cmVhbWluZworCQkwMyAgRGV2aWNlIFdpcmUgQWRhcHRlciBJc29jaHJvbm91cyBTdHJlYW1pbmcKK0MgZWYgIE1pc2NlbGxhbmVvdXMgRGV2aWNlCisJMDEgID8KKwkJMDEgIE1pY3Jvc29mdCBBY3RpdmVTeW5jCisJCTAyICBQYWxtIFN5bmMKKwkwMiAgPworCQkwMSAgSW50ZXJmYWNlIEFzc29jaWF0aW9uCisJCTAyICBXaXJlIEFkYXB0ZXIgTXVsdGlmdW5jdGlvbiBQZXJpcGhlcmFsCisJMDMgID8KKwkJMDEgIENhYmxlIEJhc2VkIEFzc29jaWF0aW9uCitDIGZlICBBcHBsaWNhdGlvbiBTcGVjaWZpYyBJbnRlcmZhY2UKKwkwMSAgRGV2aWNlIEZpcm13YXJlIFVwZGF0ZQorCTAyICBJUkRBIEJyaWRnZQorCTAzICBUZXN0IGFuZCBNZWFzdXJlbWVudAorCQkwMSAgVE1DCisJCTAyICBVU0I0ODgKK0MgZmYgIFZlbmRvciBTcGVjaWZpYyBDbGFzcworCWZmICBWZW5kb3IgU3BlY2lmaWMgU3ViY2xhc3MKKwkJZmYgIFZlbmRvciBTcGVjaWZpYyBQcm90b2NvbAorCisjIExpc3Qgb2YgQXVkaW8gQ2xhc3MgVGVybWluYWwgVHlwZXMKKworIyBTeW50YXg6CisjIEFUIHRlcm1pbmFsX3R5cGUgIHRlcm1pbmFsX3R5cGVfbmFtZQorCitBVCAwMTAwICBVU0IgVW5kZWZpbmVkCitBVCAwMTAxICBVU0IgU3RyZWFtaW5nCitBVCAwMWZmICBVU0IgVmVuZG9yIFNwZWNpZmljCitBVCAwMjAwICBJbnB1dCBVbmRlZmluZWQKK0FUIDAyMDEgIE1pY3JvcGhvbmUKK0FUIDAyMDIgIERlc2t0b3AgTWljcm9waG9uZQorQVQgMDIwMyAgUGVyc29uYWwgTWljcm9waG9uZQorQVQgMDIwNCAgT21uaS1kaXJlY3Rpb25hbCBNaWNyb3Bob25lCitBVCAwMjA1ICBNaWNyb3Bob25lIEFycmF5CitBVCAwMjA2ICBQcm9jZXNzaW5nIE1pY3JvcGhvbmUgQXJyYXkKK0FUIDAzMDAgIE91dHB1dCBVbmRlZmluZWQKK0FUIDAzMDEgIFNwZWFrZXIKK0FUIDAzMDIgIEhlYWRwaG9uZXMKK0FUIDAzMDMgIEhlYWQgTW91bnRlZCBEaXNwbGF5IEF1ZGlvCitBVCAwMzA0ICBEZXNrdG9wIFNwZWFrZXIKK0FUIDAzMDUgIFJvb20gU3BlYWtlcgorQVQgMDMwNiAgQ29tbXVuaWNhdGlvbiBTcGVha2VyCitBVCAwMzA3ICBMb3cgRnJlcXVlbmN5IEVmZmVjdHMgU3BlYWtlcgorQVQgMDQwMCAgQmlkaXJlY3Rpb25hbCBVbmRlZmluZWQKK0FUIDA0MDEgIEhhbmRzZXQKK0FUIDA0MDIgIEhlYWRzZXQKK0FUIDA0MDMgIFNwZWFrZXJwaG9uZSwgbm8gZWNobyByZWR1Y3Rpb24KK0FUIDA0MDQgIEVjaG8tc3VwcHJlc3Npbmcgc3BlYWtlcnBob25lCitBVCAwNDA1ICBFY2hvLWNhbmNlbGluZyBzcGVha2VycGhvbmUKK0FUIDA1MDAgIFRlbGVwaG9ueSBVbmRlZmluZWQKK0FUIDA1MDEgIFBob25lIGxpbmUKK0FUIDA1MDIgIFRlbGVwaG9uZQorQVQgMDUwMyAgRG93biBMaW5lIFBob25lCitBVCAwNjAwICBFeHRlcm5hbCBVbmRlZmluZWQKK0FUIDA2MDEgIEFuYWxvZyBDb25uZWN0b3IKK0FUIDA2MDIgIERpZ2l0YWwgQXVkaW8gSW50ZXJmYWNlCitBVCAwNjAzICBMaW5lIENvbm5lY3RvcgorQVQgMDYwNCAgTGVnYWN5IEF1ZGlvIENvbm5lY3RvcgorQVQgMDYwNSAgU1BESUYgaW50ZXJmYWNlCitBVCAwNjA2ICAxMzk0IERBIHN0cmVhbQorQVQgMDYwNyAgMTM5NCBEViBzdHJlYW0gc291bmR0cmFjaworQVQgMDcwMCAgRW1iZWRkZWQgVW5kZWZpbmVkCitBVCAwNzAxICBMZXZlbCBDYWxpYnJhdGlvbiBOb2lzZSBTb3VyY2UKK0FUIDA3MDIgIEVxdWFsaXphdGlvbiBOb2lzZQorQVQgMDcwMyAgQ0QgUGxheWVyCitBVCAwNzA0ICBEQVQKK0FUIDA3MDUgIERDQworQVQgMDcwNiAgTWluaURpc2MKK0FUIDA3MDcgIEFuYWxvZyBUYXBlCitBVCAwNzA4ICBQaG9ub2dyYXBoCitBVCAwNzA5ICBWQ1IgQXVkaW8KK0FUIDA3MGEgIFZpZGVvIERpc2MgQXVkaW8KK0FUIDA3MGIgIERWRCBBdWRpbworQVQgMDcwYyAgVFYgVHVuZXIgQXVkaW8KK0FUIDA3MGQgIFNhdGVsbGl0ZSBSZWNlaXZlciBBdWRpbworQVQgMDcwZSAgQ2FibGUgVHVuZXIgQXVkaW8KK0FUIDA3MGYgIERTUyBBdWRpbworQVQgMDcxMCAgUmFkaW8gUmVjZWl2ZXIKK0FUIDA3MTEgIFJhZGlvIFRyYW5zbWl0dGVyCitBVCAwNzEyICBNdWx0aXRyYWNrIFJlY29yZGVyCitBVCAwNzEzICBTeW50aGVzaXplcgorCisjIExpc3Qgb2YgSElEIERlc2NyaXB0b3IgVHlwZXMKKworIyBTeW50YXg6CisjIEhJRCBkZXNjcmlwdG9yX3R5cGUgIGRlc2NyaXB0b3JfdHlwZV9uYW1lCisKK0hJRCAyMSAgSElECitISUQgMjIgIFJlcG9ydAorSElEIDIzICBQaHlzaWNhbAorCisjIExpc3Qgb2YgSElEIERlc2NyaXB0b3IgSXRlbSBUeXBlcworIyBOb3RlOiAyIGJpdHMgTFNCIGVuY29kZSBkYXRhIGxlbmd0aCBmb2xsb3dpbmcKKworIyBTeW50YXg6CisjIFIgaXRlbV90eXBlICBpdGVtX3R5cGVfbmFtZQorCisjIE1haW4gSXRlbXMKK1IgODAgIElucHV0CitSIDkwICBPdXRwdXQKK1IgYjAgIEZlYXR1cmUKK1IgYTAgIENvbGxlY3Rpb24KK1IgYzAgIEVuZCBDb2xsZWN0aW9uCisKKyMgR2xvYmFsIEl0ZW1zCitSIDA0ICBVc2FnZSBQYWdlCitSIDE0ICBMb2dpY2FsIE1pbmltdW0KK1IgMjQgIExvZ2ljYWwgTWF4aW11bQorUiAzNCAgUGh5c2ljYWwgTWluaW11bQorUiA0NCAgUGh5c2ljYWwgTWF4aW11bQorUiA1NCAgVW5pdCBFeHBvbmVudAorUiA2NCAgVW5pdAorUiA3NCAgUmVwb3J0IFNpemUKK1IgODQgIFJlcG9ydCBJRAorUiA5NCAgUmVwb3J0IENvdW50CitSIGE0ICBQdXNoCitSIGI0ICBQb3AKKworIyBMb2NhbCBJdGVtcworUiAwOCAgVXNhZ2UKK1IgMTggIFVzYWdlIE1pbmltdW0KK1IgMjggIFVzYWdlIE1heGltdW0KK1IgMzggIERlc2lnbmF0b3IgSW5kZXgKK1IgNDggIERlc2lnbmF0b3IgTWluaW11bQorUiA1OCAgRGVzaWduYXRvciBNYXhpbXVtCitSIDc4ICBTdHJpbmcgSW5kZXgKK1IgODggIFN0cmluZyBNaW5pbXVtCitSIDk4ICBTdHJpbmcgTWF4aW11bQorUiBhOCAgRGVsaW1pdGVyCisKKyMgTGlzdCBvZiBQaHlzaWNhbCBEZXNjcmlwdG9yIEJpYXMgVHlwZXMKKworIyBTeW50YXg6CisjIEJJQVMgaXRlbV90eXBlICBpdGVtX3R5cGVfbmFtZQorCitCSUFTIDAgIE5vdCBBcHBsaWNhYmxlCitCSUFTIDEgIFJpZ2h0IEhhbmQKK0JJQVMgMiAgTGVmdCBIYW5kCitCSUFTIDMgIEJvdGggSGFuZHMKK0JJQVMgNCAgRWl0aGVyIEhhbmQKKworIyBMaXN0IG9mIFBoeXNpY2FsIERlc2NyaXB0b3IgSXRlbSBUeXBlcworCisjIFN5bnRheDoKKyMgUEhZIGl0ZW1fdHlwZSAgaXRlbV90eXBlX25hbWUKKworUEhZIDAwICBOb25lCitQSFkgMDEgIEhhbmQKK1BIWSAwMiAgRXllYmFsbAorUEhZIDAzICBFeWVicm93CitQSFkgMDQgIEV5ZWxpZAorUEhZIDA1ICBFYXIKK1BIWSAwNiAgTm9zZQorUEhZIDA3ICBNb3V0aAorUEhZIDA4ICBVcHBlciBMaXAKK1BIWSAwOSAgTG93ZXIgTGlwCitQSFkgMGEgIEphdworUEhZIDBiICBOZWNrCitQSFkgMGMgIFVwcGVyIEFybQorUEhZIDBkICBFbGJvdworUEhZIDBlICBGb3JlYXJtCitQSFkgMGYgIFdyaXN0CitQSFkgMTAgIFBhbG0KK1BIWSAxMSAgVGh1bWIKK1BIWSAxMiAgSW5kZXggRmluZ2VyCitQSFkgMTMgIE1pZGRsZSBGaW5nZXIKK1BIWSAxNCAgUmluZyBGaW5nZXIKK1BIWSAxNSAgTGl0dGxlIEZpbmdlcgorUEhZIDE2ICBIZWFkCitQSFkgMTcgIFNob3VsZGVyCitQSFkgMTggIEhpcAorUEhZIDE5ICBXYWlzdAorUEhZIDFhICBUaGlnaAorUEhZIDFiICBLbmVlCitQSFkgMWMgIGNhbGYKK1BIWSAxZCAgQW5rbGUKK1BIWSAxZSAgRm9vdAorUEhZIDFmICBIZWVsCitQSFkgMjAgIEJhbGwgb2YgRm9vdAorUEhZIDIxICBCaWcgVG9lCitQSFkgMjIgIFNlY29uZCBUb2UKK1BIWSAyMyAgVGhpcmQgVG9lCitQSFkgMjQgIEZvdXJ0aCBUb2UKK1BIWSAyNSAgRmlmdGggVG9lCitQSFkgMjYgIEJyb3cKK1BIWSAyNyAgQ2hlZWsKKworIyBMaXN0IG9mIEhJRCBVc2FnZXMKKworIyBTeW50YXg6CisjIEhVVCBoaSAgX3VzYWdlX3BhZ2UgIGhpZF91c2FnZV9wYWdlX25hbWUKKyMJaGlkX3VzYWdlICBoaWRfdXNhZ2VfbmFtZQorCitIVVQgMDAgIFVuZGVmaW5lZAorSFVUIDAxICBHZW5lcmljIERlc2t0b3AgQ29udHJvbHMKKwkwMDAgIFVuZGVmaW5lZAorCTAwMSAgUG9pbnRlcgorCTAwMiAgTW91c2UKKwkwMDQgIEpveXN0aWNrCisJMDA1ICBHYW1lcGFkCisJMDA2ICBLZXlib2FyZAorCTAwNyAgS2V5cGFkCisJMDA4ICBNdWx0aS1BeGlzIENvbnRyb2xsZXIKKwkwMzAgIERpcmVjdGlvbi1YCisJMDMxICBEaXJlY3Rpb24tWQorCTAzMiAgRGlyZWN0aW9uLVoKKwkwMzMgIFJvdGF0ZS1YCisJMDM0ICBSb3RhdGUtWQorCTAzNSAgUm90YXRlLVoKKwkwMzYgIFNsaWRlcgorCTAzNyAgRGlhbAorCTAzOCAgV2hlZWwKKwkwMzkgIEhhdCBTd2l0Y2gKKwkwM2EgIENvdW50ZWQgQnVmZmVyCisJMDNiICBCeXRlIENvdW50CisJMDNjICBNb3Rpb24gV2FrZXVwCisJMDNkICBTdGFydAorCTAzZSAgU2VsZWN0CisJMDQwICBWZWN0b3ItWAorCTA0MSAgVmVjdG9yLVkKKwkwNDIgIFZlY3Rvci1aCisJMDQzICBWZWN0b3ItWCByZWxhdGl2ZSBCb2R5CisJMDQ0ICBWZWN0b3ItWSByZWxhdGl2ZSBCb2R5CisJMDQ1ICBWZWN0b3ItWiByZWxhdGl2ZSBCb2R5CisJMDQ2ICBWZWN0b3IKKwkwODAgIFN5c3RlbSBDb250cm9sCisJMDgxICBTeXN0ZW0gUG93ZXIgRG93bgorCTA4MiAgU3lzdGVtIFNsZWVwCisJMDgzICBTeXN0ZW0gV2FrZSBVcAorCTA4NCAgU3lzdGVtIENvbnRleHQgTWVudQorCTA4NSAgU3lzdGVtIE1haW4gTWVudQorCTA4NiAgU3lzdGVtIEFwcCBNZW51CisJMDg3ICBTeXN0ZW0gTWVudSBIZWxwCisJMDg4ICBTeXN0ZW0gTWVudSBFeGl0CisJMDg5ICBTeXN0ZW0gTWVudSBTZWxlY3QKKwkwOGEgIFN5c3RlbSBNZW51IFJpZ2h0CisJMDhiICBTeXN0ZW0gTWVudSBMZWZ0CisJMDhjICBTeXN0ZW0gTWVudSBVcAorCTA4ZCAgU3lzdGVtIE1lbnUgRG93bgorCTA5MCAgRGlyZWN0aW9uIFBhZCBVcAorCTA5MSAgRGlyZWN0aW9uIFBhZCBEb3duCisJMDkyICBEaXJlY3Rpb24gUGFkIFJpZ2h0CisJMDkzICBEaXJlY3Rpb24gUGFkIExlZnQKK0hVVCAwMiAgU2ltdWxhdGlvbiBDb250cm9scworCTAwMCAgVW5kZWZpbmVkCisJMDAxICBGbGlnaHQgU2ltdWxhdGlvbiBEZXZpY2UKKwkwMDIgIEF1dG9tb2JpbGUgU2ltdWxhdGlvbiBEZXZpY2UKKwkwMDMgIFRhbmsgU2ltdWxhdGlvbiBEZXZpY2UKKwkwMDQgIFNwYWNlc2hpcCBTaW11bGF0aW9uIERldmljZQorCTAwNSAgU3VibWFyaW5lIFNpbXVsYXRpb24gRGV2aWNlCisJMDA2ICBTYWlsaW5nIFNpbXVsYXRpb24gRGV2aWNlCisJMDA3ICBNb3RvcmN5Y2xlIFNpbXVsYXRpb24gRGV2aWNlCisJMDA4ICBTcG9ydHMgU2ltdWxhdGlvbiBEZXZpY2UKKwkwMDkgIEFpcnBsYW5lIFNpbXVhbHRpb24gRGV2aWNlCisJMDBhICBIZWxpY29wdGVyIFNpbXVsYXRpb24gRGV2aWNlCisJMDBiICBNYWdpYyBDYXJwZXQgU2ltdWxhdGlvbiBEZXZpY2UKKwkwMGMgIEJpY3ljbGUgU2ltdWxhdGlvbiBEZXZpY2UKKwkwMjAgIEZsaWdodCBDb250cm9sIFN0aWNrCisJMDIxICBGbGlnaHQgU3RpY2sKKwkwMjIgIEN5Y2xpYyBDb250cm9sCisJMDIzICBDeWNsaWMgVHJpbQorCTAyNCAgRmxpZ2h0IFlva2UKKwkwMjUgIFRyYWNrIENvbnRyb2wKKwkwYjAgIEFpbGVyb24KKwkwYjEgIEFpbGVyb24gVHJpbQorCTBiMiAgQW50aS1Ub3JxdWUgQ29udHJvbAorCTBiMyAgQXV0b3BpbG90IEVuYWJsZQorCTBiNCAgQ2hhZmYgUmVsZWFzZQorCTBiNSAgQ29sbGVjdGl2ZSBDb250cm9sCisJMGI2ICBEaXZlIEJyZWFrCisJMGI3ICBFbGVjdHJvbmljIENvdW50ZXJtZWFzdXJlcworCTBiOCAgRWxldmF0b3IKKwkwYjkgIEVsZXZhdG9yIFRyaW0KKwkwYmEgIFJ1ZGRlcgorCTBiYiAgVGhyb3R0bGUKKwkwYmMgIEZsaWdodCBDT21tdW5pY2F0aW9ucworCTBiZCAgRmxhcmUgUmVsZWFzZQorCTBiZSAgTGFuZGluZyBHZWFyCisJMGJmICBUb2UgQnJlYWsKKwkwYzAgIFRyaWdnZXIKKwkwYzEgIFdlYXBvbiBBcm0KKwkwYzIgIFdlYXBvbnMgU2VsZWN0CisJMGMzICBXaW5nIEZsYXBzCisJMGM0ICBBY2NlbGVyYXRvcgorCTBjNSAgQnJha2UKKwkwYzYgIENsdXRjaAorCTBjNyAgU2hpZnRlcgorCTBjOCAgU3RlZXJpbmcKKwkwYzkgIFR1cnJldCBEaXJlY3Rpb24KKwkwY2EgIEJhcnJlbCBFbGV2YXRpb24KKwkwY2IgIERyaXZlIFBsYW5lCisJMGNjICBCYWxsYXN0CisJMGNkICBCaWN5bGNlIENyYW5rCisJMGNlICBIYW5kbGUgQmFycworCTBjZiAgRnJvbnQgQnJha2UKKwkwZDAgIFJlYXIgQnJha2UKK0hVVCAwMyAgVlIgQ29udHJvbHMKKwkwMDAgIFVuaWRlbnRpZmllZAorCTAwMSAgQmVsdAorCTAwMiAgQm9keSBTdWl0CisJMDAzICBGbGV4b3IKKwkwMDQgIEdsb3ZlCisJMDA1ICBIZWFkIFRyYWNrZXIKKwkwMDYgIEhlYWQgTW91bnRlZCBEaXNwbGF5CisJMDA3ICBIYW5kIFRyYWNrZXIKKwkwMDggIE9jdWxvbWV0ZXIKKwkwMDkgIFZlc3QKKwkwMGEgIEFuaW1hdHJvbmljIERldmljZQorCTAyMCAgU3RlcmVvIEVuYWJsZQorCTAyMSAgRGlzcGxheSBFbmFibGUKK0hVVCAwNCAgU3BvcnQgQ29udHJvbHMKKwkwMDAgIFVuaWRlbnRpZmllZAorCTAwMSAgQmFzZWJhbGwgQmF0CisJMDAyICBHb2xmIENsdWIKKwkwMDMgIFJvd2luZyBNYWNoaW5lCisJMDA0ICBUcmVhZG1pbGwKKwkwMzAgIE9hcgorCTAzMSAgU2xvcGUKKwkwMzIgIFJhdGUKKwkwMzMgIFN0aWNrIFNwZWVkCisJMDM0ICBTdGljayBGYWNlIEFuZ2xlCisJMDM1ICBTdGljayBIZWVsL1RvZQorCTAzNiAgU3RpY2sgRm9sbG93IFRocm91Z2gKKwkwNDcgIFN0aWNrIFRlbXAKKwkwMzggIFN0aWNrIFR5cGUKKwkwMzkgIFN0aWNrIEhlaWdodAorCTA1MCAgUHV0dGVyCisJMDUxICAxIElyb24KKwkwNTIgIDIgSXJvbgorCTA1MyAgMyBJcm9uCisJMDU0ICA0IElyb24KKwkwNTUgIDUgSXJvbgorCTA1NiAgNiBJcm9uCisJMDU3ICA3IElyb24KKwkwNTggIDggSXJvbgorCTA1OSAgOSBJcm9uCisJMDVhICAxMCBJcm9uCisJMDViICAxMSBJcm9uCisJMDVjICBTYW5kIFdlZGdlCisJMDVkICBMb2Z0IFdlZGdlCisJMDVlICBQb3dlciBXZWRnZQorCTA1ZiAgMSBXb29kCisJMDYwICAzIFdvb2QKKwkwNjEgIDUgV29vZAorCTA2MiAgNyBXb29kCisJMDYzICA5IFdvb2QKK0hVVCAwNSAgR2FtZSBDb250cm9scworCTAwMCAgVW5kZWZpbmVkCisJMDAxICAzRCBHYW1lIENvbnRyb2xsZXIKKwkwMDIgIFBpbmJhbGwgRGV2aWNlCisJMDAzICBHdW4gRGV2aWNlCisJMDIwICBQb2ludCBPZiBWaWV3CisJMDIxICBUdXJuIFJpZ2h0L0xlZnQKKwkwMjIgIFBpdGNoIFJpZ2h0L0xlZnQKKwkwMjMgIFJvbGwgRm9yd2FyZC9CYWNrd2FyZAorCTAyNCAgTW92ZSBSaWdodC9MZWZ0CisJMDI1ICBNb3ZlIEZvcndhcmQvQmFja3dhcmQKKwkwMjYgIE1vdmUgVXAvRG93bgorCTAyNyAgTGVhbiBSaWdodC9MZWZ0CisJMDI4ICBMZWFuIEZvcndhcmQvQmFja3dhcmQKKwkwMjkgIEhlaWdodCBvZiBQT1YKKwkwMmEgIEZsaXBwZXIKKwkwMmIgIFNlY29uZGFyeSBGbGlwcGVyCisJMDJjICBCdW1wCisJMDJkICBOZXcgR2FtZQorCTAyZSAgU2hvb3QgQmFsbAorCTAyZiAgUGxheWVyCisJMDMwICBHdW4gQm9sdAorCTAzMSAgR3VuIENsaXAKKwkwMzIgIEd1biBTZWxlY3RvcgorCTAzMyAgR3VuIFNpbmdsZSBTaG90CisJMDM0ICBHdW4gQnVyc3QKKwkwMzUgIEd1biBBdXRvbWF0aWMKKwkwMzYgIEd1biBTYWZldHkKKwkwMzcgIEdhbWVwYWQgRmlyZS9KdW1wCisJMDM4ICBHYW1lcGFkIEZ1bgorCTAzOSAgR2FtZXBhZCBUcmlnZ2VyCitIVVQgMDcgIEtleWJvYXJkCisJMDAwICBObyBFdmVudAorCTAwMSAgS2V5Ym9hcmQgRXJyb3JSb2xsT3ZlcgorCTAwMiAgS2V5Ym9hcmQgUE9TVGZhaWwKKwkwMDMgIEtleWJvYXJkIEVycm9yIFVuZGVmaW5lZAorCTAwNCAgQQorCTAwNSAgQgorCTAwNiAgQworCTAwNyAgRAorCTAwOCAgRQorCTAwOSAgRgorCTAwYSAgRworCTAwYiAgSAorCTAwYyAgSQorCTAwZCAgSgorCTAwZSAgSworCTAwZiAgTAorCTAxMCAgTQorCTAxMSAgTgorCTAxMiAgTworCTAxMyAgUAorCTAxNCAgUQorCTAxNSAgUgorCTAxNiAgUworCTAxNyAgVAorCTAxOCAgVQorCTAxOSAgVgorCTAxYSAgVworCTAxYiAgWAorCTAxYyAgWQorCTAxZCAgWgorCTAxZSAgMSBhbmQgISAoT25lIGFuZCBFeGNsYW1hdGlvbikKKwkwMWYgIDIgYW5kIEAgKDIgYW5kIGF0KQorCTAyMCAgMyBhbmQgIyAoMyBhbmQgSGFzaCkKKwkwMjEgIDQgYW5kICQgKDQgYW5kIERvbGxhciBTaWduKQorCTAyMiAgNSBhbmQgJSAoNSBhbmQgUGVyY2VudCBTaWduKQorCTAyMyAgNiBhbmQgXiAoNiBhbmQgY2lyY3VtZmxleCkKKwkwMjQgIDcgYW5kICYgKFNldmVuIGFuZCBBbXBlcnNhbmQpCisJMDI1ICA4IGFuZCAqIChFaWdodCBhbmQgYXN0ZXJpc2spCisJMDI2ICA5IGFuZCAoIChOaW5lIGFuZCBQYXJlbnRoZXNpcyBMZWZ0KQorCTAyNyAgMCBhbmQgKSAoWmVybyBhbmQgUGFyZW50aGVzaXMgUmlnaHQpCisJMDI4ICBSZXR1cm4gKEVudGVyKQorCTAyOSAgRXNjYXBlCisJMDJhICBEZWxldGUgKEJhY2tzcGFjZSkKKwkwMmIgIFRhYgorCTAyYyAgU3BhY2UgQmFyCisJMDJkICAtIGFuZCBfIChNaW51cyBhbmQgdW5kZXJzY29yZSkKKwkwMmUgID0gYW5kICsgKEVxdWFsIGFuZCBQbHVzKQorCTAyZiAgWyBhbmQgeyAoQnJhY2tldCBhbmQgQnJhY2VzIExlZnQpCisJMDMwICBdIGFuZCB9IChCcmFja2V0IGFuZCBCcmFjZXMgUmlnaHQpCisJMDMxICBcIGFuZCB8IChCYWNrc2xhc2ggYW5kIEJhcikKKwkwMzIgICMgYW5kIH4gKEhhc2ggYW5kIFRpbGRlLCBOb24tVVMgS2V5Ym9hcmQgbmVhciByaWdodCBzaGlmdCkKKwkwMzMgIDsgYW5kIDogKFNlbWljb2xvbiBhbmQgQ29sb24pCisJMDM0ICC0IGFuZCAiIChBY2NlbnQgQWN1dGUgYW5kIERvdWJsZSBRdW90ZXMpCisJMDM1ICBgIGFuZCB+IChBY2NlbnQgR3JhY2UgYW5kIFRpbGRlKQorCTAzNiAgLCBhbmQgPCAoQ29tbWEgYW5kIExlc3MpCisJMDM3ICAuIGFuZCA+IChQZXJpb2QgYW5kIEdyZWF0ZXIpCisJMDM4ICAvIGFuZCA/IChTbGFzaCBhbmQgUXVlc3Rpb24gTWFyaykKKwkwMzkgIENhcHMgTG9jaworCTAzYSAgRjEKKwkwM2IgIEYyCisJMDNjICBGMworCTAzZCAgRjQKKwkwM2UgIEY1CisJMDNmICBGNgorCTA0MCAgRjcKKwkwNDEgIEY4CisJMDQyICBGOQorCTA0MyAgRjEwCisJMDQ0ICBGMTEKKwkwNDUgIEYxMgorCTA0NiAgUHJpbnQgU2NyZWVuCisJMDQ3ICBTY3JvbGwgTG9jaworCTA0OCAgUGF1c2UKKwkwNDkgIEluc2VydAorCTA0YSAgSG9tZQorCTA0YiAgUGFnZSBVcAorCTA0YyAgRGVsZXRlIEZvcndhcmQgKHdpdGhvdXQgQ2hhbmdpbmcgUG9zaXRpb24pCisJMDRkICBFbmQKKwkwNGUgIFBhZ2UgRG93bgorCTA0ZiAgUmlnaHQgQXJyb3cKKwkwNTAgIExlZnQgQXJyb3cKKwkwNTEgIERvd24gQXJyb3cKKwkwNTIgIFVwIEFycm93CisJMDUzICBOdW0gTG9jayBhbmQgQ2xlYXIKKwkwNTQgIEtleXBhZCAvIChEaXZpc2lvbiBTaWduKQorCTA1NSAgS2V5cGFkICogKE11bHRpcGxpY2F0aW9uIFNpZ24pCisJMDU2ICBLZXlwYWQgLSAoU3VidHJhY3Rpb24gU2lnbikKKwkwNTcgIEtleXBhZCArIChBZGRpdGlvbiBTaWduKQorCTA1OCAgS2V5cGFkIEVudGVyCisJMDU5ICBLZXlwYWQgMSBhbmQgRU5ECisJMDVhICBLZXlwYWQgMiBhbmQgRG93biBBcnJvdworCTA1YiAgS2V5cGFkIDMgYW5kIFBhZ2UgRG93bgorCTA1YyAgS2V5cGFkIDQgYW5kIExlZnQgQXJyb3cKKwkwNWQgIEtleXBhZCA1IChUYWN0aWxlaSBSYWlzZWQpCisJMDVmICBLZXlwYWQgNiBhbmQgUmlnaHQgQXJyb3cKKwkwNjAgIEtleXBhZCA3IGFuZCBIb21lCisJMDYxICBLZXlwYWQgOCBhbmQgVXAgQXJyb3cKKwkwNjIgIEtleXBhZCA4IGFuZCBQYWdlIFVwCisJMDYzICBLZXlwYWQgLiAoZGVjaW1hbCBkZWxpbWl0ZXIpIGFuZCBEZWxldGUKKwkwNjQgIFwgYW5kIHwgKEJhY2tzbGFzaCBhbmQgQmFyLCBVSyBhbmQgTm9uLVVTIEtleWJvYXJkIG5lYXIgbGVmdCBzaGlmdCkKKwkwNjUgIEtleWJvYXJkIEFwcGxpY2F0aW9uIChXaW5kb3dzIEtleSBmb3IgV2luOTUgb3IgQ29tcG9zZSkKKwkwNjYgIFBvd2VyIChub3QgYSBrZXkpCisJMDY3ICBLZXlwYWQgPSAoRXF1YWwgU2lnbikKKwkwNjggIEYxMworCTA2OSAgRjE0CisJMDZhICBGMTUKKwkwNmIgIEYxNgorCTA2YyAgRjE3CisJMDZkICBGMTgKKwkwNmUgIEYxOQorCTA2ZiAgRjIwCisJMDcwICBGMjEKKwkwNzEgIEYyMgorCTA3MiAgRjIzCisJMDczICBGMjQKKwkwNzQgIEV4ZWN1dGUKKwkwNzUgIEhlbHAKKwkwNzYgIE1lbnUKKwkwNzcgIFNlbGVjdAorCTA3OCAgU3RvcAorCTA3OSAgQWdhaW4KKwkwN2EgIFVuZG8KKwkwN2IgIEN1dAorCTA3YyAgQ29weQorCTA3ZCAgUGFzdGUKKwkwN2UgIEZpbmQKKwkwN2YgIE11dGUKKwkwODAgIFZvbHVtZSBVcAorCTA4MSAgVm9sdW1lIERvd24KKwkwODIgIExvY2tpbmcgQ2FwcyBMb2NrCisJMDgzICBMb2NraW5nIE51bSBMb2NrCisJMDg0ICBMb2NraW5nIFNjcm9sbCBMb2NrCisJMDg1ICBLZXlwYWQgQ29tbWEKKwkwODYgIEtleXBhZCBFcXVhbCBTaWduIChBUy80MDApCisJMDg3ICBJbnRlcm5hdGlvbmFsIDEgKFBDOTgpCisJMDg4ICBJbnRlcm5hdGlvbmFsIDIgKFBDOTgpCisJMDg5ICBJbnRlcm5hdGlvbmFsIDMgKFBDOTgpCisJMDhhICBJbnRlcm5hdGlvbmFsIDQgKFBDOTgpCisJMDhiICBJbnRlcm5hdGlvbmFsIDUgKFBDOTgpCisJMDhjICBJbnRlcm5hdGlvbmFsIDYgKFBDOTgpCisJMDhkICBJbnRlcm5hdGlvbmFsIDcgKFRvZ2dsZSBTaW5nbGUvRG91YmxlIEJ5dGUgTW9kZSkKKwkwOGUgIEludGVybmF0aW9uYWwgOAorCTA4ZiAgSW50ZXJuYXRpb25hbCA5CisJMDkwICBMQU5HIDEgKEhhbmd1bC9FbmdsaXNoIFRvZ2dsZSwgS29yZWEpCisJMDkxICBMQU5HIDIgKEhhbmphIENvbnZlcnNpb24sIEtvcmVhKQorCTA5MiAgTEFORyAzIChLYXRha2FuYSwgSmFwYW4pCisJMDkzICBMQU5HIDQgKEhpcmFnYW5hLCBKYXBhbikKKwkwOTQgIExBTkcgNSAoWmVua2FrdS9IYW5rYWt1LCBKYXBhbikKKwkwOTUgIExBTkcgNgorCTA5NiAgTEFORyA3CisJMDk3ICBMQU5HIDgKKwkwOTggIExBTkcgOQorCTA5OSAgQWx0ZXJuYXRlIEVyYXNlCisJMDlhICBTeXNSZXEvQXR0ZW50aW9uCisJMDliICBDYW5jZWwKKwkwOWMgIENsZWFyCisJMDlkICBQcmlvcgorCTA5ZSAgUmV0dXJuCisJMDlmICBTZXBhcmF0b3IKKwkwYTAgIE91dAorCTBhMSAgT3BlbgorCTBhMiAgQ2xlYXIvQWdhaW4KKwkwYTMgIENyU2VsL1Byb3BzCisJMGE0ICBFeFNlbAorCTBlMCAgQ29udHJvbCBMZWZ0CisJMGUxICBTaGlmdCBMZWZ0CisJMGUyICBBbHQgTGVmdAorCTBlMyAgR1VJIExlZnQKKwkwZTQgIENvbnRyb2wgUmlnaHQKKwkwZTUgIFNoaWZ0IFJpZ2h0CisJMGU2ICBBbHQgUmlndGgKKwkwZTcgIEdVSSBSaWdodAorSFVUIDA4ICBMRURzCisJMDAwICBVbmRlZmluZWQKKwkwMDEgIE51bUxvY2sKKwkwMDIgIENhcHNMb2NrCisJMDAzICBTY3JvbGwgTG9jaworCTAwNCAgQ29tcG9zZQorCTAwNSAgS2FuYQorCTAwNiAgUG93ZXIKKwkwMDcgIFNoaWZ0CisJMDA4ICBEbyBub3QgZGlzdHVyYgorCTAwOSAgTXV0ZQorCTAwYSAgVG9uZSBFbmFia2UKKwkwMGIgIEhpZ2ggQ3V0IEZpbHRlcgorCTAwYyAgTG93IEN1dCBGaWx0ZXIKKwkwMGQgIEVxdWFsaXplciBFbmFibGUKKwkwMGUgIFNvdW5kIEZpZWxkIE9OCisJMDBmICBTdXJyb3VuZCBPbgorCTAxMCAgUmVwZWF0CisJMDExICBTdGVyZW8KKwkwMTIgIFNhbXBsaW5nIFJhdGUgRGV0ZWN0CisJMDEzICBTcGlubmluZworCTAxNCAgQ0FWCisJMDE1ICBDTFYKKwkwMTYgIFJlY29yZGluZyBGb3JtYXQgRGV0ZWN0CisJMDE3ICBPZmYtSG9vaworCTAxOCAgUmluZworCTAxOSAgTWVzc2FnZSBXYWl0aW5nCisJMDFhICBEYXRhIE1vZGUKKwkwMWIgIEJhdHRlcnkgT3BlcmF0aW9uCisJMDFjICBCYXR0ZXJ5IE9LCisJMDFkICBCYXR0ZXJ5IExvdworCTAxZSAgU3BlYWtlcgorCTAxZiAgSGVhZCBTZXQKKwkwMjAgIEhvbGQKKwkwMjEgIE1pY3JvcGhvbmUKKwkwMjIgIENvdmVyYWdlCisJMDIzICBOaWdodCBNb2RlCisJMDI0ICBTZW5kIENhbGxzCisJMDI1ICBDYWxsIFBpY2t1cAorCTAyNiAgQ29uZmVyZW5jZQorCTAyNyAgU3RhbmQtYnkKKwkwMjggIENhbWVyYSBPbgorCTAyOSAgQ2FtZXJhIE9mZgorCTAyYSAgT24tTGluZQorCTAyYiAgT2ZmLUxpbmUKKwkwMmMgIEJ1c3kKKwkwMmQgIFJlYWR5CisJMDJlICBQYXBlci1PdXQKKwkwMmYgIFBhcGVyLUphbQorCTAzMCAgUmVtb3RlCisJMDMxICBGb3J3YXJkCisJMDMyICBSZXZlcnNlCisJMDMzICBTdG9wCisJMDM0ICBSZXdpbmQKKwkwMzUgIEZhc3QgRm9yd2FyZAorCTAzNiAgUGxheQorCTAzNyAgUGF1c2UKKwkwMzggIFJlY29yZAorCTAzOSAgRXJyb3IKKwkwM2EgIFVzYWdlIFNlbGVjdGVkIEluZGljYXRvcgorCTAzYiAgVXNhZ2UgSW4gVXNlIEluZGljYXRvcgorCTAzYyAgVXNhZ2UgTXVsdGkgSW5kaWNhdG9yCisJMDNkICBJbmRpY2F0b3IgT24KKwkwM2UgIEluZGljYXRvciBGbGFzaAorCTAzZiAgSW5kaWNhdG9yIFNsb3cgQmxpbmsKKwkwNDAgIEluZGljYXRvciBGYXN0IEJsaW5rCisJMDQxICBJbmRpY2F0b3IgT2ZmCisJMDQyICBGbGFzaCBPbiBUaW1lCisJMDQzICBTbG93IEJsaW5rIE9uIFRpbWUKKwkwNDQgIFNsb3cgQmxpbmsgT2ZmIFRpbWUKKwkwNDUgIEZhc3QgQmxpbmsgT24gVGltZQorCTA0NiAgRmFzdCBCbGluayBPZmYgVGltZQorCTA0NyAgVXNhZ2UgQ29sb3IgSW5kaWNhdG9yCisJMDQ4ICBJbmRpY2F0b3IgUmVkCisJMDQ5ICBJbmRpY2F0b3IgR3JlZW4KKwkwNGEgIEluZGljYXRvciBBbWJlcgorCTA0YiAgR2VuZXJpYyBJbmRpY2F0b3IKKwkwNGMgIFN5c3RlbSBTdXNwZW5kCisJMDRkICBFeHRlcm5hbCBQb3dlciBDb25uZWN0ZWQKK0hVVCAwOSAgQnV0dG9ucworCTAwMCAgTm8gQnV0dG9uIFByZXNzZWQKKwkwMDEgIEJ1dHRvbiAxIChQcmltYXJ5KQorCTAwMiAgQnV0dG9uIDIgKFNlY29uZGFyeSkKKwkwMDMgIEJ1dHRvbiAzIChUZXJ0aWFyeSkKKwkwMDQgIEJ1dHRvbiA0CisJMDA1ICBCdXR0b24gNQorSFVUIDBhICBPcmRpbmFsCisJMDAxICBJbnN0YW5jZSAxCisJMDAyICBJbnN0YW5jZSAyCisJMDAzICBJbnN0YW5jZSAzCitIVVQgMGIgIFRlbGVwaG9ueQorCTAwMCAgVW5hc3NpZ25lZAorCTAwMSAgUGhvbmUKKwkwMDIgIEFuc3dlcmluZyBNYWNoaW5lCisJMDAzICBNZXNzYWdlIENvbnRyb2xzCisJMDA0ICBIYW5kc2V0CisJMDA1ICBIZWFkc2V0CisJMDA2ICBUZWxlcGhvbnkgS2V5IFBhZAorCTAwNyAgUHJvZ3JhbW1hYmxlIEJ1dHRvbgorCTAyMCAgSG9vayBTd2l0Y2gKKwkwMjEgIEZsYXNoCisJMDIyICBGZWF0dXJlCisJMDIzICBIb2xkCisJMDI0ICBSZWRpYWwKKwkwMjUgIFRyYW5zZmVyCisJMDI2ICBEcm9wCisJMDI3ICBQYXJrCisJMDI4ICBGb3J3YXJkIENhbGxzCisJMDI5ICBBbHRlcm5hdGUgRnVuY3Rpb24KKwkwMmEgIExpbmUKKwkwMmIgIFNwZWFrZXIgUGhvbmUKKwkwMmMgIENvbmZlcmVuY2UKKwkwMmQgIFJpbmcgRW5hYmxlCisJMDJlICBSaW5nIFNlbGVjdAorCTAyZiAgUGhvbmUgTXV0ZQorCTAzMCAgQ2FsbGVyIElECisJMDUwICBTcGVlZCBEaWFsCisJMDUxICBTdG9yZSBOdW1iZXIKKwkwNTIgIFJlY2FsbCBOdW1iZXIKKwkwNTMgIFBob25lIERpcmVjdG9yeQorCTA3MCAgVm9pY2UgTWFpbAorCTA3MSAgU2NyZWVuIENhbGxzCisJMDcyICBEbyBOb3QgRGlzdHVyYgorCTA3MyAgTWVzc2FnZQorCTA3NCAgQW5zd2VyIE9uL09mZmYKKwkwOTAgIEluc2lkZSBEaWFsIFRvbmUKKwkwOTEgIE91dHNpZGUgRGlhbCBUb25lCisJMDkyICBJbnNpZGUgUmluZyBUb25lCisJMDkzICBPdXRzaWRlIFJpbmcgVG9uZQorCTA5NCAgUHJpb3JpdHkgUmluZyBUb25lCisJMDk1ICBJbnNpZGUgUmluZ2JhY2sKKwkwOTYgIFByaW9yaXR5IFJpbmdiYWNrCisJMDk3ICBMaW5lIEJ1c3kgVG9uZQorCTA5OCAgUmVjb3JkZXIgVG9uZQorCTA5OSAgQ2FsbCBXYWl0aW5nIFRvbmUKKwkwOWEgIENvbmZpcm1hdGlvbiBUb25lIDEKKwkwOWIgIENvbmZpcm1hdGlvbiBUb25lIDIKKwkwOWMgIFRvbmVzIE9mZgorCTA5ZCAgT3V0c2lkZSBSaW5nYmFjaworCTBiMCAgS2V5IDEKKwkwYjEgIEtleSAyCisJMGIzICBLZXkgMworCTBiNCAgS2V5IDQKKwkwYjUgIEtleSA1CisJMGI2ICBLZXkgNgorCTBiNyAgS2V5IDcKKwkwYjggIEtleSA4CisJMGI5ICBLZXkgOQorCTBiYSAgS2V5IFN0YXIKKwkwYmIgIEtleSBQb3VuZAorCTBiYyAgS2V5IEEKKwkwYmQgIEtleSBCCisJMGJlICBLZXkgQworCTBiZiAgS2V5IEQKK0hVVCAwYyAgQ29uc3VtZXIKKwkwMDAgIFVuYXNzaWduZWQKKwkwMDEgIENvbnN1bWVyIENvbnRyb2wKKwkwMDIgIE51bWVyaWMgS2V5IFBhZAorCTAwMyAgUHJvZ3JhbW1hYmxlIEJ1dHRvbnMKKwkwMjAgICsxMAorCTAyMSAgKzEwMAorCTAyMiAgQU0vUE0KKwkwMzAgIFBvd2VyCisJMDMxICBSZXNldAorCTAzMiAgU2xlZXAKKwkwMzMgIFNsZWVwIEFmdGVyCisJMDM0ICBTbGVlcCBNb2RlCisJMDM1ICBJbGx1bWluYXRpb24KKwkwMzYgIEZ1bmN0aW9uIEJ1dHRvbnMKKwkwNDAgIE1lbnUKKwkwNDEgIE1lbnUgUGljaworCTA0MiAgTWVudSBVcAorCTA0MyAgTWVudSBEb3duCisJMDQ0ICBNZW51IExlZnQKKwkwNDUgIE1lbnUgUmlnaHQKKwkwNDYgIE1lbnUgRXNjYXBlCisJMDQ3ICBNZW51IFZhbHVlIEluY3JlYXNlCisJMDQ4ICBNZW51IFZhbHVlIERlY3JlYXNlCisJMDYwICBEYXRhIG9uIFNjcmVlbgorCTA2MSAgQ2xvc2VkIENhcHRpb24KKwkwNjIgIENsb3NlZCBDYXB0aW9uIFNlbGVjdAorCTA2MyAgVkNSL1RWCisJMDY0ICBCcm9hZGNhc3QgTW9kZQorCTA2NSAgU25hcHNob3QKKwkwNjYgIFN0aWxsCisJMDgwICBTZWxlY3Rpb24KKwkwODEgIEFzc2lnbiBTZWxlY3Rpb24KKwkwODIgIE1vZGUgU3RlcAorCTA4MyAgUmVjYWxsIExhc3QKKwkwODQgIEVudGVyIENoYW5uZWwKKwkwODUgIE9yZGVyIE1vdmllCisJMDg2ICBDaGFubmVsCisJMDg3ICBNZWRpYSBTZWxlY3Rpb24KKwkwODggIE1lZGlhIFNlbGVjdCBDb21wdXRlcgorCTA4OSAgTWVkaWEgU2VsZWN0IFRWCisJMDhhICBNZWRpYSBTZWxlY3QgV1dXCisJMDhiICBNZWRpYSBTZWxlY3QgRFZECisJMDhjICBNZWRpYSBTZWxlY3QgVGVsZXBob25lCisJMDhkICBNZWRpYSBTZWxlY3QgUHJvZ3JhbSBHdWlkZQorCTA4ZSAgTWVkaWEgU2VsZWN0IFZpZGVvIFBob25lCisJMDhmICBNZWRpYSBTZWxlY3QgR2FtZXMKKwkwOTAgIE1lZGlhIFNlbGVjdCBNZXNzYWdlcworCTA5MSAgTWVkaWEgU2VsZWN0IENECisJMDkyICBNZWRpYSBTZWxlY3QgVkNSCisJMDkzICBNZWRpYSBTZWxlY3QgVHVuZXIKKwkwOTQgIFF1aXQKKwkwOTUgIEhlbHAKKwkwOTYgIE1lZGlhIFNlbGVjdCBUYXBlCisJMDk3ICBNZWRpYSBTZWxlY3QgQ2FibGUKKwkwOTggIE1lZGlhIFNlbGVjdCBTYXRlbGxpdGUKKwkwOTkgIE1lZGlhIFNlbGVjdCBTZWN1cml0eQorCTA5YSAgTWVkaWEgU2VsZWN0IEhvbWUKKwkwOWIgIE1lZGlhIFNlbGVjdCBDYWxsCisJMDljICBDaGFubmVsIEluY3JlbWVudAorCTA5ZCAgQ2hhbm5lbCBEZWNyZW1lbnQKKwkwOWUgIE1lZGlhIFNlbGVjdCBTQVAKKwkwYTAgIFZDUiBQbHVzCisJMGExICBPbmNlCisJMGEyICBEYWlseQorCTBhMyAgV2Vla2x5CisJMGE0ICBNb250aGx5CisJMGIwICBQbGF5CisJMGIxICBQYXVzZQorCTBiMiAgUmVjb3JkCisJMGIzICBGYXN0IEZvcndhcmQKKwkwYjQgIFJld2luZAorCTBiNSAgU2NhbiBOZXh0IFRyYWNrCisJMGI2ICBTY2FuIFByZXZpb3VzIFRyYWNrCisJMGI3ICBTdG9wCisJMGI4ICBFamVjdAorCTBiOSAgUmFuZG9tIFBsYXkKKwkwYmEgIFNlbGVjdCBEaXNjCisJMGJiICBFbnRlciBEaXNjCisJMGJjICBSZXBlYXQKKwkwYmQgIFRyYWNraW5nCisJMGJlICBUcmFjayBOb3JtYWwKKwkwYmYgIFNsb3cgVHJhY2tpbmcKKwkwYzAgIEZyYW1lIEZvcndhcmQKKwkwYzEgIEZyYW1lIEJhY2sKKwkwYzIgIE1hcmsKKwkwYzMgIENsZWFyIE1hcmsKKwkwYzQgIFJlcGVhdCBmcm9tIE1hcmsKKwkwYzUgIFJldHVybiB0byBNYXJrCisJMGM2ICBTZWFyY2ggTWFyayBGb3J3YXJkCisJMGM3ICBTZWFyY2ggTWFyayBCYWNrd2FyZAorCTBjOCAgQ291bnRlciBSZXNldAorCTBjOSAgU2hvdyBDb3VudGVyCisJMGNhICBUcmFja2luZyBJbmNyZW1lbnQKKwkwY2IgIFRyYWNraW5nIERlY3JlbWVudAorCTBjYyAgU3RvcC9FamVjdAorCTBjZCAgUGxheS9QYXVzZQorCTBjZSAgUGxheS9Ta2lwCisJMGUwICBWb2x1bWUKKwkwZTEgIEJhbGFuY2UKKwkwZTIgIE11dGUKKwkwZTMgIEJhc3MKKwkwZTQgIFRyZWJsZQorCTBlNSAgQmFzcyBCb29zdAorCTBlNiAgU3Vycm91bmQgTW9kZQorCTBlNyAgTG91ZG5lc3MKKwkwZTggIE1QWAorCTBlOSAgVm9sdW1lIEluY3JlbWVudAorCTBlYSAgVm9sdW1lIERlY3JlbWVudAorCTBmMCAgU3BlZWQgU2VsZWN0CisJMGYxICBQbGF5YmFjayBTcGVlZAorCTBmMiAgU3RhbmRhcmQgUGxheQorCTBmMyAgTG9uZyBQbGF5CisJMGY0ICBFeHRlbmRlZCBQbGF5CisJMGY1ICBTbG93CisJMTAwICBGYW4gRW5hYmxlCisJMTAxICBGYW4gU3BlZWQKKwkxMDIgIExpZ2h0IEVuYWJsZQorCTEwMyAgTGlnaHQgSWxsdW1pbmF0aW9uIExldmVsCisJMTA0ICBDbGltYXRlIENvbnRyb2wgRW5hYmxlCisJMTA1ICBSb29tIFRlbXBlcmF0dXJlCisJMTA2ICBTZWN1cml0eSBFbmFibGUKKwkxMDcgIEZpcmUgQWxhcm0KKwkxMDggIFBvbGljZSBBbGFybQorCTE1MCAgQmFsYW5jZSBSaWdodAorCTE1MSAgQmFsYW5jZSBMZWZ0CisJMTUyICBCYXNzIEluY3JlbWVudAorCTE1MyAgQmFzcyBEZWNyZW1lbnQKKwkxNTQgIFRyZWJsZSBJbmNyZW1lbnQKKwkxNTUgIFRyZWJsZSBEZWNyZW1lbnQKKwkxNjAgIFNwZWFrZXIgU3lzdGVtCisJMTYxICBDaGFubmVsIExlZnQKKwkxNjIgIENoYW5uZWwgUmlnaHQKKwkxNjMgIENoYW5uZWwgQ2VudGVyCisJMTY0ICBDaGFubmVsIEZyb250CisJMTY1ICBDaGFubmVsIENlbnRlciBGcm9udAorCTE2NiAgQ2hhbm5lbCBTaWRlCisJMTY3ICBDaGFubmVsIFN1cnJvdW5kCisJMTY4ICBDaGFubmVsIExvdyBGcmVxdWVuY3kgRW5oYW5jZW1lbnQKKwkxNjkgIENoYW5uZWwgVG9wCisJMTZhICBDaGFubmVsIFVua25vd24KKwkxNzAgIFN1Yi1DaGFubmVsCisJMTcxICBTdWItQ2hhbm5lbCBJbmNyZW1lbnQKKwkxNzIgIFN1Yi1DaGFubmVsIERlY3JlbWVudAorCTE3MyAgQWx0ZXJuYXRpdmUgQXVkaW8gSW5jcmVtZW50CisJMTc0ICBBbHRlcm5hdGl2ZSBBdWRpbyBEZWNyZW1lbnQKKwkxODAgIEFwcGxpY2F0aW9uIExhdW5jaCBCdXR0b25zCisJMTgxICBBTCBMYXVuY2ggQnV0dG9uIENvbmZpZ3VyYXRpb24gVG9vbAorCTE4MiAgQUwgTGF1bmNoIEJ1dHRvbiBDb25maWd1cmF0aW9uCisJMTgzICBBTCBDb25zdW1lciBDb250cm9sIENvbmZpZ3VyYXRpb24KKwkxODQgIEFMIFdvcmQgUHJvY2Vzc29yCisJMTg1ICBBTCBUZXh0IEVkaXRvcgorCTE4NiAgQUwgU3ByZWFkc2hlZXQKKwkxODcgIEFMIEdyYXBoaWNzIEVkaXRvcgorCTE4OCAgQUwgUHJlc2VudGF0aW9uIEFwcAorCTE4OSAgQUwgRGF0YWJhc2UgQXBwCisJMThhICBBTCBFbWFpbCBSZWFkZXIKKwkxOGIgIEFMIE5ld3NyZWFkZXIKKwkxOGMgIEFMIFZvaWNlbWFpbAorCTE4ZCAgQUwgQ29udGFjdHMvQWRkcmVzcyBCb29rCisJMThlICBBTCBDYWxlbmRhci9TY2hlZHVsZQorCTE4ZiAgQUwgVGFzay9Qcm9qZWN0IE1hbmFnZXIKKwkxOTAgIEFMIExvZy9Kb3VuYWwvVGltZWNhcmQKKwkxOTEgIEFMIENoZWNrYm9vay9GaW5hbmNlCisJMTkyICBBTCBDYWxjdWxhdG9yCisJMTkzICBBTCBBL1YgQ2FwdHVyZS9QbGF5YmFjaworCTE5NCAgQUwgTG9jYWwgTWFjaGluZSBCcm93c2VyCisJMTk1ICBBTCBMQU4vV2FuIEJyb3dzZXIKKwkxOTYgIEFMIEludGVybmV0IEJyb3dzZXIKKwkxOTcgIEFMIFJlbW90ZSBOZXR3b3JraW5nL0lTUCBDb25uZWN0CisJMTk4ICBBTCBOZXR3b3JrIENvbmZlcmVuY2UKKwkxOTkgIEFMIE5ldHdvcmsgQ2hhdAorCTE5YSAgQUwgVGVsZXBob255L0RpYWxlcgorCTE5YiAgQUwgTG9nb24KKwkxOWMgIEFMIExvZ29mZgorCTE5ZCAgQUwgTG9nb24vTG9nb2ZmCisJMTllICBBTCBUZXJtaW5hbCBMb2NhbC9TY3JlZW5zYXZlcgorCTE5ZiAgQUwgQ29udHJvbCBQYW5lbAorCTFhMCAgQUwgQ29tbWFuZCBMaW5lIFByb2Nlc3Nvci9SdW4KKwkxYTEgIEFMIFByb2Nlc3MvVGFzayBNYW5hZ2VyCisJMWEyICBBTCBTZWxlY3QgVGFzay9BcHBsaWNhdGlvbgorCTFhMyAgQUwgTmV4dCBUYXNrL0FwcGxpY2F0aW9uCisJMWE0ICBBTCBQcmV2aW91cyBUYXNrL0FwcGxpY2F0aW9uCisJMWE1ICBBTCBQcmVlbXB0aXZlIEhhbHQgVGFzay9BcHBsaWNhdGlvbgorCTIwMCAgR2VuZXJpYyBHVUkgQXBwbGljYXRpb24gQ29udHJvbHMKKwkyMDEgIEFDIE5ldworCTIwMiAgQUMgT3BlbgorCTIwMyAgQUMgQ0xvc2UKKwkyMDQgIEFDIEV4aXQKKwkyMDUgIEFDIE1heGltaXplCisJMjA2ICBBQyBNaW5pbWl6ZQorCTIwNyAgQUMgU2F2ZQorCTIwOCAgQUMgUHJpbnQKKwkyMDkgIEFDIFByb3BlcnRpZXMKKwkyMWEgIEFDIFVuZG8KKwkyMWIgIEFDIENvcHkKKwkyMWMgIEFDIEN1dAorCTIxZCAgQUMgUGFzdGUKKwkyMWUgIEFDIFNlbGVjdCBBbGwKKwkyMWYgIEFDIEZpbmQKKwkyMjAgIEFDIEZpbmQgYW5kIFJlcGxhY2UKKwkyMjEgIEFDIFNlYXJjaAorCTIyMiAgQUMgR28gVG8KKwkyMjMgIEFDIEhvbWUKKwkyMjQgIEFDIEJhY2sKKwkyMjUgIEFDIEZvcndhcmQKKwkyMjYgIEFDIFN0b3AKKwkyMjcgIEFDIFJlZnJlc2gKKwkyMjggIEFDIFByZXZpb3VzIExpbmsKKwkyMjkgIEFDIE5leHQgTGluaworCTIyYiAgQUMgSGlzdG9yeQorCTIyYyAgQUMgU3Vic2NyaXB0aW9ucworCTIyZCAgQUMgWm9vbSBJbgorCTIyZSAgQUMgWm9vbSBPdXQKKwkyMmYgIEFDIFpvb20KKwkyMzAgIEFDIEZ1bGwgU2NyZWVuIFZpZXcKKwkyMzEgIEFDIE5vcm1hbCBWaWV3CisJMjMyICBBQyBWaWV3IFRvZ2dsZQorCTIzMyAgQUMgU2Nyb2xsIFVwCisJMjM0ICBBQyBTY3JvbGwgRG93bgorCTIzNSAgQUMgU2Nyb2xsCisJMjM2ICBBQyBQYW4gTGVmdAorCTIzNyAgQUMgUGFuIFJpZ2h0CisJMjM4ICBBQyBQYW4KKwkyMzkgIEFDIE5ldyBXaW5kb3cKKwkyM2EgIEFDIFRpbGUgSG9yaXpvbnRhbGx5CisJMjNiICBBQyBUaWxlIFZlcnRpY2FsbHkKKwkyM2MgIEFDIEZvcm1hdAorSFVUIDBkICBEaWdpdGl6ZXIKKwkwMDAgIFVuZGVmaW5lZAorCTAwMSAgRGlnaXRpemVyCisJMDAyICBQZW4KKwkwMDMgIExpZ2h0IFBlbgorCTAwNCAgVG91Y2ggU2NyZWVuCisJMDA1ICBUb3VjaCBQYWQKKwkwMDYgIFdoaXRlIEJvYXJkCisJMDA3ICBDb29yZGluYXRlIE1lYXN1cmluZyBNYWNoaW5lCisJMDA4ICAzRCBEaWdpdGl6ZXIKKwkwMDkgIFN0ZXJlbyBQbG90dGVyCisJMDBhICBBcnRpY3VsYXRlZCBBcm0KKwkwMGIgIEFybWF0dXJlCisJMDBjICBNdWx0aXBsZSBQb2ludCBEaWdpdGl6ZXIKKwkwMGQgIEZyZWUgU3BhY2UgV2FuZAorCTAyMCAgU3R5bHVzCisJMDIxICBQdWNrCisJMDIyICBGaW5nZXIKKwkwMzAgIFRpcCBQcmVzc3VyZQorCTAzMSAgQmFycmVsIFByZXNzdXJlCisJMDMyICBJbiBSYW5nZQorCTAzMyAgVG91Y2gKKwkwMzQgIFVudG91Y2gKKwkwMzUgIFRhcAorCTAzNiAgUXVhbGl0eQorCTAzNyAgRGF0YSBWYWxpZAorCTAzOCAgVHJhbnNkdWNlciBJbmRleAorCTAzOSAgVGFibGV0IEZ1bmN0aW9uIEtleXMKKwkwM2EgIFByb2dyYW0gQ2hhbmdlIEtleXMKKwkwM2IgIEJhdHRlcnkgU3RyZW5ndGgKKwkwM2MgIEludmVydAorCTAzZCAgWCBUaWx0CisJMDNlICBZIFRpbHQKKwkwM2YgIEF6aW11dGgKKwkwNDAgIEFsdGl0dWRlCisJMDQxICBUd2lzdAorCTA0MiAgVGlwIFN3aXRjaAorCTA0MyAgU2Vjb25kYXJ5IFRpcCBTd2l0Y2gKKwkwNDQgIEJhcnJlbCBTd2l0Y2gKKwkwNDUgIEVyYXNlcgorCTA0NiAgVGFibGV0IFBpY2sKKwkwNDcgIENvbmZpZGVuY2UKKwkwNDggIFdpZHRoCisJMDQ5ICBIZWlnaHQKKwkwNTEgIENvbnRhY3QgSUQKKwkwNTIgIElucHV0IE1vZGUKKwkwNTMgIERldmljZSBJbmRleAorCTA1NCAgQ29udGFjdCBDb3VudAorCTA1NSAgTWF4aW11bSBDb250YWN0IE51bWJlcgorSFVUIDBmICBQSUQgUGFnZQorCTAwMCAgVW5kZWZpbmVkCisJMDAxICBQaHlzaWNhbCBJbnRlcmZhY2UgRGV2aWNlCisJMDIwICBOb3JtYWwKKwkwMjEgIFNldCBFZmZlY3QgUmVwb3J0CisJMDIyICBFZmZlY3QgQmxvY2sgSW5kZXgKKwkwMjMgIFBhcmFtZXRlciBCbG9jayBPZmZzZXQKKwkwMjQgIFJPTSBGbGFnCisJMDI1ICBFZmZlY3QgVHlwZQorCTAyNiAgRVQgQ29uc3RhbnQgRm9yY2UKKwkwMjcgIEVUIFJhbXAKKwkwMjggIEVUIEN1c3RvbSBGb3JjZSBEYXRhCisJMDMwICBFVCBTcXVhcmUKKwkwMzEgIEVUIFNpbmUKKwkwMzIgIEVUIFRyaWFuZ2xlCisJMDMzICBFVCBTYXd0b290aCBVcAorCTAzNCAgRVQgU2F3dG9vdGggRG93bgorCTA0MCAgRVQgU3ByaW5nCisJMDQxICBFVCBEYW1wZXIKKwkwNDIgIEVUIEluZXJ0aWEKKwkwNDMgIEVUIEZyaWN0aW9uCisJMDUwICBEdXJhdGlvbgorCTA1MSAgU2FtcGxlIFBlcmlvZAorCTA1MiAgR2FpbgorCTA1MyAgVHJpZ2dlciBCdXR0b24KKwkwNTQgIFRyaWdnZXIgUmVwZWF0IEludGVydmFsCisJMDU1ICBBeGVzIEVuYWJsZQorCTA1NiAgRGlyZWN0aW9uIEVuYWJsZQorCTA1NyAgRGlyZWN0aW9uCisJMDU4ICBUeXBlIFNwZWNpZmljIEJsb2NrIE9mZnNldAorCTA1OSAgQmxvY2sgVHlwZQorCTA1QSAgU2V0IEVudmVsb3BlIFJlcG9ydAorCTA1QiAgQXR0YWNrIExldmVsCisJMDVDICBBdHRhY2sgVGltZQorCTA1RCAgRmFkZSBMZXZlbAorCTA1RSAgRmFkZSBUaW1lCisJMDVGICBTZXQgQ29uZGl0aW9uIFJlcG9ydAorCTA2MCAgQ1AgT2Zmc2V0CisJMDYxICBQb3NpdGl2ZSBDb2VmZmljaWVudAorCTA2MiAgTmVnYXRpdmUgQ29lZmZpY2llbnQKKwkwNjMgIFBvc2l0aXZlIFNhdHVyYXRpb24KKwkwNjQgIE5lZ2F0aXZlIFNhdHVyYXRpb24KKwkwNjUgIERlYWQgQmFuZAorCTA2NiAgRG93bmxvYWQgRm9yY2UgU2FtcGxlCisJMDY3ICBJc29jaCBDdXN0b20gRm9yY2UgRW5hYmxlCisJMDY4ICBDdXN0b20gRm9yY2UgRGF0YSBSZXBvcnQKKwkwNjkgIEN1c3RvbSBGb3JjZSBEYXRhCisJMDZBICBDdXN0b20gRm9yY2UgVmVuZG9yIERlZmluZWQgRGF0YQorCTA2QiAgU2V0IEN1c3RvbSBGb3JjZSBSZXBvcnQKKwkwNkMgIEN1c3RvbSBGb3JjZSBEYXRhIE9mZnNldAorCTA2RCAgU2FtcGxlIENvdW50CisJMDZFICBTZXQgUGVyaW9kaWMgUmVwb3J0CisJMDZGICBPZmZzZXQKKwkwNzAgIE1hZ25pdHVkZQorCTA3MSAgUGhhc2UKKwkwNzIgIFBlcmlvZAorCTA3MyAgU2V0IENvbnN0YW50IEZvcmNlIFJlcG9ydAorCTA3NCAgU2V0IFJhbXAgRm9yY2UgUmVwb3J0CisJMDc1ICBSYW1wIFN0YXJ0CisJMDc2ICBSYW1wIEVuZAorCTA3NyAgRWZmZWN0IE9wZXJhdGlvbiBSZXBvcnQKKwkwNzggIEVmZmVjdCBPcGVyYXRpb24KKwkwNzkgIE9wIEVmZmVjdCBTdGFydAorCTA3QSAgT3AgRWZmZWN0IFN0YXJ0IFNvbG8KKwkwN0IgIE9wIEVmZmVjdCBTdG9wCisJMDdDICBMb29wIENvdW50CisJMDdEICBEZXZpY2UgR2FpbiBSZXBvcnQKKwkwN0UgIERldmljZSBHYWluCisJMDdGICBQSUQgUG9vbCBSZXBvcnQKKwkwODAgIFJBTSBQb29sIFNpemUKKwkwODEgIFJPTSBQb29sIFNpemUKKwkwODIgIFJPTSBFZmZlY3QgQmxvY2sgQ291bnQKKwkwODMgIFNpbXVsdGFuZW91cyBFZmZlY3RzIE1heAorCTA4NCAgUG9vbCBBbGlnbm1lbnQKKwkwODUgIFBJRCBQb29sIE1vdmUgUmVwb3J0CisJMDg2ICBNb3ZlIFNvdXJjZQorCTA4NyAgTW92ZSBEZXN0aW5hdGlvbgorCTA4OCAgTW92ZSBMZW5ndGgKKwkwODkgIFBJRCBCbG9jayBMb2FkIFJlcG9ydAorCTA4QiAgQmxvY2sgTG9hZCBTdGF0dXMKKwkwOEMgIEJsb2NrIExvYWQgU3VjY2VzcworCTA4RCAgQmxvY2sgTG9hZCBGdWxsCisJMDhFICBCbG9jayBMb2FkIEVycm9yCisJMDhGICBCbG9jayBIYW5kbGUKKwkwOTAgIFBJRCBCbG9jayBGcmVlIFJlcG9ydAorCTA5MSAgVHlwZSBTcGVjaWZpYyBCbG9jayBIYW5kbGUKKwkwOTIgIFBJRCBTdGF0ZSBSZXBvcnQKKwkwOTQgIEVmZmVjdCBQbGF5aW5nCisJMDk1ICBQSUQgRGV2aWNlIENvbnRyb2wgUmVwb3J0CisJMDk2ICBQSUQgRGV2aWNlIENvbnRyb2wKKwkwOTcgIERDIEVuYWJsZSBBY3R1YXRvcnMKKwkwOTggIERDIERpc2FibGUgQWN0dWF0b3JzCisJMDk5ICBEQyBTdG9wIEFsbCBFZmZlY3RzCisJMDlBICBEQyBEZXZpY2UgUmVzZXQKKwkwOUIgIERDIERldmljZSBQYXVzZQorCTA5QyAgREMgRGV2aWNlIENvbnRpbnVlCisJMDlGICBEZXZpY2UgUGF1c2VkCisJMEEwICBBY3R1YXRvcnMgRW5hYmxlZAorCTBBNCAgU2FmZXR5IFN3aXRjaAorCTBBNSAgQWN0dWF0b3IgT3ZlcnJpZGUgU3dpdGNoCisJMEE2ICBBY3R1YXRvciBQb3dlcgorCTBBNyAgU3RhcnQgRGVsYXkKKwkwQTggIFBhcmFtZXRlciBCbG9jayBTaXplCisJMEE5ICBEZXZpY2UgTWFuYWdlZCBQb29sCisJMEFBICBTaGFyZWQgUGFyYW1ldGVyIEJsb2NrcworCTBBQiAgQ3JlYXRlIE5ldyBFZmZlY3QgUmVwb3J0CisJMEFDICBSQU0gUG9vbCBBdmFpbGFibGUKK0hVVCAxMCAgVW5pY29kZQorSFVUIDE0ICBBbHBoYW51bWVyaWMgRGlzcGxheQorCTAwMCAgVW5kZWZpbmVkCisJMDAxICBBbHBoYW51bWVyaWMgRGlzcGxheQorCTAyMCAgRGlzcGxheSBBdHRyaWJ1dGVzIFJlcG9ydAorCTAyMSAgQVNDSUkgQ2hhcmFjdGVyIFNldAorCTAyMiAgRGF0YSBSZWFkIEJhY2sKKwkwMjMgIEZvbnQgUmVhZCBCYWNrCisJMDI0ICBEaXNwbGF5IENvbnRyb2wgUmVwb3J0CisJMDI1ICBDbGVhciBEaXNwbGF5CisJMDI2ICBEaXNwbGF5IEVuYWJsZQorCTAyNyAgU2NyZWVuIFNhdmVyIERlbGF5CisJMDI4ICBTY3JlZW4gU2F2ZXIgRW5hYmxlCisJMDI5ICBWZXJ0aWNhbCBTY3JvbGwKKwkwMmEgIEhvcml6b250YWwgU2Nyb2xsCisJMDJiICBDaGFyYWN0ZXIgUmVwb3J0CisJMDJjICBEaXNwbGF5IERhdGEKKwkwMmQgIERpc3BsYXkgU3RhdHVzCisJMDJlICBTdGF0IE5vdCBSZWFkeQorCTAyZiAgU3RhdCBSZWFkeQorCTAzMCAgRXJyIE5vdCBhIGxvYWRhYmxlIENoYXJhY3RlcgorCTAzMSAgRXJyIEZvbnQgRGF0YSBDYW5ub3QgQmUgUmVhZAorCTAzMiAgQ3Vyc3VyIFBvc2l0aW9uIFJlcG9ydAorCTAzMyAgUm93CisJMDM0ICBDb2x1bW4KKwkwMzUgIFJvd3MKKwkwMzYgIENvbHVtbnMKKwkwMzcgIEN1cnNvciBQaXhlbCBQb3NpdGlvbmluZworCTAzOCAgQ3Vyc29yIE1vZGUKKwkwMzkgIEN1cnNvciBFbmFibGUKKwkwM2EgIEN1cnNvciBCbGluaworCTAzYiAgRm9udCBSZXBvcnQKKwkwM2MgIEZvbnQgRGF0YQorCTAzZCAgQ2hhcmFjdGVyIFdpZHRoCisJMDNlICBDaGFyYWN0ZXIgSGVpZ2h0CisJMDNmICBDaGFyYWN0ZXIgU3BhY2luZyBIb3Jpem9udGFsCisJMDQwICBDaGFyYWN0ZXIgU3BhY2luZyBWZXJ0aWNhbAorCTA0MSAgVW5pY29kZSBDaGFyYWN0ZXIgU2V0CitIVVQgODAgIFVTQiBNb25pdG9yCisJMDAxICBNb25pdG9yIENvbnRyb2wKKwkwMDIgIEVESUQgSW5mb3JtYXRpb24KKwkwMDMgIFZESUYgSW5mb3JtYXRpb24KKwkwMDQgIFZFU0EgVmVyc2lvbgorSFVUIDgxICBVU0IgTW9uaXRvciBFbnVtZXJhdGVkIFZhbHVlcworSFVUIDgyICBNb25pdG9yIFZFU0EgVmlydHVhbCBDb250cm9scworCTAwMSAgRGVnYXVzcworCTAxMCAgQnJpZ2h0bmVzcworCTAxMiAgQ29udHJhc3QKKwkwMTYgIFJlZCBWaWRlbyBHYWluCisJMDE4ICBHcmVlbiBWaWRlbyBHYWluCisJMDFhICBCbHVlIFZpZGVvIEdhaW4KKwkwMWMgIEZvY3VzCisJMDIwICBIb3Jpem9udGFsIFBvc2l0aW9uCisJMDIyICBIb3Jpem9udGFsIFNpemUKKwkwMjQgIEhvcml6b250YWwgUGluY3VzaGlvbgorCTAyNiAgSG9yaXpvbnRhbCBQaW5jdXNoaW9uIEJhbGFuY2UKKwkwMjggIEhvcml6b250YWwgTWlzY29udmVyZ2VuY2UKKwkwMmEgIEhvcml6b250YWwgTGluZWFyaXR5CisJMDJjICBIb3Jpem9udGFsIExpbmVhcml0eSBCYWxhbmNlCisJMDMwICBWZXJ0aWNhbCBQb3NpdGlvbgorCTAzMiAgVmVydGljYWwgU2l6ZQorCTAzNCAgVmVydGljYWwgUGluY3VzaGlvbgorCTAzNiAgVmVydGljYWwgUGluY3VzaGlvbiBCYWxhbmNlCisJMDM4ICBWZXJ0aWNhbCBNaXNjb252ZXJnZW5jZQorCTAzYSAgVmVydGljYWwgTGluZWFyaXR5CisJMDNjICBWZXJ0aWNhbCBMaW5lYXJpdHkgQmFsYW5jZQorCTA0MCAgUGFyYWxsZWxvZ3JhbSBCYWxhbmNlIChLZXkgRGlzdG9ydGlvbikKKwkwNDIgIFRyYXBlem9pZGFsIERpc3RvcnRpb24gKEtleSkKKwkwNDQgIFRpbHQgKFJvdGF0aW9uKQorCTA0NiAgVG9wIENvcm5lciBEaXN0b3J0aW9uIENvbnRyb2wKKwkwNDggIFRvcCBDb3JuZXIgRGlzdG9ydGlvbiBCYWxhbmNlCisJMDRhICBCb3R0b20gQ29ybmVyIERpc3RvcnRpb24gQ29udHJvbAorCTA0YyAgQm90dG9tIENvcm5lciBEaXN0b3J0aW9uIEJhbGFuY2UKKwkwNTYgIEhvcml6b250YWwgTW9pcmUKKwkwNTggIFZlcnRpY2FsIE1vaXJlCisJMDVlICBJbnB1dCBMZXZlbCBTZWxlY3QKKwkwNjAgIElucHV0IFNvdXJjZSBTZWxlY3QKKwkwNmMgIFJlZCBWaWRlbyBCbGFjayBMZXZlbAorCTA2ZSAgR3JlZW4gVmlkZW8gQmxhY2sgTGV2ZWwKKwkwNzAgIEJsdWUgVmlkZW8gQmxhY2sgTGV2ZWwKKwkwYTIgIEF1dG8gU2l6ZSBDZW50ZXIKKwkwYTQgIFBvbGFyaXR5IEhvcml6b250YWwgU3ljaHJvbml6YXRpb24KKwkwYTYgIFBvbGFyaXR5IFZlcnRpY2FsIFN5bmNocm9uaXphdGlvbgorCTBhYSAgU2NyZWVuIE9yaWVudGF0aW9uCisJMGFjICBIb3Jpem9udGFsIEZyZXF1ZW5jeSBpbiBIegorCTBhZSAgVmVydGljYWwgRnJlcXVlbmN5IGluIDAuMSBIegorCTBiMCAgU2V0dGluZ3MKKwkwY2EgIE9uIFNjcmVlbiBEaXNwbGF5IChPU0QpCisJMGQ0ICBTdGVyZW8gTW9kZQorSFVUIDg0ICBQb3dlciBEZXZpY2UgUGFnZQorCTAwMCAgVW5kZWZpbmVkCisJMDAxICBpTmFtZQorCTAwMiAgUHJlc2VudCBTdGF0dXMKKwkwMDMgIENoYW5nZWQgU3RhdHVzCisJMDA0ICBVUFMKKwkwMDUgIFBvd2VyIFN1cHBseQorCTAxMCAgQmF0dGVyeSBTeXN0ZW0KKwkwMTEgIEJhdHRlcnkgU3lzdGVtIElECisJMDEyICBCYXR0ZXJ5CisJMDEzICBCYXR0ZXJ5IElECisJMDE0ICBDaGFyZ2VyCisJMDE1ICBDaGFyZ2VyIElECisJMDE2ICBQb3dlciBDb252ZXJ0ZXIKKwkwMTcgIFBvd2VyIENvbnZlcnRlciBJRAorCTAxOCAgT3V0bGV0IFN5c3RlbQorCTAxOSAgT3V0bGV0IFN5c3RlbSBJRAorCTAxYSAgSW5wdXQKKwkwMWIgIElucHV0IElECisJMDFjICBPdXRwdXQKKwkwMWQgIE91dHB1dCBJRAorCTAxZSAgRmxvdworCTAxZiAgRmxvdyBJRAorCTAyMCAgT3V0bGV0CisJMDIxICBPdXRsZXQgSUQKKwkwMjIgIEdhbmcKKwkwMjMgIEdhbmcgSUQKKwkwMjQgIFBvd2VyIFN1bW1hcnkKKwkwMjUgIFBvd2VyIFN1bW1hcnkgSUQKKwkwMzAgIFZvbHRhZ2UKKwkwMzEgIEN1cnJlbnQKKwkwMzIgIEZyZXF1ZW5jeQorCTAzMyAgQXBwYXJlbnQgUG93ZXIKKwkwMzQgIEFjdGl2ZSBQb3dlcgorCTAzNSAgUGVyY2VudCBMb2FkCisJMDM2ICBUZW1wZXJhdHVyZQorCTAzNyAgSHVtaWRpdHkKKwkwMzggIEJhZCBDb3VudAorCTA0MCAgQ29uZmlnIFZvbHRhZ2UKKwkwNDEgIENvbmZpZyBDdXJyZW50CisJMDQyICBDb25maWcgRnJlcXVlbmN5CisJMDQzICBDb25maWcgQXBwYXJlbnQgUG93ZXIKKwkwNDQgIENvbmZpZyBBY3RpdmUgUG93ZXIKKwkwNDUgIENvbmZpZyBQZXJjZW50IExvYWQKKwkwNDYgIENvbmZpZyBUZW1wZXJhdHVyZQorCTA0NyAgQ29uZmlnIEh1bWlkaXR5CisJMDUwICBTd2l0Y2ggT24gQ29udHJvbAorCTA1MSAgU3dpdGNoIE9mZiBDb250cm9sCisJMDUyICBUb2dnbGUgQ29udHJvbAorCTA1MyAgTG93IFZvbHRhZ2UgVHJhbnNmZXIKKwkwNTQgIEhpZ2ggVm9sdGFnZSBUcmFuc2ZlcgorCTA1NSAgRGVsYXkgQmVmb3JlIFJlYm9vdAorCTA1NiAgRGVsYXkgQmVmb3JlIFN0YXJ0dXAKKwkwNTcgIERlbGF5IEJlZm9yZSBTaHV0ZG93bgorCTA1OCAgVGVzdAorCTA1OSAgTW9kdWxlIFJlc2V0CisJMDVhICBBdWRpYmxlIEFsYXJtIENvbnRyb2wKKwkwNjAgIFByZXNlbnQKKwkwNjEgIEdvb2QKKwkwNjIgIEludGVybmFsIEZhaWx1cmUKKwkwNjMgIFZvbHRhZ2Ugb3V0IG9mIHJhbmdlCisJMDY0ICBGcmVxdWVuY3kgb3V0IG9mIHJhbmdlCisJMDY1ICBPdmVybG9hZAorCTA2NiAgT3ZlciBDaGFyZ2VkCisJMDY3ICBPdmVyIFRlbXBlcmF0dXJlCisJMDY4ICBTaHV0ZG93biBSZXF1ZXN0ZWQKKwkwNjkgIFNodXRkb3duICBJbW1pbmVudAorCTA2YSAgUmVzZXJ2ZWQKKwkwNmIgIFN3aXRjaCBPbi9PZmYKKwkwNmMgIFN3aXRjaGFibGUKKwkwNmQgIFVzZWQKKwkwNmUgIEJvb3N0CisJMDZmICBCdWNrCisJMDcwICBJbml0aWFsaXplZAorCTA3MSAgVGVzdGVkCisJMDcyICBBd2FpdGluZyBQb3dlcgorCTA3MyAgQ29tbXVuaWNhdGlvbiBMb3N0CisJMGZkICBpTWFudWZhY3R1cmVyCisJMGZlICBpUHJvZHVjdAorCTBmZiAgaVNlcmlhbE51bWJlcgorSFVUIDg1ICBCYXR0ZXJ5IFN5c3RlbSBQYWdlCisJMDAwICBVbmRlZmluZWQKKwkwMDEgIFNNQiBCYXR0ZXJ5IE1vZGUKKwkwMDIgIFNNQiBCYXR0ZXJ5IFN0YXR1cworCTAwMyAgU01CIEFsYXJtIFdhcm5pbmcKKwkwMDQgIFNNQiBDaGFyZ2VyIE1vZGUKKwkwMDUgIFNNQiBDaGFyZ2VyIFN0YXR1cworCTAwNiAgU01CIENoYXJnZXIgU3BlYyBJbmZvCisJMDA3ICBTTUIgU2VsZWN0b3IgU3RhdGUKKwkwMDggIFNNQiBTZWxlY3RvciBQcmVzZXRzCisJMDA5ICBTTUIgU2VsZWN0b3IgSW5mbworCTAxMCAgT3B0aW9uYWwgTWZnLiBGdW5jdGlvbiAxCisJMDExICBPcHRpb25hbCBNZmcuIEZ1bmN0aW9uIDIKKwkwMTIgIE9wdGlvbmFsIE1mZy4gRnVuY3Rpb24gMworCTAxMyAgT3B0aW9uYWwgTWZnLiBGdW5jdGlvbiA0CisJMDE0ICBPcHRpb25hbCBNZmcuIEZ1bmN0aW9uIDUKKwkwMTUgIENvbm5lY3Rpb24gdG8gU01CdXMKKwkwMTYgIE91dHB1dCBDb25uZWN0aW9uCisJMDE3ICBDaGFyZ2VyIENvbm5lY3Rpb24KKwkwMTggIEJhdHRlcnkgSW5zZXJ0aW9uCisJMDE5ICBVc2UgTmV4dAorCTAxYSAgT0sgdG8gdXNlCisJMDFiICBCYXR0ZXJ5ICBTdXBwb3J0ZWQKKwkwMWMgIFNlbGVjdG9yUmV2aXNpb24KKwkwMWQgIENoYXJnaW5nIEluZGljYXRvcgorCTAyOCAgTWFudWZhY3R1cmVyIEFjY2VzcworCTAyOSAgUmVtYWluaW5nIENhcGFjaXR5IExpbWl0CisJMDJhICBSZW1haW5pbmcgVGltZSBMaW1pdAorCTAyYiAgQXQgUmF0ZQorCTAyYyAgQ2FwYWNpdHkgTW9kZQorCTAyZCAgQnJvYWRjYXN0IFRvIENoYXJnZXIKKwkwMmUgIFByaW1hcnkgQmF0dGVyeQorCTAyZiAgQ2hhcmdlIENvbnRyb2xsZXIKKwkwNDAgIFRlcm1pbmF0ZSBDaGFyZ2UKKwkwNDEgIFRlcm1pbmF0ZSBEaXNjaGFyZ2UKKwkwNDIgIEJlbG93IFJlbWFpbmluZyBDYXBhY2l0eSBMaW1pdAorCTA0MyAgUmVtYWluaW5nIFRpbWUgTGltaXQgRXhwaXJlZAorCTA0NCAgQ2hhcmdpbmcKKwkwNDUgIERpc2NoYXJnaW5nCisJMDQ2ICBGdWxseSBDaGFyZ2VkCisJMDQ3ICBGdWxseSBEaXNjaGFyZ2VkCisJMDQ4ICBDb25kaXRpb25pbmcgRmxhZworCTA0OSAgQXQgUmF0ZSBPSworCTA0YSAgU01CIEVycm9yIENvZGUKKwkwNGIgIE5lZWQgUmVwbGFjZW1lbnQKKwkwNjAgIEF0IFJhdGUgVGltZSBUbyBGdWxsCisJMDYxICBBdCBSYXRlIFRpbWUgVG8gRW1wdHkKKwkwNjIgIEF2ZXJhZ2UgQ3VycmVudAorCTA2MyAgTWF4IEVycm9yCisJMDY0ICBSZWxhdGl2ZSBTdGF0ZSBPZiBDaGFyZ2UKKwkwNjUgIEFic29sdXRlIFN0YXRlIE9mIENoYXJnZQorCTA2NiAgUmVtYWluaW5nIENhcGFjaXR5CisJMDY3ICBGdWxsIENoYXJnZSBDYXBhY2l0eQorCTA2OCAgUnVuIFRpbWUgVG8gRW1wdHkKKwkwNjkgIEF2ZXJhZ2UgVGltZSBUbyBFbXB0eQorCTA2YSAgQXZlcmFnZSBUaW1lIFRvIEZ1bGwKKwkwNmIgIEN5Y2xlIENvdW50CisJMDgwICBCYXR0LiBQYWNrIE1vZGVsIExldmVsCisJMDgxICBJbnRlcm5hbCBDaGFyZ2UgQ29udHJvbGxlcgorCTA4MiAgUHJpbWFyeSBCYXR0ZXJ5IFN1cHBvcnQKKwkwODMgIERlc2lnbiBDYXBhY2l0eQorCTA4NCAgU3BlY2lmaWNhdGlvbiBJbmZvCisJMDg1ICBNYW51ZmFjdHVyZXIgRGF0ZQorCTA4NiAgU2VyaWFsIE51bWJlcgorCTA4NyAgaU1hbnVmYWN0dXJlck5hbWUKKwkwODggIGlEZXZpY2VOYW1lCisJMDg5ICBpRGV2aWNlQ2hlbWlzdHJ5CisJMDhhICBNYW51ZmFjdHVyZXIgRGF0YQorCTA4YiAgUmVjaGFyZ2VhYmxlCisJMDhjICBXYXJuaW5nIENhcGFjaXR5IExpbWl0CisJMDhkICBDYXBhY2l0eSBHcmFudWxhcml0eSAxCisJMDhlICBDYXBhY2l0eSBHcmFudWxhcml0eSAyCisJMDhmICBpT0VNSW5mb3JtYXRpb24KKwkwYzAgIEluaGliaXQgQ2hhcmdlCisJMGMxICBFbmFibGUgUG9sbGluZworCTBjMiAgUmVzZXQgVG8gWmVybworCTBkMCAgQUMgUHJlc2VudAorCTBkMSAgQmF0dGVyeSBQcmVzZW50CisJMGQyICBQb3dlciBGYWlsCisJMGQzICBBbGFybSBJbmhpYml0ZWQKKwkwZDQgIFRoZXJtaXN0b3IgVW5kZXIgUmFuZ2UKKwkwZDUgIFRoZXJtaXN0b3IgSG90CisJMGQ2ICBUaGVybWlzdG9yIENvbGQKKwkwZDcgIFRoZXJtaXN0b3IgT3ZlciBSYW5nZQorCTBkOCAgVm9sdGFnZSBPdXQgT2YgUmFuZ2UKKwkwZDkgIEN1cnJlbnQgT3V0IE9mIFJhbmdlCisJMGRhICBDdXJyZW50IE5vdCBSZWd1bGF0ZWQKKwkwZGIgIFZvbHRhZ2UgTm90IFJlZ3VsYXRlZAorCTBkYyAgTWFzdGVyIE1vZGUKKwkwZjAgIENoYXJnZXIgU2VsZWN0b3IgU3VwcG9ydAorCTBmMSAgQ2hhcmdlciBTcGVjCisJMGYyICBMZXZlbCAyCisJMGYzICBMZXZlbCAzCitIVVQgODYgIFBvd2VyIFBhZ2VzCitIVVQgODcgIFBvd2VyIFBhZ2VzCitIVVQgOGMgIEJhciBDb2RlIFNjYW5uZXIgUGFnZSAoUE9TKQorSFVUIDhkICBTY2FsZSBQYWdlIChQT1MpCitIVVQgOTAgIENhbWVyYSBDb250cm9sIFBhZ2UKK0hVVCA5MSAgQXJjYWRlIENvbnRyb2wgUGFnZQorSFVUIGYwICBDYXNoIERldmljZQorCTBmMSAgQ2FzaCBEcmF3ZXIKKwkwZjIgIENhc2ggRHJhd2VyIE51bWJlcgorCTBmMyAgQ2FzaCBEcmF3ZXIgU2V0CisJMGY0ICBDYXNoIERyYXdlciBTdGF0dXMKK0hVVCBmZiAgVmVuZG9yIFNwZWNpZmljCisKKyMgTGlzdCBvZiBMYW5ndWFnZXMKKworIyBTeW50YXg6CisjIEwgbGFuZ3VhZ2VfaWQgIGxhbmd1YWdlX25hbWUKKyMJZGlhbGVjdF9pZCAgZGlhbGVjdF9uYW1lCisKK0wgMDAwMSAgQXJhYmljCisJMDEgIFNhdWRpIEFyYWJpYQorCTAyICBJcmFxCisJMDMgIEVneXB0CisJMDQgIExpYnlhCisJMDUgIEFsZ2VyaWEKKwkwNiAgTW9yb2NjbworCTA3ICBUdW5lc2lhCisJMDggIE9tYW4KKwkwOSAgWWVtZW4KKwkwYSAgU3lyaWEKKwkwYiAgSm9yZGFuCisJMGMgIExlYmFub24KKwkwZCAgS3V3YWl0CisJMGUgIFUuQS5FCisJMGYgIEJhaHJhaW4KKwkxMCAgUWF0YXIKK0wgMDAwMiAgQnVsZ2FyaWFuCitMIDAwMDMgIENhdGFsYW4KK0wgMDAwNCAgQ2hpbmVzZQorCTAxICBUcmFkaXRpb25hbAorCTAyICBTaW1wbGlmaWVkCisJMDMgIEhvbmdrb25nIFNBUiwgUFJDCisJMDQgIFNpbmdhcG9yZQorCTA1ICBNYWNhdSBTQVIKK0wgMDAwNSAgQ3plY2gKK0wgMDAwNiAgRGFuaXNoCitMIDAwMDcgIEdlcm1hbgorCTAxICBHZXJtYW4KKwkwMiAgU3dpc3MKKwkwMyAgQXVzdHJpYW4KKwkwNCAgTHV4ZW1ib3VyZworCTA1ICBMaWVjaHRlbnN0ZWluCitMIDAwMDggIEdyZWVrCitMIDAwMDkgIEVuZ2xpc2gKKwkwMSAgVVMKKwkwMiAgVUsKKwkwMyAgQXVzdHJhbGlhbgorCTA0ICBDYW5hZGlhbgorCTA1ICBOZXcgWmVhbGFuZAorCTA2ICBJcmVsYW5kCisJMDcgIFNvdXRoIEFmcmljYQorCTA4ICBKYW1haWNhCisJMDkgIENhcnJpYmVhbgorCTBhICBCZWxpemUKKwkwYiAgVHJpbmlkYWQKKwkwYyAgWmltYmFid2UKKwkwZCAgUGhpbGlwcGluZXMKK0wgMDAwYSAgU3BhbmlzaAorCTAxICBDYXN0aWxpYW4KKwkwMiAgTWV4aWNhbgorCTAzICBNb2Rlcm4KKwkwNCAgR3VhdGVtYWxhCisJMDUgIENvc3RhIFJpY2EKKwkwNiAgUGFuYW1hCisJMDcgIERvbWluaWNhbiBSZXB1YmxpYworCTA4ICBWZW56dWVsYQorCTA5ICBDb2xvbWJpYQorCTBhICBQZXJ1CisJMGIgIEFyZ2VudGluYQorCTBjICBFY3VhZG9yCisJMGQgIENoaWxlCisJMGUgIFVydWd1YXkKKwkwZiAgUGFyYWd1YXkKKwkxMCAgQm9saXZpYQorCTExICBFbCBTYWx2YWRvcgorCTEyICBIb25kdXJhcworCTEzICBOaWNhcmFndWEKKwkxNCAgUHVlcnRvIFJpY28KK0wgMDAwYiAgRmlubmlzaAorTCAwMDBjICBGcmVuY2gKKwkwMSAgRnJlbmNoCisJMDIgIEJlbGdpYW4KKwkwMyAgQ2FuYWRpYW4KKwkwNCAgU3dpc3MKKwkwNSAgTHV4ZW1ib3VyZworCTA2ICBNb25hY28KK0wgMDAwZCAgSGVicmV3CitMIDAwMGUgIEh1bmdhcmlhbgorTCAwMDBmICBJZGVsYW5kaWMKK0wgMDAxMCAgSXRhbGlhbgorCTAxICBJdGFsaWFuCisJMDIgIFN3aXNzCitMIDAwMTEgIEphcGFuZXNlCitMIDAwMTIgIEtvcmVhbgorCTAxICBLb3JlYW4KK0wgMDAxMyAgRHV0Y2gKKwkwMSAgRHV0Y2gKKwkwMiAgQmVsZ2lhbgorTCAwMDE0ICBOb3J3ZWdpYW4KKwkwMSAgQm9rbWFsCisJMDIgIE55bm9yc2sKK0wgMDAxNSAgUG9saXNoCitMIDAwMTYJUG9ydHVndWVzZQorCTAxICBQb3J0dWd1ZXNlCisJMDIgIEJyYXppbGlhbgorTCAwMDE3ICBmb3Jnb3R0ZW4KK0wgMDAxOCAgUm9tYW5pYW4KK0wgMDAxOSAgUnVzc2lhbgorTCAwMDFhICBTZXJiaWFuCisJMDEgIENyb2F0aWFuCisJMDIgIExhdGluCisJMDMgIEN5cmlsbGljCitMIDAwMWIgIFNsb3ZhaworTCAwMDFjICBBbGJhbmlhbgorTCAwMDFkICBTd2VkaXNoCisJMDEgIFN3ZWRpc2gKKwkwMiAgRmlubGFuZAorTCAwMDFlICBUaGFpCitMIDAwMWYgIFR1cmtpc2gKK0wgMDAyMCAgVXJkdQorCTAxICBQYWtpc3RhbgorCTAyICBJbmRpYQorTCAwMDIxICBJbmRvbmVzaWFuCitMIDAwMjIgIFVrcmFpbmlhbgorTCAwMDIzICBCZWxhcnVzaWFuCitMIDAwMjQgIFNsb3ZlbmlhbgorTCAwMDI1ICBFc3RvbmlhbgorTCAwMDI2ICBMYXR2aWFuCitMIDAwMjcgIExpdGh1YW5pYW4KKwkwMSAgTGl0aHVhbmlhbgorTCAwMDI4ICBmb3Jnb3R0ZW4KK0wgMDAyOSAgRmFyc2kKK0wgMDAyYSAgVmlldG5hbWVzZQorTCAwMDJiICBBcm1lbmlhbgorTCAwMDJjICBBemVyaQorCTAxICBDeXJpbGxpYworCTAyICBMYXRpbgorTCAwMDJkICBCYXNxdWUKK0wgMDAyZSAgZm9yZ290dGVuCitMIDAwMmYgIE1hY2Vkb25pYW4KK0wgMDAzNiAgQWZyaWthYW5zCitMIDAwMzcgIEdlb3JnaWFuCitMIDAwMzggIEZhZXJvZXNlCitMIDAwMzkgIEhpbmRpCitMIDAwM2UgIE1hbGF5CisJMDEgIE1hbGF5c2lhCisJMDIgIEJydW5laSBEYXJhc3NhbGFtCitMIDAwM2YgIEthemFrCitMIDAwNDEgIEF3YWhpbGkKK0wgMDA0MyAgVXpiZWsKKwkwMSAgTGF0aW4KKwkwMiAgQ3lyaWxsaWMKK0wgMDA0NCAgVGF0YXIKK0wgMDA0NSAgQmVuZ2FsaQorTCAwMDQ2ICBQdW5qYWJpCitMIDAwNDcgIEd1amFyYXRpCitMIDAwNDggIE9yaXlhCitMIDAwNDkgIFRhbWlsCitMIDAwNGEgIFRlbHVndQorTCAwMDRiICBLYW5uYWRhCitMIDAwNGMgIE1hbGF5YWxhbQorTCAwMDRkICBBc3NhbWVzZQorTCAwMDRlICBNYXJhdGhpCitMIDAwNGYgIFNhbnNrcml0CitMIDAwNTcgIEtvbmthbmkKK0wgMDA1OCAgTWFuaXB1cmkKK0wgMDA1OSAgU2luZGhpCitMIDAwNjAgIEthc2htaXJpCisJMDIgIEluZGlhCitMIDAwNjEgIE5lcGFsaQorCTAyICBJbmRpYQorCisjIEhJRCBEZXNjcmlwdG9yIGJDb3VudHJ5Q29kZQorIyBISUQgU3BlY2lmaWNhdGlvbiAxLjExICgyMDAxLTA2LTI3KSBwYWdlIDIzCisjCisjIFN5bnRheDoKKyMgSENDIGNvdW50cnlfY29kZSBrZXltYXBfdHlwZQorCitIQ0MgMDAgIE5vdCBzdXBwb3J0ZWQKK0hDQyAwMSAgQXJhYmljCitIQ0MgMDIgIEJlbGdpYW4KK0hDQyAwMyAgQ2FuYWRpYW4tQmlsaW5ndWFsCitIQ0MgMDQgIENhbmFkaWFuLUZyZW5jaAorSENDIDA1ICBDemVjaCBSZXB1YmxpYworSENDIDA2ICBEYW5pc2gKK0hDQyAwNyAgRmlubmlzaAorSENDIDA4ICBGcmVuY2gKK0hDQyAwOSAgR2VybWFuCitIQ0MgMTAgIEdyZWVrCitIQ0MgMTEgIEhlYnJldworSENDIDEyICBIdW5nYXJ5CitIQ0MgMTMgIEludGVybmF0aW9uYWwgKElTTykKK0hDQyAxNCAgSXRhbGlhbgorSENDIDE1ICBKYXBhbiAoS2F0YWthbmEpCitIQ0MgMTYgIEtvcmVhbgorSENDIDE3ICBMYXRpbiBBbWVyaWNhbgorSENDIDE4ICBOZXRoZXJsYW5kcy9EdXRjaAorSENDIDE5ICBOb3J3ZWdpYW4KK0hDQyAyMCAgUGVyc2lhbiAoRmFyc2kpCitIQ0MgMjEgIFBvbGFuZAorSENDIDIyICBQb3J0dWd1ZXNlCitIQ0MgMjMgIFJ1c3NpYQorSENDIDI0ICBTbG92YWtpYQorSENDIDI1ICBTcGFuaXNoCitIQ0MgMjYgIFN3ZWRpc2gKK0hDQyAyNyAgU3dpc3MvRnJlbmNoCitIQ0MgMjggIFN3aXNzL0dlcm1hbgorSENDIDI5ICBTd2l0emVybGFuZAorSENDIDMwICBUYWl3YW4KK0hDQyAzMSAgVHVya2lzaC1RCitIQ0MgMzIgIFVLCitIQ0MgMzMgIFVTCitIQ0MgMzQgIFl1Z29zbGF2aWEKK0hDQyAzNSAgVHVya2lzaC1GCisKKyMgTGlzdCBvZiBWaWRlbyBDbGFzcyBUZXJtaW5hbCBUeXBlcworCisjIFN5bnRheDoKKyMgVlQgdGVybWluYWxfdHlwZSAgdGVybWluYWxfdHlwZV9uYW1lCisKK1ZUIDAxMDAgIFVTQiBWZW5kb3IgU3BlY2lmaWMKK1ZUIDAxMDEgIFVTQiBTdHJlYW1pbmcKK1ZUIDAyMDAgIElucHV0IFZlbmRvciBTcGVjaWZpYworVlQgMDIwMSAgQ2FtZXJhIFNlbnNvcgorVlQgMDIwMiAgU2VxdWVudGlhbCBNZWRpYQorVlQgMDMwMCAgT3V0cHV0IFZlbmRvciBTcGVjaWZpYworVlQgMDMwMSAgR2VuZXJpYyBEaXNwbGF5CitWVCAwMzAyICBTZXF1ZW50aWFsIE1lZGlhCitWVCAwNDAwICBFeHRlcm5hbCBWZW5kb3IgU3BlY2lmaWMKK1ZUIDA0MDEgIENvbXBvc2l0ZSBWaWRlbworVlQgMDQwMiAgUy1WaWRlbworVlQgMDQwMyAgQ29tcG9uZW50IFZpZGVvCmRpZmYgLS1naXQgYS91c2J1dGlscy0wLjg2L3VzYm1pc2MuYyBiL3VzYnV0aWxzLTAuODYvdXNibWlzYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMzUyODIKLS0tIC9kZXYvbnVsbAorKysgYi91c2J1dGlscy0wLjg2L3VzYm1pc2MuYwpAQCAtMCwwICsxLDE0MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqICAgICAgdXNibWlzYy5jICAtLSAgTWlzYyBVU0Igcm91dGluZXMKKyAqCisgKiAgICAgIENvcHlyaWdodCAoQykgMjAwMyAgQXVyZWxpZW4gSmFybm8gKGF1cmVsaWVuQGF1cmVsMzIubmV0KQorICoKKyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICAgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICAgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogICAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogICAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogICAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogICAgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqCisgKgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInVzYm1pc2MuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgY29uc3QgY2hhciAqZGV2YnVzdXNiID0gIi9kZXYvYnVzL3VzYiI7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGludCByZWFkbGlua19yZWN1cnNpdmUoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKK3sKKwljaGFyIHRlbXBbUEFUSF9NQVggKyAxXTsKKwljaGFyICpwdGVtcDsKKwlpbnQgcmV0OworCisJcmV0ID0gcmVhZGxpbmsocGF0aCwgYnVmLCBidWZzaXplKTsKKworCWlmIChyZXQgPiAwKSB7CisJCWJ1ZltyZXRdID0gMDsKKwkJaWYgKCpidWYgIT0gJy8nKQorCQl7CisJCQlzdHJuY3B5KHRlbXAsIHBhdGgsIHNpemVvZih0ZW1wKSk7CisJCQlwdGVtcCA9IHRlbXAgKyBzdHJsZW4odGVtcCk7CisJCQl3aGlsZSAoKnB0ZW1wICE9ICcvJyAmJiBwdGVtcCAhPSB0ZW1wKSBwdGVtcC0tOworCQkJcHRlbXArKzsKKwkJCXN0cm5jcHkocHRlbXAsIGJ1ZiwgYnVmc2l6ZSArIHRlbXAgLSBwdGVtcCk7CisJCX0KKwkJZWxzZQorCQkJc3RybmNweSh0ZW1wLCBidWYsIHNpemVvZih0ZW1wKSk7CisJCXJldHVybiByZWFkbGlua19yZWN1cnNpdmUodGVtcCwgYnVmLCBidWZzaXplKTsKKwl9CisJZWxzZSB7CisJCXN0cm5jcHkoYnVmLCBwYXRoLCBidWZzaXplKTsKKwkJcmV0dXJuIHN0cmxlbihidWYpOworCX0KK30KKworc3RhdGljIGNoYXIgKmdldF9hYnNvbHV0ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKnJlc3VsdCwgc2l6ZV90IHJlc3VsdF9zaXplKQoreworCWNvbnN0IGNoYXIgKnBwYXRoOwkvKiBwb2ludGVyIG9uIHRoZSBpbnB1dCBzdHJpbmcgKi8KKwljaGFyICpwcmVzdWx0OwkJLyogcG9pbnRlciBvbiB0aGUgb3V0cHV0IHN0cmluZyAqLworCisJcHBhdGggPSBwYXRoOworCXByZXN1bHQgPSByZXN1bHQ7CisJcmVzdWx0WzBdID0gMDsKKworCWlmIChwYXRoID09IE5VTEwpCisJCXJldHVybiByZXN1bHQ7CisKKwlpZiAoKnBwYXRoICE9ICcvJykgeworCQlyZXN1bHQgPSBnZXRjd2QocmVzdWx0LCByZXN1bHRfc2l6ZSk7CisJCXByZXN1bHQgKz0gc3RybGVuKHJlc3VsdCk7CisJCXJlc3VsdF9zaXplIC09IHN0cmxlbihyZXN1bHQpOworCisJCSpwcmVzdWx0KysgPSAnLyc7CisJCXJlc3VsdF9zaXplLS07CisJfQorCisJd2hpbGUgKCpwcGF0aCAhPSAwICYmIHJlc3VsdF9zaXplID4gMSkgeworCQlpZiAoKnBwYXRoID09ICcvJykgeworCQkJZG8gcHBhdGgrKzsgd2hpbGUgKCpwcGF0aCA9PSAnLycpOworCQkJKnByZXN1bHQrKyA9ICcvJzsKKwkJCXJlc3VsdF9zaXplLS07CisJCX0KKwkJZWxzZSBpZiAoKnBwYXRoID09ICcuJyAmJiAqKHBwYXRoICsgMSkgPT0gJy4nICYmICoocHBhdGggKyAyKSA9PSAnLycgJiYgKihwcmVzdWx0IC0gMSkgPT0gJy8nKSB7CisJCQlpZiAoKHByZXN1bHQgLSAxKSAhPSByZXN1bHQpCisJCQl7CisJCQkJLyogZ28gb25lIGRpcmVjdG9yeSB1cHBlciAqLworCQkJCWRvIHsKKwkJCQkJcHJlc3VsdC0tOworCQkJCQlyZXN1bHRfc2l6ZSsrOworCQkJCX0gd2hpbGUgKCoocHJlc3VsdCAtIDEpICE9ICcvJyk7CisJCQl9CisJCQlwcGF0aCArPSAzOworCQl9CisJCWVsc2UgaWYgKCpwcGF0aCA9PSAnLicgICYmICoocHBhdGggKyAxKSA9PSAnLycgJiYgKihwcmVzdWx0IC0gMSkgPT0gJy8nKSB7CisJCQlwcGF0aCArPSAyOworCQl9CisJICAgICAgICBlbHNlIHsKKwkJCSpwcmVzdWx0KysgPSAqcHBhdGgrKzsKKwkJCXJlc3VsdF9zaXplLS07CisJCX0KKwl9CisJLyogRG9uJ3QgZm9yZ2V0IHRvIG1hcmsgdGhlIGVuZCBvZiB0aGUgc3RyaW5nISAqLworCSpwcmVzdWx0ID0gMDsKKwkKKwlyZXR1cm4gcmVzdWx0OworfQkKKworc3RydWN0IHVzYl9kZXZpY2UgKmdldF91c2JfZGV2aWNlKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJc3RydWN0IHVzYl9idXMgKmJ1czsKKwlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2OworCWNoYXIgZGV2aWNlX3BhdGhbUEFUSF9NQVggKyAxXTsKKwljaGFyIGFic29sdXRlX3BhdGhbUEFUSF9NQVggKyAxXTsKKworCXJlYWRsaW5rX3JlY3Vyc2l2ZShwYXRoLCBkZXZpY2VfcGF0aCwgc2l6ZW9mKGRldmljZV9wYXRoKSk7CisJZ2V0X2Fic29sdXRlX3BhdGgoZGV2aWNlX3BhdGgsIGFic29sdXRlX3BhdGgsIHNpemVvZihhYnNvbHV0ZV9wYXRoKSk7CisJCisJZm9yIChidXMgPSB1c2JfYnVzc2VzOyBidXM7IGJ1cyA9IGJ1cy0+bmV4dCkgeworICAgICAgICAJZm9yIChkZXYgPSBidXMtPmRldmljZXM7IGRldjsgZGV2ID0gZGV2LT5uZXh0KSB7CisJCQlzbnByaW50ZihkZXZpY2VfcGF0aCwgc2l6ZW9mKGRldmljZV9wYXRoKSwgIiVzLyVzLyVzIiwgZGV2YnVzdXNiLCBidXMtPmRpcm5hbWUsIGRldi0+ZmlsZW5hbWUpOworCQkJaWYgKCFzdHJjbXAoZGV2aWNlX3BhdGgsIGFic29sdXRlX3BhdGgpKQorCQkJCXJldHVybiBkZXY7CisJCX0JCQkJCisgICAgICAgIH0JCQkKKwlyZXR1cm4gTlVMTDsKK30JCisKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLTAuODYvdXNibWlzYy5oIGIvdXNidXRpbHMtMC44Ni91c2JtaXNjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlkNDkyNgotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvdXNibWlzYy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiAgICAgIHVzYm1pc2MuaCAgLS0gIE1pc2MgVVNCIHJvdXRpbmVzCisgKgorICogICAgICBDb3B5cmlnaHQgKEMpIDIwMDMgIEF1cmVsaWVuIEphcm5vIChhdXJlbGllbkBhdXJlbDMyLm5ldCkKKyAqCisgKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICAgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICAgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogICAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICAgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKgorICoKKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1VTQk1JU0NfSAorI2RlZmluZSBfVVNCTUlTQ19ICisKKyNpbmNsdWRlIDx1c2IuaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitleHRlcm4gc3RydWN0IHVzYl9kZXZpY2UgKmdldF91c2JfZGV2aWNlKGNvbnN0IGNoYXIgKnBhdGgpOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZW5kaWYgLyogX1VTQk1JU0NfSCAqLwpkaWZmIC0tZ2l0IGEvdXNidXRpbHMtMC44Ni91c2J1dGlscy5wYy5pbiBiL3VzYnV0aWxzLTAuODYvdXNidXRpbHMucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU1YzM3YgotLS0gL2Rldi9udWxsCisrKyBiL3VzYnV0aWxzLTAuODYvdXNidXRpbHMucGMuaW4KQEAgLTAsMCArMSw1IEBACitOYW1lOiB1c2J1dGlscworRGVzY3JpcHRpb246IFVTQiBkZXZpY2UgZGF0YWJhc2UKK1ZlcnNpb246IEBWRVJTSU9OQAorCit1c2JpZHM9QHVzYmlkc0AKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLnRhci5neiBiL3VzYnV0aWxzLnRhci5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDYzMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMudGFyLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3VzYnV0aWxzLnVybCBiL3VzYnV0aWxzLnVybApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzAyZGMwCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMudXJsCkBAIC0wLDAgKzEgQEAKK2h0dHA6Ly9kb3dubG9hZC5zb3VyY2Vmb3JnZS5uZXQvbGludXgtdXNiL3VzYnV0aWxzL3VzYnV0aWxzLTAuODYudGFyLmd6CmRpZmYgLS1naXQgYS91c2J1dGlscy52ZXJzaW9uIGIvdXNidXRpbHMudmVyc2lvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTk4ODFlCi0tLSAvZGV2L251bGwKKysrIGIvdXNidXRpbHMudmVyc2lvbgpAQCAtMCwwICsxIEBACiswLjg2Cg==